All pastes #1002008 Raw Edit

dbtid

public c v1 · immutable
#1002008 ·published 2008-04-29 18:20 UTC
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);	}}