mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 21:47:46 +00:00
LibC+LibPthread: Implement function forwarding for libpthread
GCC will insert various calls to pthread functions when compiling C++ code with static initializers, even when the user doesn't link their program against libpthread explicitly. This is used to make static initializers thread-safe, e.g. when building a library that does not itself use thread functionality and thus does not link against libpthread - but is intended to be used with other code that does use libpthread explicitly. This makes these symbols available in libc.
This commit is contained in:
parent
db3fd11646
commit
88cebb05ad
14 changed files with 381 additions and 100 deletions
|
@ -27,6 +27,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
|
@ -37,12 +38,21 @@ void __pthread_fork_atfork_register_prepare(void (*)(void));
|
|||
void __pthread_fork_atfork_register_parent(void (*)(void));
|
||||
void __pthread_fork_atfork_register_child(void (*)(void));
|
||||
|
||||
int __pthread_mutex_lock(void*);
|
||||
int __pthread_mutex_unlock(void*);
|
||||
int __pthread_mutex_init(void*, const void*);
|
||||
int __pthread_mutex_lock(pthread_mutex_t*);
|
||||
int __pthread_mutex_unlock(pthread_mutex_t*);
|
||||
int __pthread_mutex_init(pthread_mutex_t*, const pthread_mutexattr_t*);
|
||||
|
||||
typedef void (*KeyDestructor)(void*);
|
||||
|
||||
int __pthread_key_create(pthread_key_t*, KeyDestructor);
|
||||
int __pthread_key_delete(pthread_key_t);
|
||||
void* __pthread_getspecific(pthread_key_t);
|
||||
int __pthread_setspecific(pthread_key_t, const void*);
|
||||
|
||||
int __pthread_self();
|
||||
|
||||
void __pthread_key_destroy_for_current_thread();
|
||||
|
||||
#define __PTHREAD_MUTEX_NORMAL 0
|
||||
#define __PTHREAD_MUTEX_RECURSIVE 1
|
||||
#define __PTHREAD_MUTEX_INITIALIZER \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue