Home | History | Annotate | Download | only in tests
      1 
      2 #include <pthread.h>
      3 #include <stdio.h>
      4 #include <stdlib.h>
      5 
      6 /* Simple test program, has a race.  Parent and child both modify x
      7    with no locking. */
      8 
      9 int x = 0;
     10 
     11 void* child_fn ( void* arg )
     12 {
     13    /* Unprotected relative to parent */
     14    x++;
     15    return NULL;
     16 }
     17 
     18 int main ( void )
     19 {
     20    const struct timespec delay = { 0, 100 * 1000 * 1000 };
     21    pthread_t child;
     22    if (pthread_create(&child, NULL, child_fn, NULL)) {
     23       perror("pthread_create");
     24       exit(1);
     25    }
     26    nanosleep(&delay, 0);
     27    /* Unprotected relative to child */
     28    x++;
     29 
     30    if (pthread_join(child, NULL)) {
     31       perror("pthread join");
     32       exit(1);
     33    }
     34 
     35    return 0;
     36 }
     37