PHP 7.4.33
Preview: threads.h Size: 7.51 KB
/usr/include/threads.h
/* ISO C11 Standard: 7.26 - Thread support library  <threads.h>.
   Copyright (C) 2018-2022 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 _THREADS_H
#define _THREADS_H	1

#include <features.h>
#include <time.h>

__BEGIN_DECLS

#include <bits/thread-shared-types.h>
#include <bits/types/struct_timespec.h>

#ifndef __cplusplus
# define thread_local _Thread_local
#endif

#define TSS_DTOR_ITERATIONS 4
typedef __tss_t tss_t;
typedef void (*tss_dtor_t) (void*);

typedef __thrd_t thrd_t;
typedef int (*thrd_start_t) (void*);

/* Exit and error codes.  */
enum
{
  thrd_success  = 0,
  thrd_busy     = 1,
  thrd_error    = 2,
  thrd_nomem    = 3,
  thrd_timedout = 4
};

/* Mutex types.  */
enum
{
  mtx_plain     = 0,
  mtx_recursive = 1,
  mtx_timed     = 2
};

typedef __once_flag once_flag;
#define ONCE_FLAG_INIT __ONCE_FLAG_INIT

typedef union
{
  char __size[__SIZEOF_PTHREAD_MUTEX_T];
  long int __align __LOCK_ALIGNMENT;
} mtx_t;

typedef union
{
  char __size[__SIZEOF_PTHREAD_COND_T];
  __extension__ long long int __align __LOCK_ALIGNMENT;
} cnd_t;

/* Threads functions.  */

/* Create a new thread executing the function __FUNC.  Arguments for __FUNC
   are passed through __ARG.  If succesful, __THR is set to new thread
   identifier.  */
extern int thrd_create (thrd_t *__thr, thrd_start_t __func, void *__arg);

/* Check if __LHS and __RHS point to the same thread.  */
extern int thrd_equal (thrd_t __lhs, thrd_t __rhs);

/* Return current thread identifier.  */
extern thrd_t thrd_current (void);

/* Block current thread execution for at least the time pointed by
   __TIME_POINT.  The current thread may resume if receives a signal.  In
   that case, if __REMAINING is not NULL, the remaining time is stored in
   the object pointed by it.  */
#ifndef __USE_TIME_BITS64
extern int thrd_sleep (const struct timespec *__time_point,
		       struct timespec *__remaining);
#else
# ifdef __REDIRECT
extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
                                    struct timespec *__remaining),
                       __thrd_sleep64);
# else
#  define thrd_sleep __thrd_sleep64
# endif
#endif

/* Terminate current thread execution, cleaning up any thread local
   storage and freeing resources.  Returns the value specified in __RES.  */
extern void thrd_exit (int __res) __attribute__ ((__noreturn__));

/* Detach the thread identified by __THR from the current environment
   (it does not allow join or wait for it).  */
extern int thrd_detach (thrd_t __thr);

/* Block current thread until execution of __THR is complete.  In case that
   __RES is not NULL, will store the return value of __THR when exiting.  */
extern int thrd_join (thrd_t __thr, int *__res);

/* Stop current thread execution and call the scheduler to decide which
   thread should execute next.  The current thread may be selected by the
   scheduler to keep running.  */
extern void thrd_yield (void);

#ifdef __USE_EXTERN_INLINES
/* Optimizations.  */
__extern_inline int
thrd_equal (thrd_t __thread1, thrd_t __thread2)
{
  return __thread1 == __thread2;
}
#endif


/* Mutex functions.  */

/* Creates a new mutex object with type __TYPE.  If successful the new
   object is pointed by __MUTEX.  */
extern int mtx_init (mtx_t *__mutex, int __type);

/* Block the current thread until the mutex pointed to by __MUTEX is
   unlocked.  In that case current thread will not be blocked.  */
extern int mtx_lock (mtx_t *__mutex);

/* Block the current thread until the mutex pointed by __MUTEX is unlocked
   or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
   the current thread will not be blocked.  */
