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 ...