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
12int 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