Re: sched_yield() on 2.6.25

From: Helge Hafting
Date: Mon Jun 09 2008 - 05:04:27 EST


Jakub Jozwicki wrote:
From the man sched_yield:

A process can relinquish the processor voluntarily without blocking by
calling sched_yield(). The process will then be moved to the end of the queue for its static priority and a new process gets to run.

and also IEEE/Open Group:
http://www.opengroup.org/onlinepubs/000095399/functions/sched_yield.html

pthread_mutex_lock(&mutex);
th = pthread_self();
if (pthread_equal(th,last_th)) {
pthread_mutex_unlock(&mutex);
sched_yield();
continue;

Here with SCHED_OTHER sched_yield for the first 100-200 times does nothing.
Should the man be updated?
Having the man page mention the fact that that sched_yield() probably
won't do "what you intend" in the non-realtime cases is probably a good idea;
that way we get fewer application programmers who mistakenly think
that sched_yield can be used for their purposes. And then we'll have
less broken apps.

A pointer to info about what they might want to use instead is even better.

Helge Hafting

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/