Noyau: comment itérer les enfants du processus en cours?

Dans Linux Kernel Development, 3ème édition, ce code était donné pour traverser les enfants du processus actuel.

list_for_each(list, &current->children) { task = list_entry(list, struct task_struct, sibling); /* task now points to one of current's children */ } 

Le “frère” dans cet idiome semble hors de propos. Quel est son but?

sibling est le nom de la structure list_head structure struct task_struct qui correspond à la liste des enfants du parent.

C’est-à-dire que, dans cette boucle, la list pointe toujours vers un membre sibling d’une struct task_struct , ou le membre children du parent.

sibling est un champ dans la task_struct .

Voici comment j’ai compris ceci:

Les listes pointent toujours vers un membre sibling ,

1) Lorsque nous parcourons la liste des children , nous sibling membres sibling des enfants de la tâche en cours

2) La liste des sibling itérative fera traverser les membres sibling des enfants du parent (ou frères et sœurs de la tâche en cours)

L’ajout d’un membre sibling à la liste des parents garantit que 2 listes – les children du parent et la liste des sibling la tâche actuelle – sont mises à jour avec le même membre.