История изменений
Исправление ziemin, (текущая версия) :
Хоть бы на исходник глянул:
http://lxr.free-electrons.com/source/fs/proc/generic.c?v=3.2
У тебя небось с неверным аргументом вызывается. Не находит такого девайса.
296 /*
297 * This function parses a name such as "tty/driver/serial", and
298 * returns the struct proc_dir_entry for "/proc/tty/driver", and
299 * returns "serial" in residual.
300 */
301 static int __xlate_proc_name(const char *name, struct proc_dir_entry **ret,
302 const char **residual)
303 {
304 const char *cp = name, *next;
305 struct proc_dir_entry *de;
306 unsigned int len;
307
308 de = *ret;
309 if (!de)
310 de = &proc_root;
311
312 while (1) {
313 next = strchr(cp, '/');
314 if (!next)
315 break;
316
317 len = next - cp;
318 for (de = de->subdir; de ; de = de->next) {
319 if (proc_match(len, cp, de))
320 break;
321 }
322 if (!de) {
323 WARN(1, "name '%s'\n", name);
324 return -ENOENT;
325 }
326 cp += len + 1;
327 }
328 *residual = cp;
329 *ret = de;
330 return 0;
331 }
Исходная версия ziemin, :
Хоть бы на исходник глянул:
http://lxr.free-electrons.com/source/fs/proc/generic.c?v=3.2
У тебя небось с неверным аргументом вызывается. С другой стороны зачем они проверяют в цикле, если уже проверили раньше и впаяли значение по-умолчанию?
296 /*
297 * This function parses a name such as "tty/driver/serial", and
298 * returns the struct proc_dir_entry for "/proc/tty/driver", and
299 * returns "serial" in residual.
300 */
301 static int __xlate_proc_name(const char *name, struct proc_dir_entry **ret,
302 const char **residual)
303 {
304 const char *cp = name, *next;
305 struct proc_dir_entry *de;
306 unsigned int len;
307
308 de = *ret;
309 if (!de)
310 de = &proc_root;
311
312 while (1) {
313 next = strchr(cp, '/');
314 if (!next)
315 break;
316
317 len = next - cp;
318 for (de = de->subdir; de ; de = de->next) {
319 if (proc_match(len, cp, de))
320 break;
321 }
322 if (!de) {
323 WARN(1, "name '%s'\n", name);
324 return -ENOENT;
325 }
326 cp += len + 1;
327 }
328 *residual = cp;
329 *ret = de;
330 return 0;
331 }