18 #ifndef __STARPU_THREAD_H__ 
   19 #define __STARPU_THREAD_H__ 
   23 #include <xbt/synchro_core.h> 
   24 #ifdef STARPU_HAVE_SIMGRID_MSG_H 
   25 #include <simgrid/msg.h> 
   29 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 
   44 typedef int starpu_pthread_t;
 
   45 typedef int starpu_pthread_attr_t;
 
   47 int starpu_pthread_create_on(
char *name, starpu_pthread_t *thread, 
const starpu_pthread_attr_t *attr, 
void *(*start_routine) (
void *), 
void *arg, msg_host_t host);
 
   48 int starpu_pthread_create(starpu_pthread_t *thread, 
const starpu_pthread_attr_t *attr, 
void *(*start_routine) (
void *), 
void *arg);
 
   54 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU)  
   56 typedef pthread_t starpu_pthread_t;
 
   57 typedef pthread_attr_t starpu_pthread_attr_t;
 
   59 #define starpu_pthread_create pthread_create 
   60 #define starpu_pthread_create_on(name, thread, attr, routine, arg, where) starpu_pthread_create(thread, attr, routine, arg) 
   61 #define starpu_pthread_join pthread_join 
   62 #define starpu_pthread_attr_init pthread_attr_init 
   63 #define starpu_pthread_attr_destroy pthread_attr_destroy 
   64 #define starpu_pthread_attr_setdetachstate pthread_attr_setdetachstate 
   73 typedef xbt_mutex_t starpu_pthread_mutex_t;
 
   74 typedef int starpu_pthread_mutexattr_t;
 
   76 #define STARPU_PTHREAD_MUTEX_INITIALIZER NULL 
   84 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU)  
   86 typedef pthread_mutex_t starpu_pthread_mutex_t;
 
   87 typedef pthread_mutexattr_t starpu_pthread_mutexattr_t;
 
   89 #define starpu_pthread_mutex_init pthread_mutex_init 
   90 #define starpu_pthread_mutex_destroy pthread_mutex_destroy 
   91 #define starpu_pthread_mutex_lock pthread_mutex_lock 
   92 #define starpu_pthread_mutex_unlock pthread_mutex_unlock 
   93 #define starpu_pthread_mutex_trylock pthread_mutex_trylock 
   95 #define STARPU_PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER 
  102 #ifdef STARPU_SIMGRID 
  104 typedef int starpu_pthread_key_t;
 
  110 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU)  
  112 typedef pthread_key_t starpu_pthread_key_t;
 
  114 #define starpu_pthread_key_create pthread_key_create 
  115 #define starpu_pthread_key_delete pthread_key_delete 
  116 #define starpu_pthread_setspecific pthread_setspecific 
  117 #define starpu_pthread_getspecific pthread_getspecific 
  125 #ifdef STARPU_SIMGRID 
  127 typedef xbt_cond_t starpu_pthread_cond_t;
 
  128 typedef int starpu_pthread_condattr_t;
 
  129 #define STARPU_PTHREAD_COND_INITIALIZER NULL 
  138 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU)  
  140 typedef pthread_cond_t starpu_pthread_cond_t;
 
  141 typedef pthread_condattr_t starpu_pthread_condattr_t;
 
  142 #define STARPU_PTHREAD_COND_INITIALIZER PTHREAD_COND_INITIALIZER 
  144 #define starpu_pthread_cond_init pthread_cond_init 
  145 #define starpu_pthread_cond_signal pthread_cond_signal 
  146 #define starpu_pthread_cond_broadcast pthread_cond_broadcast 
  147 #define starpu_pthread_cond_wait pthread_cond_wait 
  148 #define starpu_pthread_cond_timedwait pthread_cond_timedwait 
  149 #define starpu_pthread_cond_destroy pthread_cond_destroy 
  157 #ifdef STARPU_SIMGRID 
  159 typedef xbt_mutex_t starpu_pthread_rwlock_t;
 
  160 typedef int starpu_pthread_rwlockattr_t;
 
  165 int starpu_pthread_rwlock_tryrdlock(starpu_pthread_rwlock_t *rwlock);
 
  167 int starpu_pthread_rwlock_trywrlock(starpu_pthread_rwlock_t *rwlock);
 
  170 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU)  
  172 typedef pthread_rwlock_t starpu_pthread_rwlock_t;
 
  173 typedef pthread_rwlockattr_t starpu_pthread_rwlockattr_t;
 
  175 #define starpu_pthread_rwlock_init pthread_rwlock_init 
  176 #define starpu_pthread_rwlock_destroy pthread_rwlock_destroy 
  177 #define starpu_pthread_rwlock_rdlock pthread_rwlock_rdlock 
  178 #define starpu_pthread_rwlock_tryrdlock pthread_rwlock_tryrdlock 
  179 #define starpu_pthread_rwlock_wrlock pthread_rwlock_wrlock 
  180 #define starpu_pthread_rwlock_trywrlock pthread_rwlock_trywrlock 
  181 #define starpu_pthread_rwlock_unlock pthread_rwlock_unlock 
  189 #if defined(STARPU_SIMGRID) || (!defined(STARPU_HAVE_PTHREAD_BARRIER) && (!defined(_MSC_VER) || defined(BUILDING_STARPU))) 
  192         starpu_pthread_mutex_t mutex;
 
  193         starpu_pthread_cond_t cond;
 
  194         starpu_pthread_cond_t cond_destroy;
 
  199 typedef int starpu_pthread_barrierattr_t;
 
  200 #define STARPU_PTHREAD_BARRIER_SERIAL_THREAD -1 
  202 int starpu_pthread_barrier_init(
starpu_pthread_barrier_t *barrier, 
const starpu_pthread_barrierattr_t *attr, 
unsigned count);
 
  206 #elif !defined(_MSC_VER)  
  209 typedef pthread_barrierattr_t starpu_pthread_barrierattr_t;
 
  211 #define starpu_pthread_barrier_init pthread_barrier_init 
  212 #define starpu_pthread_barrier_destroy pthread_barrier_destroy 
  213 #define starpu_pthread_barrier_wait pthread_barrier_wait 
  214 #define STARPU_PTHREAD_BARRIER_SERIAL_THREAD PTHREAD_BARRIER_SERIAL_THREAD 
  218 #if defined(_MSC_VER) && !defined(BUILDING_STARPU) 
  219 typedef void* starpu_pthread_rwlock_t;
 
  220 typedef void* starpu_pthread_mutex_t;
 
  221 typedef void* starpu_pthread_cond_t;
 
  222 typedef void* starpu_pthread_barrier_t;