Hi All,<div><br></div><div>I had a question about manipulating process state information in the kernel and am curious about the right way to go about it.</div><div>(I&#39;m just messing around with some stuff to try and understand the kernel better). I had 2 questions:</div>
<div><br></div><div>1. I&#39;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?</div>
<div><br></div><div>2.I&#39;m curious if someone can explain the correct way to use the  &quot;set_task_state()&quot; 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&#39;t we need to acquire some sort of lock before we manipulate a task_struct ?</div>
<div><br></div><div>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?</div>
<div><br></div><div><br></div><div>Would appreciate any pointers to appropriate code/reading or any explanation.</div><div>Thanks,</div><div>-- </div><div>Amit Gupta<br><br>
</div>