X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Tools%2Fnativelib%2Fthreads_int.c;h=b2ad9f661667835a6359bb9157772f35d054baaa;hb=13a05e65cf34886163b596193d129fbfcac3c55f;hp=324b952d8532e5b6bc36b517f1971098a5e3c147;hpb=652e2ab0285b66a388a7d73fe5d3551249a4df0b;p=tpg%2Facess2.git diff --git a/Tools/nativelib/threads_int.c b/Tools/nativelib/threads_int.c index 324b952d..b2ad9f66 100644 --- a/Tools/nativelib/threads_int.c +++ b/Tools/nativelib/threads_int.c @@ -8,6 +8,7 @@ #include #include #include +#include // printf debugging #include #include #include @@ -90,9 +91,9 @@ tThreadIntSem *Threads_int_SemCreate(void) void Threads_int_SemSignal(tThreadIntSem *Sem) { - if( sem_wait ) + if( sem_post ) { - sem_wait( (void*)Sem ); + sem_post( (void*)Sem ); } else { @@ -102,9 +103,12 @@ void Threads_int_SemSignal(tThreadIntSem *Sem) void Threads_int_SemWaitAll(tThreadIntSem *Sem) { - if( sem_post ) + if( sem_wait ) { - sem_post( (void*)Sem ); + // TODO: Handle multiples + sem_wait( (void*)Sem ); + while( sem_trywait((void*)Sem) ) + ; } else { @@ -151,7 +155,9 @@ void SHORTLOCK(tShortSpinlock *Lock) *Lock = malloc(sizeof(pthread_mutex_t)); pthread_mutex_init(*Lock, NULL); } +// printf("%p: SHORTLOCK wait\n", lpThreads_This); pthread_mutex_lock(*Lock); +// printf("%p: SHORTLOCK held %p\n", lpThreads_This, __builtin_return_address(0)); } } @@ -165,6 +171,7 @@ void SHORTREL(tShortSpinlock *Lock) else { pthread_mutex_unlock(*Lock); +// printf("%p: SHORTLOCK rel\n", lpThreads_This); } }