Questions about process state manipulation

Amit Gupta gupta.v.amit at
Tue Sep 18 00:02:52 EDT 2012

Hi All,

I had a question about manipulating process state information in the kernel
and am curious about the right way to go about it.
(I'm just messing around with some stuff to try and understand the kernel
better). I had 2 questions:

1. I'm trying to create a process in the TASK_INTERRUPTIBLE state in the
kernel. Since do_fork() creates a process/task that is ready to be
scheduled, I was thinking what might be a good way to pull it off the
runqueue/stop its execution after do_fork() returns?

2.I'm curious if someone can explain the correct way to use the
 "set_task_state()" macro. Its implementation just seems to boil down to an
assignment to the appropriate member of the task_struct. The question I had
in mind was, what if the process is already running? Is it safe to do it?
Don't we need to acquire some sort of lock before we manipulate a
task_struct ?

3. I would also be interested to read the correct way to use task_lock()
that locks on alloc_lock field of the task_struct. What exactly is this
lock for and does acquiring it/or any other lock in the task_struct cause
the process to be remoted from the runqueue?

Would appreciate any pointers to appropriate code/reading or any
Amit Gupta
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Kernelnewbies mailing list