1 /* Test program that triggers mutex reinitialization. */
2 
3 
4 #define _GNU_SOURCE
5 
6 #include <assert.h>
7 #include <pthread.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 
11 
main(int argc,char ** argv)12 int main(int argc, char** argv)
13 {
14   pthread_mutex_t m;
15   pthread_mutexattr_t attr;
16 
17   pthread_mutexattr_init(&attr);
18   pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
19   pthread_mutex_init(&m, &attr);
20   pthread_mutexattr_destroy(&attr);
21   pthread_mutex_lock(&m);
22   pthread_mutex_unlock(&m);
23 
24   pthread_mutexattr_init(&attr);
25   pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
26   pthread_mutex_init(&m, &attr);
27   pthread_mutexattr_destroy(&attr);
28   pthread_mutex_lock(&m);
29   pthread_mutex_unlock(&m);
30 
31   pthread_mutex_destroy(&m);
32 
33   fprintf(stderr, "Done.\n");
34 
35   return 0;
36 }
37