Index: trunk/libs/libpthread/pthread.c
===================================================================
--- trunk/libs/libpthread/pthread.c	(revision 573)
+++ trunk/libs/libpthread/pthread.c	(revision 581)
@@ -31,5 +31,4 @@
 #include <syscalls_numbers.h>
 
-#define PTHREAD_BARRIER_DEBUG   0
 
 ////////////////////////////////////////////////////////////////////////////////////////////
@@ -73,5 +72,5 @@
 }
 
-///////////////////
+/////////////////////////
 int pthread_yield( void )
 {
@@ -80,6 +79,160 @@
 
 ////////////////////////////////////////////////////////////////////////////////////////////
+//                               Mutexes
+////////////////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////
+int pthread_mutex_init( pthread_mutex_t           * mutex,
+                        const pthread_mutexattr_t * attr )
+{
+    if( attr != NULL )
+    {
+        printf("\n[ERROR] in %s : <attr> argument not supported\n", __FUNCTION__);
+        return -1;
+    }
+
+    return hal_user_syscall( SYS_MUTEX,
+                             (reg_t)mutex,
+                             MUTEX_INIT,
+                             0, 0 );
+}
+
+////////////////////////////////////////////////////
+int pthread_mutex_destroy( pthread_mutex_t * mutex )
+{
+    return hal_user_syscall( SYS_MUTEX,
+                             (reg_t)mutex,
+                             MUTEX_DESTROY,
+                             0, 0 );
+}
+
+/////////////////////////////////////////////////
+int pthread_mutex_lock( pthread_mutex_t * mutex ) 
+{
+    return hal_user_syscall( SYS_MUTEX,
+                             (reg_t)mutex,
+                             MUTEX_LOCK,
+                             0, 0 );
+}
+
+////////////////////////////////////////////////////
+int pthread_mutex_trylock( pthread_mutex_t * mutex )
+{
+    return hal_user_syscall( SYS_MUTEX,
+                             (reg_t)mutex,
+                             MUTEX_TRYLOCK,
+                             0, 0 );
+}
+    
+///////////////////////////////////////////////////
+int pthread_mutex_unlock( pthread_mutex_t * mutex )
+{
+    return hal_user_syscall( SYS_MUTEX,
+                             (reg_t)mutex,
+                             MUTEX_UNLOCK,
+                             0, 0 );
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////
+//                               Condvars
+////////////////////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////
+int pthread_cond_init( pthread_cond_t     * cond,
+                       pthread_condattr_t * attr )
+{
+    if( attr )
+    {
+        printf("[ERROR] in %s ; <attr> argument must be NULL\n", __FUNCTION__ );
+        return -1;
+    }
+
+   return hal_user_syscall( SYS_CONDVAR,
+                             (reg_t)cond,
+                             CONDVAR_INIT,
+                             0, 0 );
+}
+
+/////////////////////////////////////////////////
+int pthread_cond_destroy( pthread_cond_t * cond )
+{
+    return hal_user_syscall( SYS_CONDVAR,
+                             (reg_t)cond,
+                             CONDVAR_DESTROY,
+                             0, 0 );
+}
+
+//////////////////////////////////////////////
+int pthread_cond_wait( pthread_cond_t  * cond,
+                       pthread_mutex_t * mutex )
+{
+    return hal_user_syscall( SYS_CONDVAR,
+                             (reg_t)cond,
+                             CONDVAR_WAIT,
+                             (reg_t)mutex,
+                             0 );
+}
+
+////////////////////////////////////////////////
+int pthread_cond_signal( pthread_cond_t * cond )
+{
+    return hal_user_syscall( SYS_CONDVAR,
+                             (reg_t)cond,
+                             CONDVAR_SIGNAL,
+                             0, 0 );
+}
+
+///////////////////////////////////////////////////
+int pthread_cond_broadcast( pthread_cond_t * cond )
+{
+    return hal_user_syscall( SYS_CONDVAR,
+                             (reg_t)cond,
+                             CONDVAR_BROADCAST,
+                             0, 0 );
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
 //                            Barriers
 ////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////
+int pthread_barrier_init( pthread_barrier_t           * barrier,
+                          const pthread_barrierattr_t * attr,
+                          unsigned int                  count )
+{ 
+    return hal_user_syscall( SYS_BARRIER,
+                             (reg_t)barrier,
+                             BARRIER_INIT,
+                             (reg_t)count,
+                             0 );
+}
+
+//////////////////////////////////////////////////////////
+int pthread_barrier_destroy( pthread_barrier_t * barrier )
+{
+    return hal_user_syscall( SYS_BARRIER,
+                             (reg_t)barrier,
+                             BARRIER_DESTROY,
+                             0, 0 );
+}
+   
+///////////////////////////////////////////////////////
+int pthread_barrier_wait( pthread_barrier_t * barrier )
+{
+    return hal_user_syscall( SYS_BARRIER,
+                             (reg_t)barrier,
+                             BARRIER_WAIT,
+                             0, 0 );
+}
+
+/*
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// The following functions define another implementation for the POSX barrier
+// based on a distributed quadtree implemented in user space, and relying
+// on a busy waiting policy.
+////////////////////////////////////////////////////////////////////////////////////////////
+
 
 ////////////////////////////////////////////////////////////////////////////////////////////
@@ -359,120 +512,5 @@
 }  // end pthread_barrier_wait()
 
-////////////////////////////////////////////////////////////////////////////////////////////
-//                               Mutexes
-////////////////////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////
-int pthread_mutex_init( pthread_mutex_t           * mutex,
-                        const pthread_mutexattr_t * attr )
-{
-    if( attr != NULL )
-    {
-        printf("\n[ERROR] in %s : <attr> argument not supported\n", __FUNCTION__);
-        return -1;
-    }
-
-    return hal_user_syscall( SYS_MUTEX,
-                             (reg_t)mutex,
-                             MUTEX_INIT,
-                             0, 0 );
-}
-
-////////////////////////////////////////////////////
-int pthread_mutex_destroy( pthread_mutex_t * mutex )
-{
-    return hal_user_syscall( SYS_MUTEX,
-                             (reg_t)mutex,
-                             MUTEX_DESTROY,
-                             0, 0 );
-}
-
-/////////////////////////////////////////////////
-int pthread_mutex_lock( pthread_mutex_t * mutex ) 
-{
-    return hal_user_syscall( SYS_MUTEX,
-                             (reg_t)mutex,
-                             MUTEX_LOCK,
-                             0, 0 );
-}
-
-////////////////////////////////////////////////////
-int pthread_mutex_trylock( pthread_mutex_t * mutex )
-{
-    return hal_user_syscall( SYS_MUTEX,
-                             (reg_t)mutex,
-                             MUTEX_TRYLOCK,
-                             0, 0 );
-}
-    
-///////////////////////////////////////////////////
-int pthread_mutex_unlock( pthread_mutex_t * mutex )
-{
-    return hal_user_syscall( SYS_MUTEX,
-                             (reg_t)mutex,
-                             MUTEX_UNLOCK,
-                             0, 0 );
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////
-//                               Condition variable
-////////////////////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////
-int pthread_cond_init( pthread_cond_t     * cond,
-                       pthread_condattr_t * attr )
-{
-    if( attr )
-    {
-        printf("[ERROR] in %s ; <attr> argument must be NULL\n", __FUNCTION__ );
-        return -1;
-    }
-
-   return hal_user_syscall( SYS_CONDVAR,
-                             (reg_t)cond,
-                             CONDVAR_INIT,
-                             0, 0 );
-}
-
-/////////////////////////////////////////////////
-int pthread_cond_destroy( pthread_cond_t * cond )
-{
-    return hal_user_syscall( SYS_CONDVAR,
-                             (reg_t)cond,
-                             CONDVAR_DESTROY,
-                             0, 0 );
-}
-
-//////////////////////////////////////////////
-int pthread_cond_wait( pthread_cond_t  * cond,
-                       pthread_mutex_t * mutex )
-{
-    return hal_user_syscall( SYS_CONDVAR,
-                             (reg_t)cond,
-                             CONDVAR_WAIT,
-                             (reg_t)mutex,
-                             0 );
-}
-
-////////////////////////////////////////////////
-int pthread_cond_signal( pthread_cond_t * cond )
-{
-    return hal_user_syscall( SYS_CONDVAR,
-                             (reg_t)cond,
-                             CONDVAR_SIGNAL,
-                             0, 0 );
-}
-
-///////////////////////////////////////////////////
-int pthread_cond_broadcast( pthread_cond_t * cond )
-{
-    return hal_user_syscall( SYS_CONDVAR,
-                             (reg_t)cond,
-                             CONDVAR_BROADCAST,
-                             0, 0 );
-}
-
-
-
+*/
 
 