#ifndef __USE_TIME_BITS64
extern int mtx_timedlock (mtx_t *__restrict __mutex,
			  const struct timespec *__restrict __time_point);
#else
# ifdef __REDIRECT
extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
                                       const struct timespec *__restrict
                                       __time_point),
                       __mtx_timedlock64);
# else
#  define mtx_timedlock __mtx_timedlock64
# endif
#endif

/* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
   is free the current threads takes control of it, otherwise it returns
   immediately.  */
extern int mtx_trylock (mtx_t *__mutex);

/* Unlock the mutex pointed by __MUTEX.  It may potentially awake other
   threads waiting on this mutex.  */
extern int mtx_unlock (mtx_t *__mutex);

/* Destroy the mutex object pointed by __MUTEX.  */
extern void mtx_destroy (mtx_t *__mutex);


/* Call function __FUNC exactly once, even if invoked from several threads.
   All calls must be made with the same __FLAGS object.  */
extern void call_once (once_flag *__flag, void (*__func)(void));


/* Condition variable functions.  */

/* Initialize new condition variable pointed by __COND.  */
extern int cnd_init (cnd_t *__cond);

/* Unblock one thread that currently waits on condition variable pointed
   by __COND.  */
extern int cnd_signal (cnd_t *__cond);

/* Unblock all threads currently waiting on condition variable pointed by
   __COND.  */
extern int cnd_broadcast (cnd_t *__cond);

/* Block current thread on the condition variable pointed by __COND.  */
extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);

/* Block current thread on the condition variable until condition variable
   pointed by __COND is signaled or time pointed by __TIME_POINT is
   reached.  */
#ifndef __USE_TIME_BITS64
extern int cnd_timedwait (cnd_t *__restrict __cond,
			  mtx_t *__restrict __mutex,
			  const struct timespec *__restrict __time_point);
#else
# ifdef __REDIRECT
extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
                                       mtx_t *__restrict __mutex,
                                       const struct timespec *__restrict
                                       __time_point),
                       __cnd_timedwait64);
# else
#  define cnd_timedwait __cnd_timedwait64
# endif
#endif

/* Destroy condition variable pointed by __cond and free all of its
   resources.  */
extern void cnd_destroy (cnd_t *__COND);


/* Thread specific storage functions.  */

/* Create new thread-specific storage key and stores it in the object pointed
   by __TSS_ID.  If __DESTRUCTOR is not NULL, the function will be called when
   the thread terminates.  */
extern int tss_create (tss_t *__tss_id, tss_dtor_t __destructor);

/* Return the value held in thread-specific storage for the current thread
   identified by __TSS_ID.  */
extern void *tss_get (tss_t __tss_id);

/* Sets the value of the thread-specific storage identified by __TSS_ID for
   the current thread to __VAL.  */
extern int tss_set (tss_t __tss_id, void *__val);

/* Destroys the thread-specific storage identified by __TSS_ID.  The
   destructor is not called until thrd_exit is called.  */
extern void tss_delete (tss_t __tss_id);

__END_DECLS

#endif /* _THREADS_H */

Directory Contents

