On 11/11/2010 01:13 AM, Pádraig Brady wrote:
> On 11/11/10 07:21, Michal Svoboda wrote:
>> Pádraig Brady wrote:
>>>> m...@ita1bbx40,d1r17733u07 | strace -e nanosleep sleep 9999999999
>>>> nanosleep({9999999999, 0}, NULL) = 0
>>
>> Just out of curiosity, what's wrong with nanosleep({9999999999, 0} ?
>>
>> The first argument should be time_t, which should not be prone to
>> something stupid like overflowing at 2 (or 4) billion or so.
>
> Nothing is wrong with it, except that it trips
> up that old 64 bit linux kernel.To be more precise - that kernel has a bug with nanosleep(-1,NULL). So we replace it with a working nanosleep. However, Windows machines have a bug with nanosleep(60*60*24*50,NULL), so we replace nanosleep on that platform as well. It's easier to have a single nanosleep replacement for both platforms; therefore, our nanosleep replacement repeatedly rolls over every 49 days, due to the worst case system we are replacing, even if the Linux replacement could go the full 9999999999 seconds without overflow. -- Eric Blake [email protected] +1-801-349-2682 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
