+VG_STATIC int vg_semaphore_init( vg_semaphore *sem, u32 value )
+{
+ return !sem_init( sem, 0, value );
+}
+
+VG_STATIC int vg_semaphore_trywait( vg_semaphore *sem )
+{
+ return !sem_trywait( sem );
+}
+
+VG_STATIC int vg_semaphore_wait( vg_semaphore *sem )
+{
+ return !sem_wait( sem );
+}
+
+VG_STATIC int vg_semaphore_post( vg_semaphore *sem )
+{
+ return !sem_post( sem );
+}
+
+VG_STATIC void vg_semaphore_free( vg_semaphore *sem )
+{
+ sem_destroy( sem );
+}
+
+VG_STATIC int vg_mutex_init( vg_mutex *mutex )
+{
+ memset( mutex, 0, sizeof(vg_mutex) );
+ return 1;
+}
+
+VG_STATIC int vg_mutex_lock( vg_mutex *mutex )
+{
+ if( !pthread_mutex_lock( mutex ) )
+ return 1;
+ else
+ return 0;
+}
+
+VG_STATIC int vg_mutex_unlock( vg_mutex *mutex )
+{
+ if( !pthread_mutex_unlock( mutex ) )
+ return 1;
+ else
+ return 0;
+}
+
+VG_STATIC void vg_mutex_free( vg_mutex *mutex )
+{
+
+}
+
+VG_STATIC void vg_sleep_ms( long msec )