19 #ifndef __STARPU_THREAD_H__ 20 #define __STARPU_THREAD_H__ 25 #ifdef STARPU_HAVE_XBT_SYNCHRO_H 26 #include <xbt/synchro.h> 28 #include <xbt/synchro_core.h> 30 #ifdef STARPU_HAVE_SIMGRID_MSG_H 31 #include <simgrid/msg.h> 35 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 51 typedef msg_process_t starpu_pthread_t;
52 typedef int starpu_pthread_attr_t;
54 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);
55 int starpu_pthread_create(starpu_pthread_t *thread,
const starpu_pthread_attr_t *attr,
void *(*start_routine) (
void *),
void *arg);
62 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 64 typedef pthread_t starpu_pthread_t;
65 typedef pthread_attr_t starpu_pthread_attr_t;
67 #define starpu_pthread_create pthread_create 68 #define starpu_pthread_create_on(name, thread, attr, routine, arg, where) starpu_pthread_create(thread, attr, routine, arg) 69 #define starpu_pthread_join pthread_join 70 #define starpu_pthread_exit pthread_exit 71 #define starpu_pthread_attr_init pthread_attr_init 72 #define starpu_pthread_attr_destroy pthread_attr_destroy 73 #define starpu_pthread_attr_setdetachstate pthread_attr_setdetachstate 77 #ifdef STARPU_HAVE_PTHREAD_SETNAME_NP 78 #ifdef STARPU_HAVE_DARWIN 79 #define starpu_pthread_setname(name) pthread_setname_np(name) 81 #define starpu_pthread_setname(name) pthread_setname_np(pthread_self(), name) 84 #define starpu_pthread_setname(name) 92 typedef xbt_mutex_t starpu_pthread_mutex_t;
93 typedef int starpu_pthread_mutexattr_t;
95 #define STARPU_PTHREAD_MUTEX_INITIALIZER NULL 107 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 109 typedef pthread_mutex_t starpu_pthread_mutex_t;
110 typedef pthread_mutexattr_t starpu_pthread_mutexattr_t;
112 #define starpu_pthread_mutex_init pthread_mutex_init 113 #define starpu_pthread_mutex_destroy pthread_mutex_destroy 114 #define starpu_pthread_mutexattr_gettype pthread_mutexattr_gettype 115 #define starpu_pthread_mutexattr_settype pthread_mutexattr_settype 116 #define starpu_pthread_mutexattr_destroy pthread_mutexattr_destroy 117 #define starpu_pthread_mutexattr_init pthread_mutexattr_init 119 #ifdef STARPU_FXT_LOCK_TRACES 124 #define starpu_pthread_mutex_lock pthread_mutex_lock 125 #define starpu_pthread_mutex_unlock pthread_mutex_unlock 126 #define starpu_pthread_mutex_trylock pthread_mutex_trylock 129 #define STARPU_PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER 133 #if !defined(_MSC_VER) || defined(BUILDING_STARPU) 134 int starpu_pthread_mutex_lock_sched(starpu_pthread_mutex_t *mutex);
135 int starpu_pthread_mutex_unlock_sched(starpu_pthread_mutex_t *mutex);
136 int starpu_pthread_mutex_trylock_sched(starpu_pthread_mutex_t *mutex);
137 void starpu_pthread_mutex_check_sched(starpu_pthread_mutex_t *mutex,
char *file,
int line);
143 #ifdef STARPU_SIMGRID 145 typedef int starpu_pthread_key_t;
151 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 153 typedef pthread_key_t starpu_pthread_key_t;
155 #define starpu_pthread_key_create pthread_key_create 156 #define starpu_pthread_key_delete pthread_key_delete 157 #define starpu_pthread_setspecific pthread_setspecific 158 #define starpu_pthread_getspecific pthread_getspecific 166 #ifdef STARPU_SIMGRID 168 typedef xbt_cond_t starpu_pthread_cond_t;
169 typedef int starpu_pthread_condattr_t;
170 #define STARPU_PTHREAD_COND_INITIALIZER NULL 179 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 181 typedef pthread_cond_t starpu_pthread_cond_t;
182 typedef pthread_condattr_t starpu_pthread_condattr_t;
183 #define STARPU_PTHREAD_COND_INITIALIZER PTHREAD_COND_INITIALIZER 185 #define starpu_pthread_cond_init pthread_cond_init 186 #define starpu_pthread_cond_signal pthread_cond_signal 187 #define starpu_pthread_cond_broadcast pthread_cond_broadcast 189 #ifdef STARPU_FXT_LOCK_TRACES 192 #define starpu_pthread_cond_wait pthread_cond_wait 195 #define starpu_pthread_cond_timedwait pthread_cond_timedwait 196 #define starpu_pthread_cond_destroy pthread_cond_destroy 204 #ifdef STARPU_SIMGRID 206 typedef xbt_mutex_t starpu_pthread_rwlock_t;
207 typedef int starpu_pthread_rwlockattr_t;
217 #elif !defined(_MSC_VER) || defined(BUILDING_STARPU) 219 typedef pthread_rwlock_t starpu_pthread_rwlock_t;
220 typedef pthread_rwlockattr_t starpu_pthread_rwlockattr_t;
222 #define starpu_pthread_rwlock_init pthread_rwlock_init 223 #define starpu_pthread_rwlock_destroy pthread_rwlock_destroy 225 #ifdef STARPU_FXT_LOCK_TRACES 232 #define starpu_pthread_rwlock_rdlock pthread_rwlock_rdlock 233 #define starpu_pthread_rwlock_tryrdlock pthread_rwlock_tryrdlock 234 #define starpu_pthread_rwlock_wrlock pthread_rwlock_wrlock 235 #define starpu_pthread_rwlock_trywrlock pthread_rwlock_trywrlock 236 #define starpu_pthread_rwlock_unlock pthread_rwlock_unlock 245 #if defined(STARPU_SIMGRID) || (!defined(STARPU_HAVE_PTHREAD_BARRIER) && (!defined(_MSC_VER) || defined(BUILDING_STARPU))) 247 #if defined(STARPU_SIMGRID) && (defined(STARPU_SIMGRID_HAVE_XBT_BARRIER_INIT) || defined(xbt_barrier_init)) 249 typedef int starpu_pthread_barrierattr_t;
250 #define STARPU_PTHREAD_BARRIER_SERIAL_THREAD XBT_BARRIER_SERIAL_PROCESS 253 starpu_pthread_mutex_t mutex;
254 starpu_pthread_cond_t cond;
255 starpu_pthread_cond_t cond_destroy;
259 } starpu_pthread_barrier_t;
260 typedef int starpu_pthread_barrierattr_t;
261 #define STARPU_PTHREAD_BARRIER_SERIAL_THREAD -1 268 #elif !defined(_MSC_VER) 270 typedef pthread_barrier_t starpu_pthread_barrier_t;
271 typedef pthread_barrierattr_t starpu_pthread_barrierattr_t;
273 #define starpu_pthread_barrier_init pthread_barrier_init 274 #define starpu_pthread_barrier_destroy pthread_barrier_destroy 276 #ifdef STARPU_FXT_LOCK_TRACES 279 #define starpu_pthread_barrier_wait pthread_barrier_wait 281 #define STARPU_PTHREAD_BARRIER_SERIAL_THREAD PTHREAD_BARRIER_SERIAL_THREAD 289 #if defined(STARPU_SIMGRID) || (defined(STARPU_LINUX_SYS) && defined(STARPU_HAVE_XCHG)) || !defined(STARPU_HAVE_PTHREAD_SPIN_LOCK) 293 #ifdef STARPU_SIMGRID 295 #elif defined(STARPU_LINUX_SYS) && defined(STARPU_HAVE_XCHG) 308 #elif !defined(_MSC_VER) 311 #define starpu_pthread_spin_init pthread_spin_init 312 #define starpu_pthread_spin_destroy pthread_spin_destroy 313 #define starpu_pthread_spin_lock pthread_spin_lock 314 #define starpu_pthread_spin_trylock pthread_spin_trylock 315 #define starpu_pthread_spin_unlock pthread_spin_unlock 323 #if defined(_MSC_VER) && !defined(BUILDING_STARPU) 324 typedef void* starpu_pthread_rwlock_t;
325 typedef void* starpu_pthread_mutex_t;
326 typedef void* starpu_pthread_cond_t;
327 typedef void* starpu_pthread_barrier_t;
int starpu_pthread_spin_trylock(starpu_pthread_spinlock_t *lock)
int starpu_pthread_cond_wait(starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex)
int starpu_pthread_barrier_wait(starpu_pthread_barrier_t *barrier)
void * starpu_pthread_getspecific(starpu_pthread_key_t key)
int starpu_pthread_mutexattr_destroy(starpu_pthread_mutexattr_t *attr)
int starpu_pthread_spin_unlock(starpu_pthread_spinlock_t *lock)
int starpu_pthread_mutex_unlock(starpu_pthread_mutex_t *mutex)
int starpu_pthread_spin_lock(starpu_pthread_spinlock_t *lock)
int starpu_pthread_barrier_destroy(starpu_pthread_barrier_t *barrier)
int starpu_pthread_attr_destroy(starpu_pthread_attr_t *attr)
int starpu_pthread_mutexattr_init(starpu_pthread_mutexattr_t *attr)
int starpu_pthread_setspecific(starpu_pthread_key_t key, const void *pointer)
int starpu_pthread_exit(void *retval) STARPU_ATTRIBUTE_NORETURN
int starpu_pthread_spin_init(starpu_pthread_spinlock_t *lock, int pshared)
int starpu_pthread_barrier_init(starpu_pthread_barrier_t *barrier, const starpu_pthread_barrierattr_t *attr, unsigned count)
int starpu_pthread_cond_destroy(starpu_pthread_cond_t *cond)
int starpu_pthread_mutex_destroy(starpu_pthread_mutex_t *mutex)
int starpu_pthread_cond_broadcast(starpu_pthread_cond_t *cond)
int starpu_pthread_mutexattr_gettype(const starpu_pthread_mutexattr_t *attr, int *type)
int starpu_pthread_cond_timedwait(starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex, const struct timespec *abstime)
Definition: starpu_thread.h:291
int starpu_pthread_rwlock_rdlock(starpu_pthread_rwlock_t *rwlock)
int starpu_pthread_rwlock_unlock(starpu_pthread_rwlock_t *rwlock)
Definition: starpu_thread.h:252
int starpu_pthread_rwlock_wrlock(starpu_pthread_rwlock_t *rwlock)
int starpu_pthread_mutexattr_settype(starpu_pthread_mutexattr_t *attr, int type)
int starpu_pthread_rwlock_init(starpu_pthread_rwlock_t *rwlock, const starpu_pthread_rwlockattr_t *attr)
int starpu_pthread_join(starpu_pthread_t thread, void **retval)
int starpu_pthread_mutex_init(starpu_pthread_mutex_t *mutex, const starpu_pthread_mutexattr_t *mutexattr)
int starpu_pthread_key_delete(starpu_pthread_key_t key)
int starpu_pthread_rwlock_destroy(starpu_pthread_rwlock_t *rwlock)
int starpu_pthread_cond_init(starpu_pthread_cond_t *cond, starpu_pthread_condattr_t *cond_attr)
int starpu_pthread_rwlock_trywrlock(starpu_pthread_rwlock_t *rwlock)
int starpu_pthread_create(starpu_pthread_t *thread, const starpu_pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)
int starpu_pthread_attr_init(starpu_pthread_attr_t *attr)
int starpu_pthread_attr_setdetachstate(starpu_pthread_attr_t *attr, int detachstate)
int starpu_pthread_rwlock_tryrdlock(starpu_pthread_rwlock_t *rwlock)
int starpu_pthread_mutex_lock(starpu_pthread_mutex_t *mutex)
int starpu_pthread_spin_destroy(starpu_pthread_spinlock_t *lock)
int starpu_pthread_cond_signal(starpu_pthread_cond_t *cond)
int starpu_pthread_mutex_trylock(starpu_pthread_mutex_t *mutex)
int starpu_pthread_key_create(starpu_pthread_key_t *key, void(*destr_function)(void *))