我在linux内核2.6中编写了一个简单的LKM 遍历task_struct和的链表 操纵指针。像这样。
printk("original p->tasks.prev->next : %p\n", p->tasks.prev->next);
p->tasks.prev->next = p->tasks.next;
printk("manipulated p->tasks.prev->next : %p\n", p->tasks.prev->next);
printk("original p->tasks.next->prev : %p\n", p->tasks.next->prev);
p->tasks.next->prev = p->tasks.prev;
printk("manipulated p->tasks.next->prev : %p\n", p->tasks.next->prev);
但这对系统没有影响。 我知道进程列表(ps)使用/ proc文件系统。所以我知道这与内核中的实际task_struct链表无关。 但我认为linux调度程序会使用此列表。但似乎错了。
为什么即使我在内核中更改task_struct也没有效果? 何时此系统引用的链表?