|
@@ -2666,13 +2666,20 @@ unsigned long nr_running(void)
|
|
|
|
|
|
/*
|
|
|
* Check if only the current task is running on the cpu.
|
|
|
+ *
|
|
|
+ * Caution: this function does not check that the caller has disabled
|
|
|
+ * preemption, thus the result might have a time-of-check-to-time-of-use
|
|
|
+ * race. The caller is responsible to use it correctly, for example:
|
|
|
+ *
|
|
|
+ * - from a non-preemptable section (of course)
|
|
|
+ *
|
|
|
+ * - from a thread that is bound to a single CPU
|
|
|
+ *
|
|
|
+ * - in a loop with very short iterations (e.g. a polling loop)
|
|
|
*/
|
|
|
bool single_task_running(void)
|
|
|
{
|
|
|
- if (cpu_rq(smp_processor_id())->nr_running == 1)
|
|
|
- return true;
|
|
|
- else
|
|
|
- return false;
|
|
|
+ return raw_rq()->nr_running == 1;
|
|
|
}
|
|
|
EXPORT_SYMBOL(single_task_running);
|
|
|
|