rendered paste body#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <time.h>#include <sys/time.h>#include <sys/types.h>#include <pthread.h>#define NANOSECONDS_PER_SECOND 1000000000 /* one billion, 1e9 */long delta_nsec (struct timespec *cur, struct timespec *old){ long diff; printf ("cur: %ld %ld ", cur->tv_sec, cur->tv_nsec); printf ("old: %ld %ld ", old->tv_sec, old->tv_nsec); diff = (cur->tv_sec - old->tv_sec) * NANOSECONDS_PER_SECOND; if (cur->tv_nsec > old->tv_nsec) diff += cur->tv_nsec - old->tv_nsec; else diff += (NANOSECONDS_PER_SECOND + cur->tv_nsec) - old->tv_nsec; return diff;}int main (int argc, char *argv[]){ unsigned long usec = 10000; struct sched_param sched; int policy; if (pthread_getschedparam (pthread_self(), &policy, &sched) == 0) if (pthread_setschedparam (pthread_self(), SCHED_FIFO, &sched) == 0) printf ("Thread scheduling set to SCHED_FIFO\n"); else { perror ("setschedparam"); printf ("Could not set scheduling to SCHED_FIFO\n"); } else printf ("COuld not get scheduling parameters\n"); if (argc == 2) usec = strtoul (argv[1], NULL, 0); while (1) { long diff; struct timespec before, after; clock_gettime (CLOCK_MONOTONIC, &before); usleep (usec); clock_gettime (CLOCK_MONOTONIC, &after); diff = delta_nsec (&after, &before); printf ("diff: %ld nsec %ld msec\n", diff, diff/1000000); }}