summaryrefslogtreecommitdiff
path: root/src/thread
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread')
-rw-r--r--src/thread/cancel_impl.c2
-rw-r--r--src/thread/pthread_create.c1
-rw-r--r--src/thread/pthread_kill.c2
-rw-r--r--src/thread/synccall.c8
4 files changed, 5 insertions, 8 deletions
diff --git a/src/thread/cancel_impl.c b/src/thread/cancel_impl.c
index 41cf2b8c..069b2796 100644
--- a/src/thread/cancel_impl.c
+++ b/src/thread/cancel_impl.c
@@ -52,7 +52,7 @@ static void cancel_handler(int sig, siginfo_t *si, void *ctx)
__cancel();
}
- __syscall(SYS_tgkill, self->pid, self->tid, SIGCANCEL);
+ __syscall(SYS_tkill, self->tid, SIGCANCEL);
}
void __testcancel()
diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c
index a7493c10..64151254 100644
--- a/src/thread/pthread_create.c
+++ b/src/thread/pthread_create.c
@@ -206,7 +206,6 @@ int pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict attrp
new->map_size = size;
new->stack = stack;
new->stack_size = stack - stack_limit;
- new->pid = self->pid;
new->start = entry;
new->start_arg = arg;
new->self = new;
diff --git a/src/thread/pthread_kill.c b/src/thread/pthread_kill.c
index d9a5096a..acdb1ea6 100644
--- a/src/thread/pthread_kill.c
+++ b/src/thread/pthread_kill.c
@@ -4,7 +4,7 @@ int pthread_kill(pthread_t t, int sig)
{
int r;
__lock(t->killlock);
- r = t->dead ? ESRCH : -__syscall(SYS_tgkill, t->pid, t->tid, sig);
+ r = t->dead ? ESRCH : -__syscall(SYS_tkill, t->tid, sig);
__unlock(t->killlock);
return r;
}
diff --git a/src/thread/synccall.c b/src/thread/synccall.c
index a21578dc..c4149904 100644
--- a/src/thread/synccall.c
+++ b/src/thread/synccall.c
@@ -1,5 +1,6 @@
#include "pthread_impl.h"
#include <semaphore.h>
+#include <unistd.h>
static struct chain {
struct chain *next;
@@ -13,12 +14,11 @@ static sem_t chainlock, chaindone;
static void handler(int sig, siginfo_t *si, void *ctx)
{
struct chain ch;
- pthread_t self = __pthread_self();
int old_errno = errno;
if (chainlen == libc.threads_minus_1) return;
- sigqueue(self->pid, SIGSYNCCALL, (union sigval){0});
+ sigqueue(getpid(), SIGSYNCCALL, (union sigval){0});
sem_init(&ch.sem, 0, 0);
sem_init(&ch.sem2, 0, 0);
@@ -39,7 +39,6 @@ static void handler(int sig, siginfo_t *si, void *ctx)
void __synccall(void (*func)(void *), void *ctx)
{
- pthread_t self;
struct sigaction sa;
struct chain *next;
sigset_t oldmask;
@@ -65,8 +64,7 @@ void __synccall(void (*func)(void *), void *ctx)
sigfillset(&sa.sa_mask);
__libc_sigaction(SIGSYNCCALL, &sa, 0);
- self = __pthread_self();
- sigqueue(self->pid, SIGSYNCCALL, (union sigval){0});
+ sigqueue(getpid(), SIGSYNCCALL, (union sigval){0});
while (sem_wait(&chaindone));
sa.sa_flags = 0;