diff options
Diffstat (limited to 'lldb/test/expression_command/timeout/wait-a-while.c')
-rw-r--r-- | lldb/test/expression_command/timeout/wait-a-while.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lldb/test/expression_command/timeout/wait-a-while.c b/lldb/test/expression_command/timeout/wait-a-while.c new file mode 100644 index 00000000000..f3475fc3ff2 --- /dev/null +++ b/lldb/test/expression_command/timeout/wait-a-while.c @@ -0,0 +1,41 @@ +#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; + +} |