static void op_cbfunc(pmix_status_t status, void *cbdata) { pmix_cb_t *cb = (pmix_cb_t*)cbdata; cb->status = status; PMIX_WAKEUP_THREAD(&cb->lock); }
static void lookup_cbfunc(pmix_status_t status, pmix_pdata_t pdata[], size_t ndata, void *cbdata) { pmix_cb_t *cb = (pmix_cb_t*)cbdata; pmix_pdata_t *tgt = (pmix_pdata_t*)cb->cbdata; size_t i, j; PMIX_ACQUIRE_OBJECT(cb); cb->status = status; if (PMIX_SUCCESS == status) { /* find the matching key in the provided info array - error if not found */ for (i=0; i < ndata; i++) { for (j=0; j < cb->nvals; j++) { if (0 == strcmp(pdata[i].key, tgt[j].key)) { /* transfer the publishing proc id */ (void)strncpy(tgt[j].proc.nspace, pdata[i].proc.nspace, PMIX_MAX_NSLEN); tgt[j].proc.rank = pdata[i].proc.rank; /* transfer the value to the pmix_info_t */ PMIX_BFROPS_VALUE_XFER(cb->status, pmix_client_globals.myserver, &tgt[j].value, &pdata[i].value); break; } } } } PMIX_POST_OBJECT(cb); PMIX_WAKEUP_THREAD(&cb->lock); }
static void acb(pmix_status_t status, pmix_info_t *info, size_t ninfo, void *cbdata, pmix_release_cbfunc_t release_fn, void *release_cbdata) { pmix_cb_t *cb = (pmix_cb_t*)cbdata; cb->status = status; if (NULL != release_fn) { release_fn(release_cbdata); } PMIX_WAKEUP_THREAD(&cb->lock); }
static void timeout(int sd, short args, void *cbdata) { pmix_lock_t *lock = (pmix_lock_t*)cbdata; PMIX_WAKEUP_THREAD(lock); }