From 7966faa931bfa9cf4ca53dd2d5b6e1eb0f174411 Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 23 Sep 2004 03:01:36 +0000 Subject: Continue fighting pthreads. Clean up thread library a bit too. --- src/libthread/ucontext.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/libthread/ucontext.c') diff --git a/src/libthread/ucontext.c b/src/libthread/ucontext.c index 60f803d3..b1c5ef53 100644 --- a/src/libthread/ucontext.c +++ b/src/libthread/ucontext.c @@ -6,17 +6,18 @@ _threadinitstack(Thread *t, void (*f)(void*), void *arg) sigset_t zero; /* do a reasonable initialization */ - memset(&t->sched.uc, 0, sizeof t->sched.uc); + memset(&t->context.uc, 0, sizeof t->context.uc); sigemptyset(&zero); - sigprocmask(SIG_BLOCK, &zero, &t->sched.uc.uc_sigmask); + sigprocmask(SIG_BLOCK, &zero, &t->context.uc.uc_sigmask); /* call getcontext, because on Linux makecontext neglects floating point */ - getcontext(&t->sched.uc); + getcontext(&t->context.uc); /* call makecontext to do the real work. */ - t->sched.uc.uc_stack.ss_sp = t->stk; - t->sched.uc.uc_stack.ss_size = t->stksize; - makecontext(&t->sched.uc, (void(*)())f, 1, arg); + /* leave a few words open on both ends */ + t->context.uc.uc_stack.ss_sp = t->stk+8; + t->context.uc.uc_stack.ss_size = t->stksize-16; + makecontext(&t->context.uc, (void(*)())f, 1, arg); } void -- cgit v1.2.3