Thread (2 messages) 2 messages, 2 authors, 2012-06-16

is a task_struct vfork_done completion special only for kthreads?

From: Mulyadi Santosa <hidden>
Date: 2012-06-16 03:08:35

Hi Rob...

On Thu, Jun 14, 2012 at 7:03 PM, Robert P. J. Day [off-list ref] 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help