diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-04-06 20:27:07 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-04-06 20:27:07 -0400 |
commit | b2486a8922bf4977bd82c8190258e39de28c053b (patch) | |
tree | 7e6a928a7fb8f84ab835ea9009ddb447487b44e4 /src/internal | |
parent | 74950b336d27532718428c7f5f98409c74f30819 (diff) | |
download | musl-b2486a8922bf4977bd82c8190258e39de28c053b.tar.gz musl-b2486a8922bf4977bd82c8190258e39de28c053b.tar.bz2 musl-b2486a8922bf4977bd82c8190258e39de28c053b.tar.xz musl-b2486a8922bf4977bd82c8190258e39de28c053b.zip |
move rsyscall out of pthread_create module
this is something of a tradeoff, as now set*id() functions, rather
than pthread_create, are what pull in the code overhead for dealing
with linux's refusal to implement proper POSIX thread-vs-process
semantics. my motivations are:
1. it's cleaner this way, especially cleaner to optimize out the
rsyscall locking overhead from pthread_create when it's not needed.
2. it's expected that only a tiny number of core system programs will
ever use set*id() functions, whereas many programs may want to use
threads, and making thread overhead tiny is an incentive for "light"
programs to try threads.
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/libc.h | 3 | ||||
-rw-r--r-- | src/internal/pthread_impl.h | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/internal/libc.h b/src/internal/libc.h index be88dc04..c0039e77 100644 --- a/src/internal/libc.h +++ b/src/internal/libc.h @@ -10,7 +10,6 @@ struct __libc { void (*lock)(volatile int *); void (*lockfile)(FILE *); void (*fork_handler)(int); - int (*rsyscall)(int, long, long, long, long, long, long); int (*atexit)(void (*)(void)); void (*fini)(void); void (*ldso_fini)(void); @@ -48,6 +47,8 @@ void __lockfile(FILE *); #define CANCELPT_INHIBIT CANCELPT(2) #define CANCELPT_RESUME CANCELPT(-2) +int __rsyscall(int, long, long, long, long, long, long); + extern char **__environ; #define environ __environ diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 7ab6243d..0bcc54cc 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -86,6 +86,9 @@ int __timedwait(volatile int *, int, clockid_t, const struct timespec *, int); void __wait(volatile int *, volatile int *, int, int); void __wake(volatile int *, int, int); +void __rsyscall_lock(); +void __rsyscall_unlock(); + #define DEFAULT_STACK_SIZE (16384-PAGE_SIZE) #define DEFAULT_GUARD_SIZE PAGE_SIZE |