summaryrefslogtreecommitdiff
path: root/.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h
diff options
context:
space:
mode:
authornil <niljo@airmail.cc>2025-01-14 20:16:17 +0100
committernil <niljo@airmail.cc>2025-01-14 20:16:17 +0100
commit9cd3e10283ea0c6cc997afc5353c0f314b3aa092 (patch)
tree4aa0ae912633a0f3e7a7d1405469bb7009cef1ba /.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h
parent23a62d70129db30027ba620fc798a666c198ba35 (diff)
changing host repositorymain
Diffstat (limited to '.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h')
-rwxr-xr-x.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h b/.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h
new file mode 100755
index 0000000..df54eef
--- /dev/null
+++ b/.ccls-cache/@@home@niliara@configs/@usr@include@bits@thread-shared-types.h
@@ -0,0 +1,115 @@
+/* Common threading primitives definitions for both POSIX and C11.
+ Copyright (C) 2017-2024 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
+ <https://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.
+
+ 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. */
+
+#include <bits/pthreadtypes-arch.h>
+
+#include <bits/atomic_wide_counter.h>
+
+
+/* Common definition of pthread_mutex_t. */
+
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+
+typedef struct __pthread_internal_slist
+{
+ struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+
+/* Arch-specific mutex definitions. A generic implementation is provided
+ by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
+ can override it by defining:
+
+ 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
+ definition). It should contains at least the internal members
+ defined in the generic version.
+
+ 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
+ atomic operations.
+
+ 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
+ It should initialize the mutex internal flag. */
+
+#include <bits/struct_mutex.h>
+
+/* Arch-sepecific read-write lock definitions. A generic implementation is
+ provided by struct_rwlock.h. If required, an architecture can override it
+ by defining:
+
+ 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
+ It should contain at least the internal members defined in the
+ generic version.
+
+ 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
+ It should initialize the rwlock internal type. */
+
+#include <bits/struct_rwlock.h>
+
+
+/* Common definition of pthread_cond_t. */
+
+struct __pthread_cond_s
+{
+ __atomic_wide_counter __wseq;
+ __atomic_wide_counter __g1_start;
+ 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];
+};
+
+typedef unsigned int __tss_t;
+typedef unsigned long int __thrd_t;
+
+typedef struct
+{
+ int __data __ONCE_ALIGNMENT;
+} __once_flag;
+
+#define __ONCE_FLAG_INIT { 0 }
+
+#endif /* _THREAD_SHARED_TYPES_H */