On Mon, 3 Oct 2011, Regid Ichira wrote:

 I am not sure I understood:
1. Are you saying that usleep is already defined in terms of nanosleep?
        Most likely, yes.
  Where?
        Standard library

2. Are you suggesting to keep the current code, and use something like
In any case, I think that using nanosleep directly, without any intermediate 
functions, is more readable.

    If calling nanosleep was actually just a matter of nanosleep(time),
    I would agree.  However, it is actually a matter of

    struct timespec delay = {0, 250e6}; nanosleep(&delay, NULL);

    Which is rather wordy, and doesn't include checking for interruption
    be signal (if sleeping the full amount is important).

    int u_sleep(long time) {
      struct timespec delay = {time/1000000, (time%1000000) * 1000};
      return nanosleep(&delay, NULL);
      /* FIXME: We should sleep remaining delay if interrupted by signal
         to fully emulate usleep.
         Otherwise, should we return remaining time in microseconds?
         FIXME: For UPS driver purposes, millisecond precision would be more
         convenient.  Perhaps this should be millisleep.
       */
    }

--
              Stuart D. Gathman <[email protected]>
    Business Management Systems Inc.  Phone: 703 591-0911 Fax: 703 591-6154
"Confutatis maledictis, flammis acribus addictis" - background song for
a Microsoft sponsored "Where do you want to go from here?" commercial.

_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/nut-upsdev

Reply via email to