diff options
author | Rich Felker <dalias@aerifal.cx> | 2014-09-07 10:28:08 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2014-09-07 10:28:08 -0400 |
commit | 23614b0fcb4cd4d7b2e4148d3b1887b642169765 (patch) | |
tree | ffee3db90209dedcc61b1afdd255be2af2d39b8a /src/thread/pthread_self.c | |
parent | 14397cec2c8429b504b17aaf92509b48da3681b9 (diff) | |
download | musl-23614b0fcb4cd4d7b2e4148d3b1887b642169765.tar.gz musl-23614b0fcb4cd4d7b2e4148d3b1887b642169765.tar.bz2 musl-23614b0fcb4cd4d7b2e4148d3b1887b642169765.tar.xz musl-23614b0fcb4cd4d7b2e4148d3b1887b642169765.zip |
add C11 thread creation and related thread functions
based on patch by Jens Gustedt.
the main difficulty here is handling the difference between start
function signatures and thread return types for C11 threads versus
POSIX threads. pointers to void are assumed to be able to represent
faithfully all values of int. the function pointer for the thread
start function is cast to an incorrect type for passing through
pthread_create, but is cast back to its correct type before calling so
that the behavior of the call is well-defined.
changes to the existing threads implementation were kept minimal to
reduce the risk of regressions, and duplication of code that carries
implementation-specific assumptions was avoided for ease and safety of
future maintenance.
Diffstat (limited to 'src/thread/pthread_self.c')
-rw-r--r-- | src/thread/pthread_self.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/thread/pthread_self.c b/src/thread/pthread_self.c index 5f9e6516..241a6202 100644 --- a/src/thread/pthread_self.c +++ b/src/thread/pthread_self.c @@ -1,6 +1,11 @@ #include "pthread_impl.h" +#include <threads.h> +#include "libc.h" -pthread_t pthread_self() +static pthread_t __pthread_self_internal() { return __pthread_self(); } + +weak_alias(__pthread_self_internal, pthread_self); +weak_alias(__pthread_self_internal, thrd_current); |