Move ros/vmx.h to an arch-specific location (XCC)
[akaros.git] / tests / futex_timeout.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <parlib/parlib.h>
4 #include <parlib/vcore.h>
5 #include <futex.h>
6 #include <pthread.h>
7
8 #define NUM_THREADS 10
9 pthread_t thandlers[NUM_THREADS];
10
11 void *handler(void *arg) {
12         int id = pthread_self()->id;
13         int var = 0;
14     struct timespec timeout = {
15                 .tv_sec = id,
16                 .tv_nsec = 0
17         };
18         printf("Begin thread: %d\n", id);
19     futex(&var, FUTEX_WAIT, 0, &timeout, NULL, 0);
20         printf("End thread: %d\n", id);
21 }
22
23 int main(int argc, char **argv)
24 {
25         for (int i=0; i<NUM_THREADS; i++) {
26                 pthread_create(&thandlers[i], NULL, &handler, NULL);
27         }
28         for (int i=0; i<NUM_THREADS; i++) {
29                 pthread_join(thandlers[i], NULL);
30         }
31         return 0;
32 }