tests: Add test_astbuilder to the skip list of nitcg niti nitvm
[nit.git] / lib / pthreads / extra.nit
index 94ea0e2..3ed81b4 100644 (file)
 
 # Offers some POSIX threads services that are not available on all platforms
 module extra is
-       c_compiler_option("-pthread")
-       c_linker_option("-pthread")
+       cflags "-pthread"
+       ldflags "-pthread"
 end
 
 intrude import pthreads
 
 in "C" `{
        // TODO protect with: #ifdef WITH_LIBGC
+       #ifndef ANDROID
                #define GC_THREADS
                #include <gc.h>
-       //#endif
+       #endif
 `}
 
 redef extern class NativePthread
        fun cancel: Bool `{
-               return pthread_cancel(*recv);
+               return pthread_cancel(*self);
        `}
 end
 
@@ -47,3 +48,15 @@ end
 
 # Does not return if the running thread is to be cancelled
 fun test_cancel `{ pthread_testcancel(); `}
+
+private extern class NativePthreadBarrier in "C" `{ pthread_barrier_t * `}
+       new(count: Int) `{
+               pthread_barrier_t *barrier = malloc(sizeof(pthread_barrier_t));
+               int res = pthread_barrier_init(barrier, NULL, count);
+               return barrier;
+       `}
+
+       fun destroy `{ pthread_barrier_destroy(self); `}
+
+       fun wait `{ pthread_barrier_wait(self); `}
+end