Re: [PATCH] More time clean up stuff.

Eric Piel (Eric.Piel@Bull.Net)
Tue, 10 Jun 2003 13:52:43 +0200


Riley Williams wrote:
>
> Hi George.
>
> I'm ignoring the rest of this - it makes sense to me, but I'm
> no expert in it. However, your last point is one I can comment
> about as I've dealt with it professionally many times.
>
> > clock_nanosleep is changed to round up to the next jiffie to
> > cover starting between jiffies.
>
> Isn't this a case of replacing one error with another, where
> one of the two errors is unavoidable?
>
> 1. In the old case, the sleep will on average be half a jiffie
> LESS than the requested period.
>
> 2. In the new case, the sleep will on average be half a jiffie
> MORE than the requested period.
>
> One or the other is unavoidable if a jiffie is the basic unit
> of time resolution of the system. However, the error is totally
> meaningless if we are asking to sleep for more than 15 jiffies.

The point is that the POSIX norm specifies the problem in a different
way:
"The suspension time may be longer than requested because the argument
value is rounded up to an integer multiple of the sleep resolution or
because of the scheduling of other activity by the system. But, except
for the case of being interrupted by a signal, the suspension time shall
not be less than the time specified by rqtp, as measured by the system
clock CLOCK_REALTIME."

Basicaly, this means the user must be assured that the sleep() will
ALWAYS return after the specified time. This patch corrects a bug wich
could happen nearly 50% of the time you called sleep()!

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