diff options
Diffstat (limited to 'sysdeps/nptl/bits/thread-shared-types.h')
-rw-r--r-- | sysdeps/nptl/bits/thread-shared-types.h | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h deleted file mode 100644 index d95ac9ac13..0000000000 --- a/sysdeps/nptl/bits/thread-shared-types.h +++ /dev/null @@ -1,156 +0,0 @@ -/* Common threading primitives definitions for both POSIX and C11. - Copyright (C) 2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _THREAD_SHARED_TYPES_H -#define _THREAD_SHARED_TYPES_H 1 - -/* Arch-specific definitions. Each architecture must define the following - macros to define the expected sizes of pthread data types: - - __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. - __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. - __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. - __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. - __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. - __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. - __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. - __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. - __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. - - Also, the following macros must be define for internal pthread_mutex_t - struct definitions (struct __pthread_mutex_s): - - __PTHREAD_COMPAT_PADDING_MID - any additional members after 'kind' - and before '__spin' (for 64 bits) or - '__nusers' (for 32 bits). - __PTHREAD_COMPAT_PADDING_END - any additional members at the end of - the internal structure. - __PTHREAD_MUTEX_LOCK_ELISION - 1 if the architecture supports lock - elision or 0 otherwise. - - The additional macro defines any constraint for the lock alignment - inside the thread structures: - - __LOCK_ALIGNMENT - for internal lock/futex usage. - - Same idea but for the once locking primitive: - - __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. - - And finally the internal pthread_rwlock_t (struct __pthread_rwlock_arch_t) - must be defined. - */ -#include <bits/pthreadtypes-arch.h> - -/* Common definition of pthread_mutex_t. */ - -#if __WORDSIZE == 64 -typedef struct __pthread_internal_list -{ - struct __pthread_internal_list *__prev; - struct __pthread_internal_list *__next; -} __pthread_list_t; -#else -typedef struct __pthread_internal_slist -{ - struct __pthread_internal_slist *__next; -} __pthread_slist_t; -#endif - -/* Lock elision support. */ -#if __PTHREAD_MUTEX_LOCK_ELISION -# if __WORDSIZE == 64 -# define __PTHREAD_SPINS_DATA \ - short __spins; \ - short __elision; -# define __PTHREAD_SPINS 0, 0 -# else -# define __PTHREAD_SPINS_DATA \ - struct \ - { \ - short __espins; \ - short __eelision; \ - } __elision_data -# define __PTHREAD_SPINS { 0, 0 } -# define __spins __elision_data.__espins -# define __elision __elision_data.__eelision -# endif -#else -# define __PTHREAD_SPINS_DATA int __spins -/* Mutex __spins initializer used by PTHREAD_MUTEX_INITIALIZER. */ -# define __PTHREAD_SPINS 0 -#endif - -struct __pthread_mutex_s -{ - int __lock __LOCK_ALIGNMENT; - unsigned int __count; - int __owner; -#if __WORDSIZE == 64 - unsigned int __nusers; -#endif - /* KIND must stay at this position in the structure to maintain - binary compatibility with static initializers. */ - int __kind; - __PTHREAD_COMPAT_PADDING_MID; -#if __WORDSIZE == 64 - __PTHREAD_SPINS_DATA; - __pthread_list_t __list; -# define __PTHREAD_MUTEX_HAVE_PREV 1 -#else - unsigned int __nusers; - __extension__ union - { - __PTHREAD_SPINS_DATA; - __pthread_slist_t __list; - } -#endif - __PTHREAD_COMPAT_PADDING_END; -}; - - -/* Common definition of pthread_cond_t. */ - -struct __pthread_cond_s -{ - __extension__ union - { - __extension__ unsigned long long int __wseq; - struct - { - unsigned int __low; - unsigned int __high; - } __wseq32; - }; - __extension__ union - { - __extension__ unsigned long long int __g1_start; - struct - { - unsigned int __low; - unsigned int __high; - } __g1_start32; - }; - unsigned int __g_refs[2] __LOCK_ALIGNMENT; - unsigned int __g_size[2]; - unsigned int __g1_orig_size; - unsigned int __wrefs; - unsigned int __g_signals[2]; -}; - -#endif /* _THREAD_SHARED_TYPES_H */ |