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