list_for_each(list, ¤t->children) {
task = list_entry(list, struct task_struct, sibling);
/* task now points to one of current’s children */
}
根据这个答案:list_entry in Linux,list_entry()
宏将根据指定数据结构中提供的指针(在本例中为list
)的偏移量转换为指定的结构(在这种情况下,task_struct
)。但是,在上面的代码中,我认为list
是指向下一个task_struct
的指针,从头开始。为什么代码将list
从偏移sibling
转发回task_struct,这不是task_struct
的开头?或者,list
直接指向下一个sibling
的{{1}}成员?