__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* Common threading primitives definitions for both POSIX and C11.
Copyright (C) 2017-2018 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.
__PTHREAD_MUTEX_NUSERS_AFTER_KIND - control where to put __nusers. The
preferred value for new architectures
is 0.
__PTHREAD_MUTEX_USE_UNION - control whether internal __spins and
__list will be place inside a union for
linuxthreads compatibility.
The preferred value for new architectures
is 0.
For a new port the preferred values for the required defines are:
#define __PTHREAD_COMPAT_PADDING_MID
#define __PTHREAD_COMPAT_PADDING_END
#define __PTHREAD_MUTEX_LOCK_ELISION 0
#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND 0
#define __PTHREAD_MUTEX_USE_UNION 0
__PTHREAD_MUTEX_LOCK_ELISION can be set to 1 if the hardware plans to
eventually support lock elision using transactional memory.
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 !__PTHREAD_MUTEX_USE_UNION
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 !__PTHREAD_MUTEX_USE_UNION
# 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 !__PTHREAD_MUTEX_NUSERS_AFTER_KIND
unsigned int __nusers;
#endif
/* KIND must stay at this position in the structure to maintain
binary compatibility with static initializers.
Concurrency notes:
The __kind of a mutex is initialized either by the static
PTHREAD_MUTEX_INITIALIZER or by a call to pthread_mutex_init.
After a mutex has been initialized, the __kind of a mutex is usually not
changed. BUT it can be set to -1 in pthread_mutex_destroy or elision can
be enabled. This is done concurrently in the pthread_mutex_*lock functions
by using the macro FORCE_ELISION. This macro is only defined for
architectures which supports lock elision.
For elision, there are the flags PTHREAD_MUTEX_ELISION_NP and
PTHREAD_MUTEX_NO_ELISION_NP which can be set in addition to the already set
type of a mutex.
Before a mutex is initialized, only PTHREAD_MUTEX_NO_ELISION_NP can be set
with pthread_mutexattr_settype.
After a mutex has been initialized, the functions pthread_mutex_*lock can
enable elision - if the mutex-type and the machine supports it - by setting
the flag PTHREAD_MUTEX_ELISION_NP. This is done concurrently. Afterwards
the lock / unlock functions are using specific elision code-paths. */
int __kind;
__PTHREAD_COMPAT_PADDING_MID
#if __PTHREAD_MUTEX_NUSERS_AFTER_KIND
unsigned int __nusers;
#endif
#if !__PTHREAD_MUTEX_USE_UNION
__PTHREAD_SPINS_DATA;
__pthread_list_t __list;
# define __PTHREAD_MUTEX_HAVE_PREV 1
#else
__extension__ union
{
__PTHREAD_SPINS_DATA;
__pthread_slist_t __list;
};
# define __PTHREAD_MUTEX_HAVE_PREV 0
#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 __glibc_unused___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 */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| types | Folder | 0755 |
|
|
| a.out.h | File | 268 B | 0644 |
|
| byteswap.h | File | 2.39 KB | 0644 |
|
| cmathcalls.h | File | 4.04 KB | 0644 |
|
| confname.h | File | 23.15 KB | 0644 |
|
| cpu-set.h | File | 4.41 KB | 0644 |
|
| dirent.h | File | 1.73 KB | 0644 |
|
| dlfcn.h | File | 2.46 KB | 0644 |
|
| elfclass.h | File | 426 B | 0644 |
|
| endian.h | File | 176 B | 0644 |
|
| environments.h | File | 3.7 KB | 0644 |
|
| epoll.h | File | 1.04 KB | 0644 |
|
| errno.h | File | 1.39 KB | 0644 |
|
| error.h | File | 2.62 KB | 0644 |
|
| eventfd.h | File | 1.1 KB | 0644 |
|
| fcntl-linux.h | File | 13.39 KB | 0644 |
|
| fcntl.h | File | 2.19 KB | 0644 |
|
| fcntl2.h | File | 5.44 KB | 0644 |
|
| fenv.h | File | 4.5 KB | 0644 |
|
| fenvinline.h | File | 190 B | 0644 |
|
| floatn-common.h | File | 9.54 KB | 0644 |
|
| floatn.h | File | 4.27 KB | 0644 |
|
| flt-eval-method.h | File | 1.19 KB | 0644 |
|
| fp-fast.h | File | 1.19 KB | 0644 |
|
| fp-logb.h | File | 1011 B | 0644 |
|
| getopt_core.h | File | 3.58 KB | 0644 |
|
| getopt_ext.h | File | 2.97 KB | 0644 |
|
| getopt_posix.h | File | 1.77 KB | 0644 |
|
| hwcap.h | File | 971 B | 0644 |
|
| in.h | File | 9.24 KB | 0644 |
|
| indirect-return.h | File | 1.55 KB | 0644 |
|
| initspin.h | File | 25 B | 0644 |
|
| inotify.h | File | 1.05 KB | 0644 |
|
| ioctl-types.h | File | 2.4 KB | 0644 |
|
| ioctls.h | File | 4.37 KB | 0644 |
|
| ipc.h | File | 2.02 KB | 0644 |
|
| ipctypes.h | File | 1.15 KB | 0644 |
|
| iscanonical.h | File | 2.42 KB | 0644 |
|
| libc-header-start.h | File | 2.55 KB | 0644 |
|
| libm-simd-decl-stubs.h | File | 2.93 KB | 0644 |
|
| link.h | File | 4.18 KB | 0644 |
|
| link_lavcurrent.h | File | 1.07 KB | 0644 |
|
| local_lim.h | File | 3.11 KB | 0644 |
|
| locale.h | File | 1.33 KB | 0644 |
|
| long-double.h | File | 923 B | 0644 |
|
| math-finite.h | File | 5.25 KB | 0644 |
|
| math-vector.h | File | 2.25 KB | 0644 |
|
| mathcalls-helper-functions.h | File | 1.72 KB | 0644 |
|
| mathcalls-narrow.h | File | 1.28 KB | 0644 |
|
| mathcalls.h | File | 12.79 KB | 0644 |
|
| mathdef.h | File | 890 B | 0644 |
|
| mathinline.h | File | 12.71 KB | 0644 |
|
| mman-linux.h | File | 4.78 KB | 0644 |
|
| mman-shared.h | File | 2.67 KB | 0644 |
|
| mman.h | File | 2.01 KB | 0644 |
|
| monetary-ldbl.h | File | 1.02 KB | 0644 |
|
| mqueue.h | File | 1.22 KB | 0644 |
|
| mqueue2.h | File | 2.1 KB | 0644 |
|
| msq.h | File | 2.58 KB | 0644 |
|
| netdb.h | File | 1.23 KB | 0644 |
|
| param.h | File | 1.4 KB | 0644 |
|
| poll.h | File | 2.03 KB | 0644 |
|
| poll2.h | File | 2.43 KB | 0644 |
|
| posix1_lim.h | File | 5.07 KB | 0644 |
|
| posix2_lim.h | File | 2.8 KB | 0644 |
|
| posix_opt.h | File | 5.63 KB | 0644 |
|
| printf-ldbl.h | File | 991 B | 0644 |
|
| pthreadtypes-arch.h | File | 3.21 KB | 0644 |
|
| pthreadtypes.h | File | 3 KB | 0644 |
|
| ptrace-shared.h | File | 2.83 KB | 0644 |
|
| resource.h | File | 6.15 KB | 0644 |
|
| sched.h | File | 3.66 KB | 0644 |
|
| select.h | File | 2.06 KB | 0644 |
|
| select2.h | File | 1.4 KB | 0644 |
|
| sem.h | File | 2.56 KB | 0644 |
|
| semaphore.h | File | 1.21 KB | 0644 |
|
| setjmp.h | File | 1.26 KB | 0644 |
|
| setjmp2.h | File | 1.66 KB | 0644 |
|
| shm.h | File | 3.51 KB | 0644 |
|
| sigaction.h | File | 2.87 KB | 0644 |
|
| sigcontext.h | File | 4.16 KB | 0644 |
|
| sigevent-consts.h | File | 1.44 KB | 0644 |
|
| siginfo-arch.h | File | 729 B | 0644 |
|
| siginfo-consts-arch.h | File | 204 B | 0644 |
|
| siginfo-consts.h | File | 5.83 KB | 0644 |
|
| signalfd.h | File | 1.04 KB | 0644 |
|
| signum-generic.h | File | 4.24 KB | 0644 |
|
| signum.h | File | 1.59 KB | 0644 |
|
| sigstack.h | File | 1.14 KB | 0644 |
|
| sigthread.h | File | 1.65 KB | 0644 |
|
| sockaddr.h | File | 1.48 KB | 0644 |
|
| socket.h | File | 15.2 KB | 0644 |
|
| socket2.h | File | 2.96 KB | 0644 |
|
| socket_type.h | File | 2.16 KB | 0644 |
|
| ss_flags.h | File | 1.16 KB | 0644 |
|
| stab.def | File | 8.83 KB | 0644 |
|
| stat.h | File | 7.44 KB | 0644 |
|
| statfs.h | File | 1.87 KB | 0644 |
|
| statvfs.h | File | 3.34 KB | 0644 |
|
| statx-generic.h | File | 2 KB | 0644 |
|
| statx.h | File | 1.37 KB | 0644 |
|
| stdint-intn.h | File | 1.01 KB | 0644 |
|
| stdint-uintn.h | File | 1.02 KB | 0644 |
|
| stdio-ldbl.h | File | 2.94 KB | 0644 |
|
| stdio.h | File | 5.46 KB | 0644 |
|
| stdio2.h | File | 12.25 KB | 0644 |
|
| stdio_lim.h | File | 1.18 KB | 0644 |
|
| stdlib-bsearch.h | File | 1.34 KB | 0644 |
|
| stdlib-float.h | File | 1.09 KB | 0644 |
|
| stdlib-ldbl.h | File | 1.34 KB | 0644 |
|
| stdlib.h | File | 4.95 KB | 0644 |
|
| string_fortified.h | File | 4.57 KB | 0644 |
|
| strings_fortified.h | File | 1.21 KB | 0644 |
|
| sys_errlist.h | File | 1.19 KB | 0644 |
|
| syscall.h | File | 44.59 KB | 0644 |
|
| sysctl.h | File | 898 B | 0644 |
|
| syslog-ldbl.h | File | 1.18 KB | 0644 |
|
| syslog-path.h | File | 1.04 KB | 0644 |
|
| syslog.h | File | 1.64 KB | 0644 |
|
| sysmacros.h | File | 2.88 KB | 0644 |
|
| termios.h | File | 5.24 KB | 0644 |
|
| thread-shared-types.h | File | 6.58 KB | 0644 |
|
| time.h | File | 2.93 KB | 0644 |
|
| timerfd.h | File | 1.08 KB | 0644 |
|
| timex.h | File | 4.49 KB | 0644 |
|
| types.h | File | 8.14 KB | 0644 |
|
| typesizes.h | File | 3.32 KB | 0644 |
|
| uintn-identity.h | File | 1.5 KB | 0644 |
|
| uio-ext.h | File | 1.88 KB | 0644 |
|
| uio_lim.h | File | 1.35 KB | 0644 |
|
| unistd.h | File | 10.56 KB | 0644 |
|
| utmp.h | File | 3.97 KB | 0644 |
|
| utmpx.h | File | 3.49 KB | 0644 |
|
| utsname.h | File | 1.18 KB | 0644 |
|
| waitflags.h | File | 1.66 KB | 0644 |
|
| waitstatus.h | File | 2.23 KB | 0644 |
|
| wchar-ldbl.h | File | 2.37 KB | 0644 |
|
| wchar.h | File | 1.86 KB | 0644 |
|
| wchar2.h | File | 17.79 KB | 0644 |
|
| wctype-wchar.h | File | 6.15 KB | 0644 |
|
| wordsize.h | File | 442 B | 0644 |
|
| xopen_lim.h | File | 3.77 KB | 0644 |
|