static void opal_lkupcbfunc(int status, opal_list_t *data, void *cbdata) { pmix1_opalcaddy_t *opalcaddy = (pmix1_opalcaddy_t*)cbdata; pmix_status_t rc; pmix_pdata_t *d=NULL; size_t nd=0, n; opal_pmix_pdata_t *p; if (NULL != opalcaddy->lkupcbfunc) { rc = pmix1_convert_opalrc(status); /* convert any returned data */ if (NULL != data) { nd = opal_list_get_size(data); PMIX_PDATA_CREATE(d, nd); n=0; OPAL_LIST_FOREACH(p, data, opal_pmix_pdata_t) { /* convert the jobid */ (void)opal_snprintf_jobid(d[n].proc.nspace, PMIX_MAX_NSLEN, p->proc.jobid); d[n].proc.rank = p->proc.vpid; (void)strncpy(d[n].key, p->value.key, PMIX_MAX_KEYLEN); pmix1_value_load(&d[n].value, &p->value); }
int pmix1_store_local(const opal_process_name_t *proc, opal_value_t *val) { pmix_value_t kv; pmix_status_t rc; pmix_proc_t p; if (NULL != proc) { /* convert the process jobid */ (void)strncpy(p.nspace, opal_convert_jobid_to_string(proc->jobid), PMIX_MAX_NSLEN); p.rank = proc->vpid; } else { /* use our name */ (void)strncpy(p.nspace, opal_convert_jobid_to_string(OPAL_PROC_MY_NAME.jobid), PMIX_MAX_NSLEN); p.rank = OPAL_PROC_MY_NAME.vpid; } PMIX_VALUE_CONSTRUCT(&kv); pmix1_value_load(&kv, val); rc = PMIx_Store_internal(&p, val->key, &kv); PMIX_VALUE_DESTRUCT(&kv); return pmix1_convert_rc(rc); }
int pmix1_server_init(opal_pmix_server_module_t *module, opal_list_t *info) { pmix_status_t rc; int dbg; opal_value_t *kv; pmix_info_t *pinfo; size_t sz, n; if (0 < (dbg = opal_output_get_verbosity(opal_pmix_base_framework.framework_output))) { asprintf(&dbgvalue, "PMIX_DEBUG=%d", dbg); putenv(dbgvalue); } /* convert the list to an array of pmix_info_t */ if (NULL != info) { sz = opal_list_get_size(info); PMIX_INFO_CREATE(pinfo, sz); n = 0; OPAL_LIST_FOREACH(kv, info, opal_value_t) { (void)strncpy(pinfo[n].key, kv->key, PMIX_MAX_KEYLEN); pmix1_value_load(&pinfo[n].value, kv); ++n; }