| /* Test of <pthread.h> substitute. |
| Copyright (C) 2019-2020 Free Software Foundation, Inc. |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <https://www.gnu.org/licenses/>. */ |
| |
| /* Written by Bruno Haible <bruno@clisp.org>, 2019. */ |
| |
| #include <config.h> |
| |
| #include <pthread.h> |
| |
| #include "verify.h" |
| |
| /* Check that the types are all defined. */ |
| |
| pthread_t t1; |
| pthread_attr_t t2; |
| |
| pthread_once_t t3 = PTHREAD_ONCE_INIT; |
| |
| pthread_mutex_t t4 = PTHREAD_MUTEX_INITIALIZER; |
| pthread_mutexattr_t t5; |
| |
| pthread_rwlock_t t6 = PTHREAD_RWLOCK_INITIALIZER; |
| pthread_rwlockattr_t t7; |
| |
| pthread_cond_t t8 = PTHREAD_COND_INITIALIZER; |
| pthread_condattr_t t9; |
| |
| pthread_key_t t10; |
| |
| pthread_spinlock_t t11; |
| |
| #ifdef TODO /* Not implemented in gnulib yet */ |
| pthread_barrier_t t12; |
| pthread_barrierattr_t t13; |
| #endif |
| |
| /* Check that the various macros are defined. */ |
| |
| /* Constants for pthread_attr_setdetachstate(). */ |
| int ds[] = { PTHREAD_CREATE_JOINABLE, PTHREAD_CREATE_DETACHED }; |
| |
| /* Constants for pthread_exit(). */ |
| void *canceled = PTHREAD_CANCELED; |
| |
| /* Constants for pthread_mutexattr_settype(). */ |
| int mt[] = { |
| PTHREAD_MUTEX_DEFAULT, |
| PTHREAD_MUTEX_NORMAL, |
| PTHREAD_MUTEX_RECURSIVE, |
| PTHREAD_MUTEX_ERRORCHECK |
| }; |
| |
| #ifdef TODO /* Not implemented in gnulib yet */ |
| |
| /* Constants for pthread_mutexattr_setrobust(). */ |
| int mr[] = { PTHREAD_MUTEX_ROBUST, PTHREAD_MUTEX_STALLED }; |
| |
| /* Constants for pthread_barrierattr_setpshared(). */ |
| int bp[] = { PTHREAD_PROCESS_SHARED, PTHREAD_PROCESS_PRIVATE }; |
| |
| /* Constants for pthread_barrier_wait(). */ |
| int bw[] = { PTHREAD_BARRIER_SERIAL_THREAD }; |
| |
| /* Constants for pthread_setcancelstate(). */ |
| int cs[] = { PTHREAD_CANCEL_ENABLE, PTHREAD_CANCEL_DISABLE }; |
| |
| /* Constants for pthread_setcanceltype(). */ |
| int ct[] = { PTHREAD_CANCEL_DEFERRED, PTHREAD_CANCEL_ASYNCHRONOUS }; |
| |
| #endif |
| |
| |
| int |
| main (void) |
| { |
| return 0; |
| } |