The nanosleep system call

Linux provides a system call, nanosleep(2), that in theory can provide nanosecond-level granularity, that is, a sleep of a single nanosecond. (Well, in practice, the granularity will also depend on the resolution of the hardware timer chip on the board.) This is the prototype of this API:

#include <time.h>int nanosleep(const struct timespec *req, struct timespec *rem);

The system call has two parameters both are pointers to structure of data type struct timespec; this structure definition is as follows:

struct timespec {    time_t tv_sec; /* seconds */    long tv_nsec;  /* nanoseconds */};

Obviously, this allows you to specify the sleep time in seconds and nanoseconds; the first parameter req is the required time (s.ns ...

Get Hands-On System Programming with Linux now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.