barrier
barrier_t barrier;
return (barrier.state);
(void) mutex_lock(&barrier.lock);
barrier.state = state;
barrier.wanted++;
while (barrier.thr_count != 0)
(void) cond_wait(&barrier.cv, &barrier.lock);
barrier.wanted--;
barrier.thr_count = -1;
if (barrier.thr_count == -1)
barrier.thr_count = 0;
if (barrier.wanted)
(void) cond_broadcast(&barrier.cv);
(void) mutex_unlock(&barrier.lock);
(void) mutex_lock(&barrier.lock);
barrier.wanted++;
while (barrier.state != RCMD_NORMAL)
(void) cond_wait(&barrier.cv, &barrier.lock);
barrier.wanted--;
barrier.thr_count++;
(void) mutex_unlock(&barrier.lock);
(void) mutex_lock(&barrier.lock);
barrier.last_update = time(NULL);
if (--barrier.thr_count == 0)
(void) cond_broadcast(&barrier.cv);
(void) mutex_unlock(&barrier.lock);
(void) mutex_lock(&barrier.lock);
(void) cond_broadcast(&barrier.cv);
(void) mutex_unlock(&barrier.lock);
(void) mutex_lock(&barrier.lock);
(void) cond_timedwait(&barrier.cv, &barrier.lock,
(void) cond_wait(&barrier.cv, &barrier.lock);
is_active = (barrier.thr_count || barrier.wanted ||
idletime = time(NULL) - barrier.last_update;
abstime.tv_sec = barrier.last_update + timeout;
(void) mutex_lock(&barrier.lock);
(void) cond_broadcast(&barrier.cv);
(void) mutex_unlock(&barrier.lock);
extern barrier_t barrier;
(void) mutex_lock(&barrier.lock);
(void) cond_wait(&barrier.cv, &barrier.lock);
(void) mutex_unlock(&barrier.lock);
barrier->__pthread_barrier_count = count;
barrier->__pthread_barrier_current = count;
barrier->__pthread_barrier_cycle = 0;
barrier->__pthread_barrier_reserved = 0;
if (((uintptr_t)barrier & (_LONG_LONG_ALIGNMENT - 1)) &&
pthread_barrier_destroy(pthread_barrier_t *barrier)
mutex_t *mp = (mutex_t *)&barrier->__pthread_barrier_lock;
cond_t *cvp = (cond_t *)&barrier->__pthread_barrier_cond;
(void) memset(barrier, -1, sizeof (*barrier));
pthread_barrier_wait(pthread_barrier_t *barrier)
mutex_t *mp = (mutex_t *)&barrier->__pthread_barrier_lock;
cond_t *cvp = (cond_t *)&barrier->__pthread_barrier_cond;
if (--barrier->__pthread_barrier_current == 0) {
barrier->__pthread_barrier_cycle++;
barrier->__pthread_barrier_current =
barrier->__pthread_barrier_count;
cycle = barrier->__pthread_barrier_cycle;
} while (cycle == barrier->__pthread_barrier_cycle);
pthread_barrier_init(pthread_barrier_t *barrier,
mutex_t *mp = (mutex_t *)&barrier->__pthread_barrier_lock;
cond_t *cvp = (cond_t *)&barrier->__pthread_barrier_cond;
rsm_barrier_handle_t barrier)
rsmgenbar_handle_t *bar = (rsmgenbar_handle_t *)barrier;
__rsm_memseg_import_open_barrier(rsm_barrier_handle_t barrier)
rsmgenbar_handle_t *bar = (rsmgenbar_handle_t *)barrier;
__rsm_memseg_import_order_barrier(rsm_barrier_handle_t barrier)
rsmgenbar_handle_t *bar = (rsmgenbar_handle_t *)barrier;
__rsm_memseg_import_close_barrier(rsm_barrier_handle_t barrier)
rsmgenbar_handle_t *bar = (rsmgenbar_handle_t *)barrier;
__rsm_memseg_import_destroy_barrier(rsm_barrier_handle_t barrier)
rsmgenbar_handle_t *bar = (rsmgenbar_handle_t *)barrier;
rsmapi_barrier_t *barrier)
if (!barrier) {
bar = (rsmbar_handle_t *)barrier;
seg->rsmseg_barrier = barrier; /* used in put/get fns */
type, (rsm_barrier_handle_t)barrier));
rsm_memseg_import_open_barrier(rsmapi_barrier_t *barrier)
rsmbar_handle_t *bar = (rsmbar_handle_t *)barrier;
(rsm_barrier_handle_t)barrier));
rsm_memseg_import_order_barrier(rsmapi_barrier_t *barrier)
rsmbar_handle_t *bar = (rsmbar_handle_t *)barrier;
(rsm_barrier_handle_t)barrier));
rsm_memseg_import_close_barrier(rsmapi_barrier_t *barrier)
rsmbar_handle_t *bar = (rsmbar_handle_t *)barrier;
(rsm_barrier_handle_t)barrier));
rsm_memseg_import_destroy_barrier(rsmapi_barrier_t *barrier)
rsmbar_handle_t *bar = (rsmbar_handle_t *)barrier;
((rsm_barrier_handle_t)barrier));
rsm_barrier_handle_t barrier)
type = type; im_memseg = im_memseg; barrier = barrier;
loopback_open_barrier(rsm_barrier_handle_t barrier)
barrier = barrier;
loopback_order_barrier(rsm_barrier_handle_t barrier)
barrier = barrier;
loopback_close_barrier(rsm_barrier_handle_t barrier)
barrier = barrier;
loopback_destroy_barrier(rsm_barrier_handle_t barrier)
barrier = barrier;
rsmapi_barrier_t *barrier);
int rsm_memseg_import_open_barrier(rsmapi_barrier_t *barrier);
int rsm_memseg_import_close_barrier(rsmapi_barrier_t *barrier);
int rsm_memseg_import_order_barrier(rsmapi_barrier_t *barrier);
int rsm_memseg_import_destroy_barrier(rsmapi_barrier_t *barrier);
rsm_barrier_handle_t barrier);
int (* rsm_memseg_import_open_barrier)(rsm_barrier_handle_t barrier);
int (* rsm_memseg_import_order_barrier)(rsm_barrier_handle_t barrier);
int (* rsm_memseg_import_close_barrier)(rsm_barrier_handle_t barrier);
int (* rsm_memseg_import_destroy_barrier)(rsm_barrier_handle_t barrier);
barrier();
barrier();
barrier();
barrier(); \
barrier(); \
barrier(); \
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
(rsm_barrier_t *barrier);
(rsm_barrier_t *barrier);
(rsm_barrier_t *barrier);
rsm_barrier_t *barrier);
#define RSM_OPEN_BARRIER_REGION(controller, region, barrier) \
((region), (barrier))
#define RSM_OPEN_BARRIER_REGIONS(controller, regions, num_regions, barrier) \
((regions), (num_regions), (barrier))
#define RSM_OPEN_BARRIER_NODE(controller, addr, barrier) \
((controller).handle, (addr), (barrier))
#define RSM_OPEN_BARRIER_CTRL(controller, barrier) \
((controller).handle, (barrier))
#define RSM_OPEN_BARRIER_REGION_THR(controller, region, barrier) \
((region), (barrier))
#define RSM_OPEN_BARRIER_REGIONS_THR(controller, regions, num_regions, barrier)\
((regions), (num_regions), (barrier))
#define RSM_OPEN_BARRIER_NODE_THR(controller, addr, barrier) \
((controller).handle, (addr), (barrier))
#define RSM_OPEN_BARRIER_CTRL_THR(controller, barrier) \
((controller).handle, (barrier));
#define RSM_CLOSE_BARRIER(controller, barrier) \
((barrier))
#define RSM_REOPEN_BARRIER(controller, barrier) \
((barrier));
#define RSM_ORDER_BARRIER(controller, barrier) \
((barrier))
#define RSM_SEND(controller, iq, is, barrier) \
((iq), (is), (barrier))
char *barrier;
e = xenbus_read(xbt, xsnode, "feature-barrier", (void **)&barrier,
kmem_free(barrier, len);