On Sun, 07 Jun 2015, Nicholas Mc Guire wrote: > > Hi ! > > Noticed that in a number of cases - often while(!kthread_should_stop()){ loops > the call to set_current_state(...) is inside the loop - but e.g. in the below > case why would that be needed ? schedule() is not changing the state visibly > for the loop - so what is the point of setting the state inside the loop ? > > e.g. net/core/pktgen.c > /* Wait for kthread_stop */ > while (!kthread_should_stop()) { > set_current_state(TASK_INTERRUPTIBLE); > schedule(); > } > > from code review it seems to be that this would be equivalent > > set_current_state(TASK_INTERRUPTIBLE); > while (!kthread_should_stop()) { > schedule(); > } > > what did I miss ? > rereading __schedule() - state after schedule() is always TASK_RUNNING - so setting it back to !=TASK_RUNNING would be needed in the loop - but in the above case I still don't get the point of flipping the task state between TASK_INTERRUPTIBLE and TASK_RUNNING the set_current_state(TASK_INTERRUPTIBLE); seems to have no real effect as at the end of the loop state is TASK_RUNNING in any case and ntermediately it is in TASK_RUNNING state as well ? so I still seem to be missing something here... thx! hofrat _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies