plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit 2640996af869dbdee7c0461c69a0c6e59ed58235
parent 88cf5927234499472ad3910aff63803f85fba40b
Author: Russ Cox <rsc@swtch.com>
Date:   Mon,  5 Nov 2007 13:14:52 -0500

libthread: use our own swapcontext/makecontext even on OS X 10.5

Diffstat:
Msrc/libthread/sysofiles.sh | 5+----
Msrc/libthread/threadimpl.h | 11++++++++++-
2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh @@ -20,11 +20,8 @@ case "$tag" in *-NetBSD-*) echo ${SYSNAME}-${OBJTYPE}-asm.o $SYSNAME.o ;; -*-Darwin-[6-8].*) - echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o - ;; *-Darwin-*) - echo pthread.o + echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o ;; *-OpenBSD-*) echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o $SYSNAME.o diff --git a/src/libthread/threadimpl.h b/src/libthread/threadimpl.h @@ -21,11 +21,20 @@ extern int swapcontext(ucontext_t*, ucontext_t*); extern void makecontext(ucontext_t*, void(*)(), int, ...); #endif -#if defined(__APPLE__) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 +#if defined(__APPLE__) + /* + * OS X before 10.5 (Leopard) does not provide + * swapcontext nor makecontext, so we have to use our own. + * In theory, Leopard does provide them, but when we use + * them, they seg fault. Maybe we're using them wrong. + * So just use our own versions, even on Leopard. + */ # define mcontext libthread_mcontext # define mcontext_t libthread_mcontext_t # define ucontext libthread_ucontext # define ucontext_t libthread_ucontext_t +# define swapcontext libthread_swapcontext +# define makecontext libthread_makecontext # if defined(__i386__) # include "386-ucontext.h" # else