forked from OSchip/llvm-project
42 lines
811 B
C
42 lines
811 B
C
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <sys/time.h>
|
|
#include <stdint.h>
|
|
|
|
int
|
|
wait_a_while (useconds_t interval)
|
|
{
|
|
int num_times = 0;
|
|
int return_value = 1;
|
|
|
|
struct timeval start_time;
|
|
gettimeofday(&start_time, NULL);
|
|
uint64_t target = start_time.tv_sec * 1000000 + start_time.tv_usec + interval;
|
|
|
|
while (1)
|
|
{
|
|
num_times++;
|
|
return_value = usleep (interval);
|
|
if (return_value != 0)
|
|
{
|
|
struct timeval now;
|
|
gettimeofday(&now, NULL);
|
|
interval = target - (now.tv_sec * 1000000 + now.tv_usec);
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
return num_times;
|
|
}
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
printf ("stop here in main.\n");
|
|
int num_times = wait_a_while (argc * 1000);
|
|
printf ("Done, took %d times.\n", num_times);
|
|
|
|
return 0;
|
|
|
|
}
|