@@ -103,7 +103,7 @@ int pmix1_client_init(void)
103103 }
104104
105105 /* store our jobid and rank */
106- if (NULL != getenv (OPAL_MCA_PREFIX "orte_launch" )) {
106+ if (NULL != getenv (OPAL_MCA_PREFIX "orte_launch" )) {
107107 /* if we were launched by the OMPI RTE, then
108108 * the jobid is in a special format - so get it */
109109 native_launch = true;
@@ -196,6 +196,44 @@ int pmix1_abort(int flag, const char *msg,
196196 return pmix1_convert_rc (rc );
197197}
198198
199+ int pmix1_store_local (const opal_process_name_t * proc , opal_value_t * val )
200+ {
201+ pmix_value_t kv ;
202+ pmix_status_t rc ;
203+ pmix_proc_t p ;
204+ opal_pmix1_jobid_trkr_t * job ;
205+
206+ if (NULL != proc ) {
207+ /* if the jobid is my own, then we can just use
208+ * my namespace */
209+ if (OPAL_PROC_MY_NAME .jobid == proc -> jobid ) {
210+ (void )strncpy (p .nspace , my_proc .nspace , PMIX_MAX_NSLEN );
211+ } else {
212+ /* look thru our list of jobids and find the
213+ * corresponding nspace */
214+ OPAL_LIST_FOREACH (job , & jobids , opal_pmix1_jobid_trkr_t ) {
215+ if (job -> jobid == proc -> jobid ) {
216+ (void )strncpy (p .nspace , job -> nspace , PMIX_MAX_NSLEN );
217+ break ;
218+ }
219+ }
220+ }
221+ p .rank = proc -> vpid ;
222+ } else {
223+ /* use our name */
224+ (void )strncpy (p .nspace , my_proc .nspace , PMIX_MAX_NSLEN );
225+ p .rank = OPAL_PROC_MY_NAME .vpid ;
226+ }
227+
228+ PMIX_VALUE_CONSTRUCT (& kv );
229+ pmix1_value_load (& kv , val );
230+
231+ rc = PMIx_Store_internal (& p , val -> key , & kv );
232+ PMIX_VALUE_DESTRUCT (& kv );
233+
234+ return pmix1_convert_rc (rc );
235+ }
236+
199237int pmix1_commit (void )
200238{
201239 pmix_status_t rc ;
0 commit comments