Я пытаюсь пересечь дочерние объекты task_struct в ядре linux и получать информацию от детей. У меня возникли проблемы со всей информацией, поэтому давайте просто держим его за получение pid для простоты.traversing task_struct-> children in linux kernel
Это часть моего кода.
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 минут, поэтому попытка журнала разных вещей на самом деле не является вариантом.
Вы должны действительно изменить свой вопрос, чтобы опубликовать реальный образец кода, который демонстрирует проблему, а не реконструкцию. – caf