tlibthread: use our own swapcontext/makecontext even on OS X 10.5 - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 2640996af869dbdee7c0461c69a0c6e59ed58235 (DIR) parent 88cf5927234499472ad3910aff63803f85fba40b (HTM) 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: M src/libthread/sysofiles.sh | 5 +---- M src/libthread/threadimpl.h | 11 ++++++++++- 2 files changed, 11 insertions(+), 5 deletions(-) --- (DIR) diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh t@@ -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 (DIR) diff --git a/src/libthread/threadimpl.h b/src/libthread/threadimpl.h t@@ -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