is a task_struct vfork_done completion special only for kthreads?
Mulyadi Santosa
mulyadi.santosa at gmail.com
Fri Jun 15 23:08:35 EDT 2012
Hi Rob...
On Thu, Jun 14, 2012 at 7:03 PM, Robert P. J. Day <rpjday at crashcourse.ca> wrote:
>
> (what is probably the first in a plethora of silly questions as i
> dig into the ugly details of various kernel features. you've been
> warned.)
>
> clawing my way through the kernel code for kthreads and i notice the
> following. in kernel/kthread.c, we have:
>
> ===
>
> struct kthread {
> int should_stop;
> void *data;
> struct completion exited;
> };
>
> #define to_kthread(tsk) \
> container_of((tsk)->vfork_done, struct kthread, exited)
perhaps because somehow kernel thread in some ways are treated like
normal vfork()?
the way I see it is this:
kernel thread borrows previously running mm_struct. In this scope, if
somehow the real owner mm_struct is going to be destroyed, it must
wait for the borrower (kernel thread) to finish first. Maybe this is
where that vfork_done<-->exited correlation is used.
--
regards,
Mulyadi Santosa
Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
More information about the Kernelnewbies
mailing list