Back to index

glibc  2.9
Functions
nanosleep.c File Reference
#include <errno.h>
#include <mach.h>
#include <sys/time.h>
#include <unistd.h>

Go to the source code of this file.

Functions

int __nanosleep (const struct timespec *requested_time, struct timespec *remaining)

Function Documentation

int __nanosleep ( const struct timespec requested_time,
struct timespec remaining 
)

Definition at line 26 of file nanosleep.c.

{
  mach_port_t recv;
  struct timeval before, after;
  const mach_msg_timeout_t ms
    = requested_time->tv_sec * 1000
    + (requested_time->tv_nsec + 999999) / 1000000;

  recv = __mach_reply_port ();

  if (remaining && __gettimeofday (&before, NULL) < 0)
    return -1;
  (void) __mach_msg (NULL, MACH_RCV_MSG|MACH_RCV_TIMEOUT|MACH_RCV_INTERRUPT,
                   0, 0, recv, ms, MACH_PORT_NULL);
  __mach_port_destroy (mach_task_self (), recv);
  if (remaining && __gettimeofday (&after, NULL) < 0)
    return -1;

  if (remaining)
    {
      timersub (&after, &before, &after);
      TIMEVAL_TO_TIMESPEC (&after, remaining);
    }

  return 0;
}

Here is the call graph for this function: