Imported Upstream version 3.8
[platform/upstream/diffutils.git] / gnulib-tests / test-pthread.c
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
87 main (void)
88 {
89   return 0;
90 }