22# error "Cannot include this file directly. Please include <pioman.h>."
32#if defined(PIOMAN_SIMGRID)
34#elif defined(PIOMAN_MARCEL)
36#elif defined(PIOMAN_PTHREAD)
38#elif defined(PIOMAN_ABT)
40#elif defined(PIOMAN_NOTHREAD)
43# error "no lock defined"
51#if defined(PIOMAN_MULTITHREAD)
63 struct piom_waitsem_s*p_waitsem;
72#ifdef PIOMAN_MULTITHREAD
77 __sync_fetch_and_or(&cond->value, mask);
92 struct piom_waitsem_s*p_waitsem = cond->p_waitsem;
94 __sync_fetch_and_or(&cond->value, mask);
104 return cond->value & mask;
120 cond->value = initial;
121 cond->p_waitsem = NULL;
134 __sync_fetch_and_and(&cond->value, ~mask);
147 while(!(*cond & mask))
153 for(i = 0; i < n; i++)
155 if(pp_conds[i] != NULL)
static piom_cond_value_t piom_cond_test(const piom_cond_t *cond, piom_cond_value_t mask)
static void piom_cond_add(piom_cond_t *cond, piom_cond_value_t mask)
static void piom_cond_wait_all(void **pp_conds, int n, uintptr_t offset, piom_cond_value_t mask)
static void piom_cond_init(piom_cond_t *cond, piom_cond_value_t initial)
piom_cond_value_t piom_cond_t
static void piom_cond_signal(piom_cond_t *cond, piom_cond_value_t mask)
static void piom_cond_mask(piom_cond_t *cond, piom_cond_value_t mask)
uint32_t piom_cond_value_t
value (bitmask) of cond
static void piom_cond_wait(piom_cond_t *cond, piom_cond_value_t mask)
static piom_cond_value_t piom_cond_test_locked(piom_cond_t *cond, piom_cond_value_t mask)
static void piom_cond_destroy(piom_cond_t *cond)
void piom_ltask_schedule(int point)
Schedule tasks from local or all queues (depending on 'point')
#define PIOM_POLL_POINT_BUSY
poll in a busy wait
#define piom_spin_unlock(lock)
#define piom_spin_lock(lock)
#define piom_spin_init(lock)
static void piom_sem_V(piom_sem_t *sem)
ABT_mutex piom_spinlock_t
#define piom_spin_destroy(lock)