Ticket #5554: xplthread.patch

File xplthread.patch, 2.2 KB (added by joe@…, 19 years ago)

xpl thread patch

  • hula/include/xplthread.h

     
    201201
    202202
    203203#ifdef HAVE_SEMAPHORE_H
     204
    204205/* Semaphores */
    205206 /**********************
    206207  Semaphores
    207208 **********************/
    208 #define XplSemaphore                                                                                                    sem_t
     209
     210#ifdef MACOSX
     211
     212#include <Multiprocessing.h>
     213#include <MacErrors.h>
     214
     215#define XplSemaphore                                                                    MPSemaphoreID
     216#define XplOpenLocalSemaphore(sem, init)                                                (MPCreateSemaphore(0x7fffffff,init,&sem) != noErr ? -1 : (int) sem)
     217#define XplCloseLocalSemaphore(sem)                                                     (MPDeleteSemaphore(sem) != noErr ? -1 : 0)
     218#define XplWaitOnLocalSemaphore(sem)                                                    (MPWaitOnSemaphore(sem,kDurationForever) != noErr ? -1 : 0)
     219#define XplSignalLocalSemaphore(sem)                                                    (MPSignalSemaphore(sem) != noErr ? -1 : 0)
     220#define XplExamineLocalSemaphore(sem, cnt)                                              if (MPWaitOnSemaphore(sem,kDurationImmediate) != kMPTimeoutErr) { MPSignalSemaphore(sem); cnt = 1; } else { cnt = 0; }
     221
     222#else
     223
     224#define XplSemaphore                                                                    sem_t
    209225#define XplOpenLocalSemaphore(sem, init)                                                sem_init(&sem, 0, init)
    210 #define XplCloseLocalSemaphore(sem)                                                             sem_destroy(&sem)
     226#define XplCloseLocalSemaphore(sem)                                                     sem_destroy(&sem)
    211227#define XplWaitOnLocalSemaphore(sem)                                                    sem_wait(&sem)
    212228#define XplSignalLocalSemaphore(sem)                                                    sem_post(&sem)
    213 #define XplExamineLocalSemaphore(sem, cnt)                                      sem_getvalue(&sem, (int *)&cnt)
     229#define XplExamineLocalSemaphore(sem, cnt)                                              sem_getvalue(&sem, (int *)&cnt)
    214230
     231#endif
     232
    215233#elif defined(WIN32)
    216234
    217235#define XplSemaphore                                                            HANDLE
  • hula/configure.in

     
    301301      PTHREAD_LIBS="-pthread -lc_r"
    302302    fi
    303303  ;;
     304  *darwin*)
     305    #As of 10.4.2, POSIX Unnamed Semaphores are not implemented, use Carbon Semaphores instead
     306    PTHREAD_LIBS="-lpthread -framework Carbon"
     307    PTHREAD_CFLAGS="-I/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers"
     308    CFLAGS="$CFLAGS -DMACOSX"
     309  ;;
    304310esac
    305311AC_MSG_CHECKING(pthread cflags)
    306312AC_MSG_RESULT($PTHREAD_CFLAGS)