Hello..... > From what I understand, list_for_each above will > iterate through one of the current processes child (if > there was one), then that childs child(if there is > one) and so on. Am I right in concluding this? This > means only the first iteration will find the current > processes child. No. The codes you read are simply iterating on all children of a certain task. So, if process A is forking process B,C and D, the snippets will iterate from B to D, but not the children of B, C or D :) > linux/kernel.h, task cannot point to the task_struct > of the child because list_entry subtracts the offset > of sibling member from the address of the children > member. This will subtract more than is necessary. So, > the first argument of list_entry should point to a > list head member with the same member name within the > struct. Otherwise it will not return the address of > the containing struct. Am I right in concluding this? I don't understand your question clearly, but I assume that you have doubt about whether is it correct to use "list" as first argument for list_entry(), am I correct? recall the fact that "list" is actually a pointer pointing to each node of current->children's linked list. "list" itself won't give any clue because it can be anything which is declared as list_head. that's why you need third argument, that is "sibling". Since "sibling" is the pointer which points to the parent's children, this is the one you need. In other word, "sibling" is the list_head you are looking for. For better insight why it works, see copy_process() on kernel/fork.c and pay attention when it calls SET_LINKS (see include/linux/sched.h). > From what I understand browsing through the kernel > source, the only way to iterate through a processes > children is by asking a child to iterate through its > siblings. Am I right? IIRC, that is another solution you can pick. regards Mulyadi -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/