set_current_state() use in loops confusion

Nicholas Mc Guire der.herr at hofr.at
Sun Jun 7 12:37:48 EDT 2015


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 ?

thx!
hofrat



More information about the Kernelnewbies mailing list