Re: select(0,NULL,NULL,NULL,&t1) used for delay

From: Christopher Friesen
Date: Thu Oct 06 2005 - 10:57:46 EST


Bernd Petrovitsch wrote:
On Thu, 2005-10-06 at 09:26 -0600, Christopher Friesen wrote:

And it's cooler to hack the kernel than to create and use a
portable_sleep() function and use it.

If there is a substantial codebase using select() for sleeping, then it makes sense to improve the efficiency of the kernel. Fix it in one place, make all the apps run better.

The select() man page explicitly mentions this usage;

"Some code calls select with all three sets empty, n zero, and a non-null timeout as a fairly portable way to sleep with subsecond
^^^^^^^^^
precision."
^^^^^^^^^

You do realize that "subsecond precision" is probably meant as
improvement to sleep(3) and surely not to nanosleep(2)?

select() allows for the selection of sleep time with microsecond precision. The mainline kernel can't sleep for that small an interval anyway, so there's not really any difference in sleep precision between the two.

As I mentioned earlier, select() actually sleeps more accurately than nanosleep() on many kernels. I haven't tested the most recent to see if this is still true though.

Chris
-
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/