m********o 发帖数: 796 | 1 linux内核里遍历当前进程的子进程的一小段程序有点看不太明白
struct task_struct *task;
struct list_head *list;
/* 这里的 struct list_head 的定义是两个指向他自己的指针
* struct list_head
* {
* struct list_head *next, *prev;
* }; */
/* 下面的list_for_each宏定义
*list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list. */
#define list_for_each(pos, head)
for (pos = (head)->next; prefetch(pos->next), pos != (head); pos =
pos->next) */
/* 这里的children也是struct list_head children;*/
list_for_each(list, ¤t->children)
{
task = list_entry(list, struct task_struct, sibling);
/* task now points to one of current’s children */
}
哪位大大能解释一下list_for_each怎么工作的?list_for_each(list, ¤t->
children), 这里的list和children都是 struct list_head类型,按照list_for_each
定义,把children的next指针(单个指针)赋给list(包含两个指针)? | p*****w 发帖数: 429 | 2 有前提吗?circular list?
each
【在 m********o 的大作中提到】 : linux内核里遍历当前进程的子进程的一小段程序有点看不太明白 : struct task_struct *task; : struct list_head *list; : /* 这里的 struct list_head 的定义是两个指向他自己的指针 : * struct list_head : * { : * struct list_head *next, *prev; : * }; */ : /* 下面的list_for_each宏定义 : *list_for_each - iterate over a list
| m********o 发帖数: 796 | 3 恩,circular doubly linked list
【在 p*****w 的大作中提到】 : 有前提吗?circular list? : : each
|
|