xref: /aosp_15_r20/bionic/libc/private/thread_private.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /* $OpenBSD: thread_private.h,v 1.18 2006/02/22 07:16:31 otto Exp $ */
2*8d67ca89SAndroid Build Coastguard Worker 
3*8d67ca89SAndroid Build Coastguard Worker /* PUBLIC DOMAIN: No Rights Reserved. Marco S Hyman <[email protected]> */
4*8d67ca89SAndroid Build Coastguard Worker 
5*8d67ca89SAndroid Build Coastguard Worker #pragma once
6*8d67ca89SAndroid Build Coastguard Worker 
7*8d67ca89SAndroid Build Coastguard Worker #include <pthread.h>
8*8d67ca89SAndroid Build Coastguard Worker 
9*8d67ca89SAndroid Build Coastguard Worker __BEGIN_DECLS
10*8d67ca89SAndroid Build Coastguard Worker 
11*8d67ca89SAndroid Build Coastguard Worker /*
12*8d67ca89SAndroid Build Coastguard Worker  * This file defines the thread library interface to libc.  Thread
13*8d67ca89SAndroid Build Coastguard Worker  * libraries must implement the functions described here for proper
14*8d67ca89SAndroid Build Coastguard Worker  * inter-operation with libc.   libc contains weak versions of the
15*8d67ca89SAndroid Build Coastguard Worker  * described functions for operation in a non-threaded environment.
16*8d67ca89SAndroid Build Coastguard Worker  */
17*8d67ca89SAndroid Build Coastguard Worker 
18*8d67ca89SAndroid Build Coastguard Worker #define __MUTEX_NAME(name) __CONCAT(__libc_mutex_,name)
19*8d67ca89SAndroid Build Coastguard Worker #define _THREAD_PRIVATE_MUTEX(name) static pthread_mutex_t __MUTEX_NAME(name) = PTHREAD_MUTEX_INITIALIZER
20*8d67ca89SAndroid Build Coastguard Worker #define _THREAD_PRIVATE_MUTEX_LOCK(name) pthread_mutex_lock(&__MUTEX_NAME(name))
21*8d67ca89SAndroid Build Coastguard Worker #define _THREAD_PRIVATE_MUTEX_UNLOCK(name) pthread_mutex_unlock(&__MUTEX_NAME(name))
22*8d67ca89SAndroid Build Coastguard Worker 
23*8d67ca89SAndroid Build Coastguard Worker /* Note that these aren't compatible with the usual OpenBSD ones which lazy-initialize! */
24*8d67ca89SAndroid Build Coastguard Worker #define _MUTEX_LOCK(l) pthread_mutex_lock((pthread_mutex_t*) l)
25*8d67ca89SAndroid Build Coastguard Worker #define _MUTEX_UNLOCK(l) pthread_mutex_unlock((pthread_mutex_t*) l)
26*8d67ca89SAndroid Build Coastguard Worker 
27*8d67ca89SAndroid Build Coastguard Worker __LIBC_HIDDEN__ void    _thread_arc4_lock(void);
28*8d67ca89SAndroid Build Coastguard Worker __LIBC_HIDDEN__ void    _thread_arc4_unlock(void);
29*8d67ca89SAndroid Build Coastguard Worker 
30*8d67ca89SAndroid Build Coastguard Worker #define _ARC4_LOCK() _thread_arc4_lock()
31*8d67ca89SAndroid Build Coastguard Worker #define _ARC4_UNLOCK() _thread_arc4_unlock()
32*8d67ca89SAndroid Build Coastguard Worker 
33*8d67ca89SAndroid Build Coastguard Worker extern volatile sig_atomic_t _rs_forked;
34*8d67ca89SAndroid Build Coastguard Worker 
35*8d67ca89SAndroid Build Coastguard Worker __END_DECLS
36