Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* Declarations of internal pthread functions used by libc. Hurd version. |
---|---|
2 | Copyright (C) 2016-2022 Free Software Foundation, Inc. |
3 | This file is part of the GNU C Library. |
4 | |
5 | The GNU C Library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either |
8 | version 2.1 of the License, or (at your option) any later version. |
9 | |
10 | The GNU C Library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Lesser General Public License for more details. |
14 | |
15 | You should have received a copy of the GNU Lesser General Public |
16 | License along with the GNU C Library; if not, see |
17 | <https://www.gnu.org/licenses/>. */ |
18 | |
19 | #ifndef _PTHREADP_H |
20 | #define _PTHREADP_H 1 |
21 | |
22 | #define __PTHREAD_HTL |
23 | |
24 | #include <pthread.h> |
25 | #include <link.h> |
26 | |
27 | /* Attribute to indicate thread creation was issued from C11 thrd_create. */ |
28 | #define ATTR_C11_THREAD ((void*)(uintptr_t)-1) |
29 | |
30 | extern void __pthread_init_static_tls (struct link_map *) attribute_hidden; |
31 | |
32 | /* These represent the interface used by glibc itself. */ |
33 | |
34 | extern int __pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__attr); |
35 | extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex); |
36 | extern int __pthread_mutex_lock (pthread_mutex_t *__mutex); |
37 | extern int __pthread_mutex_trylock (pthread_mutex_t *_mutex); |
38 | extern int __pthread_mutex_timedlock (pthread_mutex_t *__mutex, |
39 | const struct timespec *__abstime); |
40 | extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex); |
41 | extern int __pthread_mutexattr_init (pthread_mutexattr_t *attr); |
42 | extern int __pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind); |
43 | |
44 | extern int __pthread_cond_init (pthread_cond_t *cond, |
45 | const pthread_condattr_t *cond_attr); |
46 | extern int __pthread_cond_signal (pthread_cond_t *cond); |
47 | extern int __pthread_cond_broadcast (pthread_cond_t *cond); |
48 | extern int __pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex); |
49 | extern int __pthread_cond_timedwait (pthread_cond_t *cond, |
50 | pthread_mutex_t *mutex, |
51 | const struct timespec *abstime); |
52 | extern int __pthread_cond_clockwait (pthread_cond_t *cond, |
53 | pthread_mutex_t *mutex, |
54 | clockid_t clockid, |
55 | const struct timespec *abstime) |
56 | __nonnull ((1, 2, 4)); |
57 | extern int __pthread_cond_destroy (pthread_cond_t *cond); |
58 | |
59 | typedef struct __cthread *__cthread_t; |
60 | typedef int __cthread_key_t; |
61 | typedef void * (*__cthread_fn_t)(void *__arg); |
62 | |
63 | __cthread_t __cthread_fork (__cthread_fn_t, void *); |
64 | int __pthread_create (pthread_t *newthread, |
65 | const pthread_attr_t *attr, |
66 | void *(*start_routine) (void *), void *arg); |
67 | |
68 | void __cthread_detach (__cthread_t); |
69 | int __pthread_detach (pthread_t __threadp); |
70 | void __pthread_exit (void *value) __attribute__ ((__noreturn__)); |
71 | int __pthread_join (pthread_t, void **); |
72 | int __cthread_keycreate (__cthread_key_t *); |
73 | int __cthread_getspecific (__cthread_key_t, void **); |
74 | int __cthread_setspecific (__cthread_key_t, void *); |
75 | int __pthread_key_create (pthread_key_t *key, void (*destr) (void *)); |
76 | void *__pthread_getspecific (pthread_key_t key); |
77 | int __pthread_setspecific (pthread_key_t key, const void *value); |
78 | int __pthread_key_delete (pthread_key_t key); |
79 | int __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)); |
80 | |
81 | int __pthread_setcancelstate (int state, int *oldstate); |
82 | |
83 | int __pthread_getattr_np (pthread_t, pthread_attr_t *); |
84 | int __pthread_attr_getstackaddr (const pthread_attr_t *__restrict __attr, |
85 | void **__restrict __stackaddr); |
86 | int __pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr); |
87 | int __pthread_attr_getstacksize (const pthread_attr_t *__restrict __attr, |
88 | size_t *__restrict __stacksize); |
89 | int __pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize); |
90 | int __pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, |
91 | size_t __stacksize); |
92 | int __pthread_attr_getstack (const pthread_attr_t *, void **, size_t *); |
93 | void __pthread_testcancel (void); |
94 | |
95 | #if IS_IN (libpthread) |
96 | hidden_proto (__pthread_create) |
97 | hidden_proto (__pthread_detach) |
98 | hidden_proto (__pthread_key_create) |
99 | hidden_proto (__pthread_getspecific) |
100 | hidden_proto (__pthread_setspecific) |
101 | hidden_proto (__pthread_mutex_init) |
102 | hidden_proto (__pthread_mutex_destroy) |
103 | hidden_proto (__pthread_mutex_lock) |
104 | hidden_proto (__pthread_mutex_trylock) |
105 | hidden_proto (__pthread_mutex_unlock) |
106 | hidden_proto (__pthread_mutex_timedlock) |
107 | hidden_proto (__pthread_get_cleanup_stack) |
108 | #endif |
109 | |
110 | #define ASSERT_TYPE_SIZE(type, size) \ |
111 | _Static_assert (sizeof (type) == size, \ |
112 | "sizeof (" #type ") != " #size) |
113 | |
114 | #endif /* pthreadP.h */ |
115 |
Warning: This file is not a C or C++ file. It does not have highlighting.