Dirs: 43 × Files: 126
Name Size Perms Modified Actions
arpa DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
c++ DIR
- drwxr-xr-x 2023-04-06 04:29:05
Edit Download
drm DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
finclude DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
gdb DIR
- drwxr-xr-x 2025-02-10 09:56:40
Edit Download
iproute2 DIR
- drwxr-xr-x 2022-08-09 11:58:53
Edit Download
libdmmp DIR
- drwxr-xr-x 2024-03-05 04:28:03
Edit Download
linux DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
memcached DIR
- drwxr-xr-x 2023-11-15 06:03:44
Edit Download
misc DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
mtd DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
net DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netash DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netatalk DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netax25 DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
neteconet DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netinet DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netipx DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netiucv DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netpacket DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netrom DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
netrose DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
nfs DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
node DIR
- drwxr-xr-x 2024-06-12 06:27:35
Edit Download
nodejs DIR
- drwxr-xr-x 2024-06-12 06:27:35
Edit Download
openssl DIR
- drwxr-xr-x 2026-04-10 06:14:07
Edit Download
php DIR
- drwxr-xr-x 2023-09-20 09:36:49
Edit Download
protocols DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
- drwxr-xr-x 2026-03-12 07:02:00
Edit Download
rdma DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
rpc DIR
- drwxr-xr-x 2026-02-06 06:48:12
Edit Download
rpcsvc DIR
- drwxr-xr-x 2023-04-06 04:29:03
Edit Download
scsi DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
sound DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
tirpc DIR
- drwxr-xr-x 2023-04-06 04:29:03
Edit Download
uv DIR
- drwxr-xr-x 2024-02-29 06:57:25
Edit Download
v8 DIR
- drwxr-xr-x 2024-06-12 06:27:35
Edit Download
video DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
X11 DIR
- drwxr-xr-x 2022-03-25 09:58:44
Edit Download
- drwxr-xr-x 2026-02-13 06:12:53
Edit Download
xen DIR
- drwxr-xr-x 2026-05-07 06:57:46
Edit Download
xfs DIR
- drwxr-xr-x 2022-02-09 04:42:33
Edit Download
7.56 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.98 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.17 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.69 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
24.95 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.91 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.53 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.42 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
7.95 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.21 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
10.87 KB lrw-r--r-- 2021-12-17 22:48:21
Edit Download
10.71 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
12.22 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
8.17 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
179.98 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.25 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.80 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.29 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.64 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.36 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.49 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
42.68 KB lrw-r--r-- 2026-02-04 15:24:04
Edit Download
5.89 KB lrw-r--r-- 2026-02-04 15:24:04
Edit Download
9.89 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.38 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
17.44 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.65 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.16 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.24 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.04 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
9.35 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
6.19 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
39.69 KB lrw-r--r-- 2023-08-17 10:24:36
Edit Download
4.11 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.43 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
7.13 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.29 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.84 KB lrw-r--r-- 2022-02-15 15:32:21
Edit Download
6.53 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.42 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.81 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.77 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
8.14 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
17.43 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
126 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.35 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.47 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.57 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
7.62 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
7.50 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.84 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
48.70 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.38 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
956 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.28 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.92 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.06 KB lrw-r--r-- 2023-10-31 22:21:59
Edit Download
11.22 KB lrw-r--r-- 2023-10-31 22:21:59
Edit Download
4.50 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
27.79 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.71 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
14.07 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
20.81 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
17.85 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
10.88 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
2.91 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
22 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
6.71 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.40 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
47.24 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.53 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
6.17 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
25.30 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.35 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
11.96 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
963 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.92 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.32 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.38 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.12 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.31 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.34 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
12.73 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
8.08 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
31.62 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
81.30 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
6.82 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
11.17 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
21.16 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
264 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.40 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
8.28 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
30.45 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.73 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
35.54 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
19.00 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.64 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
11.64 KB lrw-r--r-- 2026-03-02 13:08:06
Edit Download
25 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.11 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
24 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.66 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
214 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.51 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
43.61 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
7.51 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
15.65 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
14.49 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.44 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.96 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.99 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
1.55 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
43.91 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.25 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
2.53 KB lrw-r--r-- 2024-03-21 11:18:10
Edit Download
1.86 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
3.15 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
4.00 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
65.59 KB lrw-r--r-- 2022-01-04 14:18:00
Edit Download
1.91 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
22 B lrw-r--r-- 2026-01-30 08:20:56
Edit Download
31.05 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
5.42 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
2.44 KB lrw-r--r-- 2026-01-30 08:20:56
Edit Download
15.88 KB lrw-r--r-- 2022-10-14 21:33:00
Edit Download
94.00 KB lrw-r--r-- 2022-10-14 21:33:00
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).