summaryrefslogtreecommitdiff
path: root/src/thread
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-13 19:24:51 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-13 19:24:51 -0400
commit19a1fe670acb3ab9ead0fe31859ca7d4fe40dd54 (patch)
treec2a2b1e2e4ddb58416a925b1e64485ac4972f4e4 /src/thread
parent71f099cb7db821c51d8f39dfac622c61e54d794c (diff)
downloadmusl-19a1fe670acb3ab9ead0fe31859ca7d4fe40dd54.tar.gz
remove remnants of support for running in no-thread-pointer mode
since 1.1.0, musl has nominally required a thread pointer to be setup. most of the remaining code that was checking for its availability was doing so for the sake of being usable by the dynamic linker. as of commit 71f099cb7db821c51d8f39dfac622c61e54d794c, this is no longer necessary; the thread pointer is now valid before any libc code (outside of dynamic linker bootstrap functions) runs. this commit essentially concludes "phase 3" of the "transition path for removing lazy init of thread pointer" project that began during the 1.1.0 release cycle.
Diffstat (limited to 'src/thread')
-rw-r--r--src/thread/pthread_cancel.c3
-rw-r--r--src/thread/pthread_create.c2
-rw-r--r--src/thread/pthread_key_create.c10
-rw-r--r--src/thread/pthread_setcancelstate.c1
4 files changed, 5 insertions, 11 deletions
diff --git a/src/thread/pthread_cancel.c b/src/thread/pthread_cancel.c
index a507f923..7c5dda31 100644
--- a/src/thread/pthread_cancel.c
+++ b/src/thread/pthread_cancel.c
@@ -30,7 +30,7 @@ long __syscall_cp_c(syscall_arg_t nr,
long r;
int st;
- if (!libc.has_thread_pointer || (st=(self=__pthread_self())->canceldisable)
+ if ((st=(self=__pthread_self())->canceldisable)
&& (st==PTHREAD_CANCEL_DISABLE || nr==SYS_close))
return __syscall(nr, u, v, w, x, y, z);
@@ -69,7 +69,6 @@ static void cancel_handler(int sig, siginfo_t *si, void *ctx)
void __testcancel()
{
- if (!libc.has_thread_pointer) return;
pthread_t self = __pthread_self();
if (self->cancel && !self->canceldisable)
__cancel();
diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c
index 33808ce5..6963f0d6 100644
--- a/src/thread/pthread_create.c
+++ b/src/thread/pthread_create.c
@@ -122,7 +122,6 @@ _Noreturn void __pthread_exit(void *result)
void __do_cleanup_push(struct __ptcb *cb)
{
- if (!libc.has_thread_pointer) return;
struct pthread *self = __pthread_self();
cb->__next = self->cancelbuf;
self->cancelbuf = cb;
@@ -130,7 +129,6 @@ void __do_cleanup_push(struct __ptcb *cb)
void __do_cleanup_pop(struct __ptcb *cb)
{
- if (!libc.has_thread_pointer) return;
__pthread_self()->cancelbuf = cb->__next;
}
diff --git a/src/thread/pthread_key_create.c b/src/thread/pthread_key_create.c
index 198ae56e..a78e507a 100644
--- a/src/thread/pthread_key_create.c
+++ b/src/thread/pthread_key_create.c
@@ -13,13 +13,11 @@ int __pthread_key_create(pthread_key_t *k, void (*dtor)(void *))
{
unsigned i = (uintptr_t)&k / 16 % PTHREAD_KEYS_MAX;
unsigned j = i;
+ pthread_t self = __pthread_self();
- if (libc.has_thread_pointer) {
- pthread_t self = __pthread_self();
- /* This can only happen in the main thread before
- * pthread_create has been called. */
- if (!self->tsd) self->tsd = __pthread_tsd_main;
- }
+ /* This can only happen in the main thread before
+ * pthread_create has been called. */
+ if (!self->tsd) self->tsd = __pthread_tsd_main;
if (!dtor) dtor = nodtor;
do {
diff --git a/src/thread/pthread_setcancelstate.c b/src/thread/pthread_setcancelstate.c
index 822a1398..5ab8c338 100644
--- a/src/thread/pthread_setcancelstate.c
+++ b/src/thread/pthread_setcancelstate.c
@@ -3,7 +3,6 @@
int __pthread_setcancelstate(int new, int *old)
{
if (new > 2U) return EINVAL;
- if (!libc.has_thread_pointer) return ENOSYS;
struct pthread *self = __pthread_self();
if (old) *old = self->canceldisable;
self->canceldisable = new;