Hi All,
Please look at the following code from the article Sleeping in the Kernel

http://www.linuxjournal.com/node/8144/print 

1  set_current_state(TASK_INTERRUPTIBLE);
2  spin_lock(&list_lock);
3  if(list_empty(&list_head)) {
4         spin_unlock(&list_lock);
5         schedule();
6         spin_lock(&list_lock);
7  }
8  set_current_state(TASK_RUNNING);
9
10 /* Rest of the code ... */
11 spin_unlock(&list_lock);


Is there any chance for the process getting scheduled out of the run-queue at 
Line# 2 (say the scheduler runs because of timer interrupt)??  If so, the 
process won't be scheduled again. Right?  If so, what is the best solution for 
preventing that?


Thanks,
Sudheer

Reply via email to