On Dec 16, 2010, at 7:16 AM, Frédéric Bohé wrote:

As a side note, beware that your implementation of usleep could lead to call Sleep(0) (immediate return) if n<1000. usleep is supposed to round
up the time spent depending on system activity and timers granularity.

Related: http://trac.networkupstools.org/projects/nut/changeset/2729

To fix the rounding, I would recommend adding a constant to the numerator:

timeout = (d_sec*1000) + (d_usec+999)/1000;

versus:

timeout = (d_sec*1000) + (d_usec/1000) + (((d_usec % 1000)!=0)?1:0);

The same could be applied to the usleep -> Sleep function. It saves an extra call to the mod function.

FWIW, I have mingw-w32api 3.3 here, and it does not have usleep in the headers (only Sleep).
_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev

Reply via email to