1 /* Test of <pthread.h> substitute.
2    Copyright (C) 2019-2021 Free Software Foundation, Inc.
3 
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 3 of the License, or
7    (at your option) any later version.
8 
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
16 
17 /* Written by Bruno Haible <bruno@clisp.org>, 2019.  */
18 
19 #include <config.h>
20 
21 #include <pthread.h>
22 
23 #include "verify.h"
24 
25 /* Check that the types are all defined.  */
26 
27 pthread_t t1;
28 pthread_attr_t t2;
29 
30 pthread_once_t t3 = PTHREAD_ONCE_INIT;
31 
32 pthread_mutex_t t4 = PTHREAD_MUTEX_INITIALIZER;
33 pthread_mutexattr_t t5;
34 
35 pthread_rwlock_t t6 = PTHREAD_RWLOCK_INITIALIZER;
36 pthread_rwlockattr_t t7;
37 
38 pthread_cond_t t8 = PTHREAD_COND_INITIALIZER;
39 pthread_condattr_t t9;
40 
41 pthread_key_t t10;
42 
43 pthread_spinlock_t t11;
44 
45 #ifdef TODO /* Not implemented in gnulib yet */
46 pthread_barrier_t t12;
47 pthread_barrierattr_t t13;
48 #endif
49 
50 /* Check that the various macros are defined.  */
51 
52 /* Constants for pthread_attr_setdetachstate().  */
53 int ds[] = { PTHREAD_CREATE_JOINABLE, PTHREAD_CREATE_DETACHED };
54 
55 /* Constants for pthread_exit().  */
56 void *canceled = PTHREAD_CANCELED;
57 
58 /* Constants for pthread_mutexattr_settype().  */
59 int mt[] = {
60   PTHREAD_MUTEX_DEFAULT,
61   PTHREAD_MUTEX_NORMAL,
62   PTHREAD_MUTEX_RECURSIVE,
63   PTHREAD_MUTEX_ERRORCHECK
64 };
65 
66 #ifdef TODO /* Not implemented in gnulib yet */
67 
68 /* Constants for pthread_mutexattr_setrobust().  */
69 int mr[] = { PTHREAD_MUTEX_ROBUST, PTHREAD_MUTEX_STALLED };
70 
71 /* Constants for pthread_barrierattr_setpshared().  */
72 int bp[] = { PTHREAD_PROCESS_SHARED, PTHREAD_PROCESS_PRIVATE };
73 
74 /* Constants for pthread_barrier_wait().  */
75 int bw[] = { PTHREAD_BARRIER_SERIAL_THREAD };
76 
77 /* Constants for pthread_setcancelstate().  */
78 int cs[] = { PTHREAD_CANCEL_ENABLE, PTHREAD_CANCEL_DISABLE };
79 
80 /* Constants for pthread_setcanceltype().  */
81 int ct[] = { PTHREAD_CANCEL_DEFERRED, PTHREAD_CANCEL_ASYNCHRONOUS };
82 
83 #endif
84 
85 
86 int
main(void)87 main (void)
88 {
89   return 0;
90 }
91