2 /* Do simple things with a recursive mutex. */
4 /* Needed for older glibcs (2.3 and older, at least) who don't
5 otherwise "know" about pthread_rwlock_anything or about
6 PTHREAD_MUTEX_RECURSIVE (amongst things). */
14 void nearly_main ( void )
17 pthread_mutexattr_t attr
;
20 r
= pthread_mutexattr_init( &attr
);
22 r
= pthread_mutexattr_settype( &attr
, PTHREAD_MUTEX_RECURSIVE
);
24 r
= pthread_mutex_init( &mx1
, &attr
);
27 fprintf(stderr
, "before lock #1\n");
28 r
= pthread_mutex_lock( &mx1
); assert(r
== 0);
29 fprintf(stderr
, "before lock #2\n");
30 r
= pthread_mutex_lock( &mx1
); assert(r
== 0);
31 fprintf(stderr
, "before lock #3\n");
32 r
= pthread_mutex_lock( &mx1
); assert(r
== 0);
34 fprintf(stderr
, "before unlock #1\n");
35 r
= pthread_mutex_unlock( &mx1
); assert(r
== 0);
36 fprintf(stderr
, "before unlock #2\n");
37 r
= pthread_mutex_unlock( &mx1
); assert(r
== 0);
38 fprintf(stderr
, "before unlock #3\n");
39 r
= pthread_mutex_unlock( &mx1
); assert(r
== 0);
41 fprintf(stderr
, "before unlock #4\n");
42 r
= pthread_mutex_unlock( &mx1
); /* FAILS: assert(r == 0); */