summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-04-06 20:27:07 -0400
committerRich Felker <dalias@aerifal.cx>2011-04-06 20:27:07 -0400
commitb2486a8922bf4977bd82c8190258e39de28c053b (patch)
tree7e6a928a7fb8f84ab835ea9009ddb447487b44e4 /src/internal
parent74950b336d27532718428c7f5f98409c74f30819 (diff)
downloadmusl-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.h3
-rw-r--r--src/internal/pthread_impl.h3
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