Я пытаюсь просмотреть дочерние элементы task_struct в ядре linux и получить информацию от дочерних элементов. У меня проблемы со всей информацией, поэтому давайте для простоты оставим ее наготове.
Это релевантная часть моего кода.
struct list_head * p;
struct task_struct ts, *tsk;
pid_t tmp_pid;
INIT_LIST_HEAD(&ts.children);
current = tsk;
list_for_each(p, &(tsk->children)){
ts = *list_entry(p, struct task_struct, children);
tmp_pid = ts.pid;
printk("the pid is %d\n", tmp_pid);
}
Я думаю, что проблема с list_entry, но я не знаю, как это исправить, все примеры, которые я могу найти, кажутся так же.
Это должно распечатать все дочерние PID, вместо этого я всегда получаю одно и то же число -17 .... оно порядка 10 ^ 9 или 10 ^ 11.
Может кто-нибудь помочь мне здесь? компиляция занимает около 30 минут, так что пробовать журнал разных вещей на самом деле не вариант.