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