17f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart/* Test program that triggers mutex reinitialization. */
27f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
37f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
47f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart#define _GNU_SOURCE
57f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
67f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart#include <assert.h>
77f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart#include <pthread.h>
87f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart#include <stdio.h>
97f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart#include <stdlib.h>
107f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
117f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
127f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bartint main(int argc, char** argv)
137f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart{
147f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_t m;
157f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_t attr;
167f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
177f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_init(&attr);
187f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
197f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_init(&m, &attr);
207f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_destroy(&attr);
217f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_lock(&m);
227f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_unlock(&m);
237f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
247f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_init(&attr);
257f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
267f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_init(&m, &attr);
277f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutexattr_destroy(&attr);
287f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_lock(&m);
297f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_unlock(&m);
307f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
317f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  pthread_mutex_destroy(&m);
327f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
337f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  fprintf(stderr, "Done.\n");
347f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart
357f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart  return 0;
367f08c73f29b0bd8f23c1fc6d1e88ab44e2352160bart}
37