[mpich2-commits] r5443 - in mpich2/trunk/src/pm/hydra: include pm/pmiserv utils/env

balaji at mcs.anl.gov balaji at mcs.anl.gov
Sat Oct 10 23:19:18 CDT 2009


Author: balaji
Date: 2009-10-10 23:19:18 -0500 (Sat, 10 Oct 2009)
New Revision: 5443

Modified:
   mpich2/trunk/src/pm/hydra/include/hydra_utils.h
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c
   mpich2/trunk/src/pm/hydra/utils/env/env.c
Log:
Some more cleanup to the environment utilities.


Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-10-11 01:12:37 UTC (rev 5442)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-10-11 04:19:18 UTC (rev 5443)
@@ -141,15 +141,14 @@
 
 
 /* env */
-HYD_Env_t *HYDU_str_to_env(char *str);
-HYD_Env_t *HYDU_str_pair_to_env(const char *env_name, const char *env_value);
-HYD_Status HYDU_list_append_env_to_str(HYD_Env_t * env_list, char **str_list);
+HYD_Status HYDU_env_to_str(HYD_Env_t * env, char **str);
+HYD_Status HYDU_str_to_env(char *str, HYD_Env_t **env);
 HYD_Status HYDU_list_inherited_env(HYD_Env_t ** env_list);
 HYD_Env_t *HYDU_env_list_dup(HYD_Env_t * env);
 HYD_Status HYDU_env_create(HYD_Env_t ** env, const char *env_name, char *env_value);
 HYD_Status HYDU_env_free(HYD_Env_t * env);
 HYD_Status HYDU_env_free_list(HYD_Env_t * env);
-HYD_Env_t *HYDU_env_lookup(HYD_Env_t env, HYD_Env_t * env_list);
+HYD_Env_t *HYDU_env_lookup(char *env_name, HYD_Env_t * env_list);
 HYD_Status HYDU_append_env_to_list(HYD_Env_t env, HYD_Env_t ** env_list);
 HYD_Status HYDU_putenv(HYD_Env_t * env, HYD_Env_overwrite_t overwrite);
 HYD_Status HYDU_putenv_list(HYD_Env_t * env_list, HYD_Env_overwrite_t overwrite);

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c	2009-10-11 01:12:37 UTC (rev 5442)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c	2009-10-11 04:19:18 UTC (rev 5443)
@@ -162,7 +162,8 @@
                     str++;
                     str[strlen(str) - 1] = 0;
                 }
-                env = HYDU_str_to_env(str);
+                status = HYDU_str_to_env(str, &env);
+                HYDU_ERR_POP(status, "error converting string to env\n");
 
                 if (!strcmp(argtype, "--global-inherited-env"))
                     HYDU_append_env_to_list(*env,
@@ -267,7 +268,8 @@
                     str++;
                     str[strlen(str) - 1] = 0;
                 }
-                env = HYDU_str_to_env(str);
+                status = HYDU_str_to_env(str, &env);
+                HYDU_ERR_POP(status, "error converting string to env\n");
                 HYDU_append_env_to_list(*env, &exec->user_env);
                 HYDU_FREE(env);
             }
@@ -586,11 +588,9 @@
 
     if (HYD_PMCD_pmi_proxy_params.ckpoint_restart) {
 
-        env = HYDU_str_pair_to_env("PMI_PORT", HYD_PMCD_pmi_proxy_params.pmi_port_str);
-        if (env == NULL)
-            HYDU_ERR_POP(status, "unable to create env\n");
+        status = HYDU_env_create(&env, "PMI_PORT", HYD_PMCD_pmi_proxy_params.pmi_port_str);
+        HYDU_ERR_POP(status, "unable to create env\n");
 
-
         /* Restart the partition.  Specify stdin fd only if pmi_id 0 is in this partition. */
         status = HYDU_ckpoint_restart(env, HYD_PMCD_pmi_proxy_params.exec_proc_count,
                                       pmi_ids,
@@ -632,8 +632,7 @@
 
             envstr = strtok(list, ",");
             while (envstr) {
-                for (env = HYD_PMCD_pmi_proxy_params.global_env.inherited;
-                     env && strcmp(env->env_name, envstr); env = env->next);
+                env = HYDU_env_lookup(envstr, HYD_PMCD_pmi_proxy_params.global_env.inherited);
                 if (env) {
                     status = HYDU_append_env_to_list(*env, &prop_env);
                     HYDU_ERR_POP(status, "unable to add env to list\n");
@@ -663,9 +662,8 @@
         /* Set the PMI port string to connect to. We currently just
          * use the global PMI port. */
         if (HYD_PMCD_pmi_proxy_params.pmi_port_str) {
-            env = HYDU_str_pair_to_env("PMI_PORT", HYD_PMCD_pmi_proxy_params.pmi_port_str);
-            if (env == NULL)
-                HYDU_ERR_POP(status, "unable to create env\n");
+            status = HYDU_env_create(&env, "PMI_PORT", HYD_PMCD_pmi_proxy_params.pmi_port_str);
+            HYDU_ERR_POP(status, "unable to create env\n");
 
             status = HYDU_append_env_to_list(*env, &prop_env);
             HYDU_ERR_POP(status, "unable to add env to list\n");

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c	2009-10-11 01:12:37 UTC (rev 5442)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_serv_launch.c	2009-10-11 04:19:18 UTC (rev 5443)
@@ -282,25 +282,34 @@
         partition->base->exec_args[arg++] = HYDU_strdup("--global-inherited-env");
         for (i = 0, env = HYD_handle.global_env.inherited; env; env = env->next, i++);
         partition->base->exec_args[arg++] = HYDU_int_to_str(i);
+
+        for (env = HYD_handle.global_env.inherited; env; env = env->next) {
+            status = HYDU_env_to_str(env, &partition->base->exec_args[arg++]);
+            HYDU_ERR_POP(status, "error converting env to string\n");
+        }
         partition->base->exec_args[arg++] = NULL;
-        HYDU_list_append_env_to_str(HYD_handle.global_env.inherited,
-                                    partition->base->exec_args);
 
         arg = HYDU_strlist_lastidx(partition->base->exec_args);
         partition->base->exec_args[arg++] = HYDU_strdup("--global-user-env");
         for (i = 0, env = HYD_handle.global_env.user; env; env = env->next, i++);
         partition->base->exec_args[arg++] = HYDU_int_to_str(i);
+
+        for (env = HYD_handle.global_env.user; env; env = env->next) {
+            status = HYDU_env_to_str(env, &partition->base->exec_args[arg++]);
+            HYDU_ERR_POP(status, "error converting env to string\n");
+        }
         partition->base->exec_args[arg++] = NULL;
-        HYDU_list_append_env_to_str(HYD_handle.global_env.user,
-                                    partition->base->exec_args);
 
         arg = HYDU_strlist_lastidx(partition->base->exec_args);
         partition->base->exec_args[arg++] = HYDU_strdup("--global-system-env");
         for (i = 0, env = HYD_handle.global_env.system; env; env = env->next, i++);
         partition->base->exec_args[arg++] = HYDU_int_to_str(i);
+
+        for (env = HYD_handle.global_env.system; env; env = env->next) {
+            status = HYDU_env_to_str(env, &partition->base->exec_args[arg++]);
+            HYDU_ERR_POP(status, "error converting env to string\n");
+        }
         partition->base->exec_args[arg++] = NULL;
-        HYDU_list_append_env_to_str(HYD_handle.global_env.system,
-                                    partition->base->exec_args);
 
         arg = HYDU_strlist_lastidx(partition->base->exec_args);
         partition->base->exec_args[arg++] = HYDU_strdup("--genv-prop");
@@ -331,8 +340,12 @@
             partition->base->exec_args[arg++] = HYDU_strdup("--exec-local-env");
             for (i = 0, env = exec->user_env; env; env = env->next, i++);
             partition->base->exec_args[arg++] = HYDU_int_to_str(i);
+
+            for (env = exec->user_env; env; env = env->next) {
+                status = HYDU_env_to_str(env, &partition->base->exec_args[arg++]);
+                HYDU_ERR_POP(status, "error converting env to string\n");
+            }
             partition->base->exec_args[arg++] = NULL;
-            HYDU_list_append_env_to_str(exec->user_env, partition->base->exec_args);
 
             arg = HYDU_strlist_lastidx(partition->base->exec_args);
             partition->base->exec_args[arg++] = HYDU_strdup("--exec-env-prop");

Modified: mpich2/trunk/src/pm/hydra/utils/env/env.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/env/env.c	2009-10-11 01:12:37 UTC (rev 5442)
+++ mpich2/trunk/src/pm/hydra/utils/env/env.c	2009-10-11 04:19:18 UTC (rev 5443)
@@ -6,7 +6,7 @@
 
 #include "hydra_utils.h"
 
-static HYD_Status env_to_str(HYD_Env_t * env, char **str)
+HYD_Status HYDU_env_to_str(HYD_Env_t * env, char **str)
 {
     int i;
     char *tmp[HYD_NUM_TMP_STRINGS];
@@ -37,108 +37,57 @@
 }
 
 
-static HYD_Env_t *env_dup(HYD_Env_t env)
+HYD_Status HYDU_str_to_env(char *str, HYD_Env_t **env)
 {
-    HYD_Env_t *tenv;
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    HYDU_MALLOC(tenv, HYD_Env_t *, sizeof(HYD_Env_t), status);
-    memcpy(tenv, &env, sizeof(HYD_Env_t));
-    tenv->next = NULL;
-    tenv->env_name = HYDU_strdup(env.env_name);
-    tenv->env_value = env.env_value ? HYDU_strdup(env.env_value) : NULL;
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return tenv;
-
-  fn_fail:
-    if (tenv)
-        HYDU_FREE(tenv);
-    tenv = NULL;
-    goto fn_exit;
-}
-
-
-HYD_Env_t *HYDU_str_to_env(char *str)
-{
-    HYD_Env_t *env;
     char *env_name, *env_value;
     HYD_Status status = HYD_SUCCESS;
 
     HYDU_FUNC_ENTER();
 
-    HYDU_MALLOC(env, HYD_Env_t *, sizeof(HYD_Env_t), status);
+    HYDU_MALLOC((*env), HYD_Env_t *, sizeof(HYD_Env_t), status);
     env_name = strtok(str, "=");
     env_value = strtok(NULL, "=");
-    env->env_name = HYDU_strdup(env_name);
-    env->env_value = env_value ? HYDU_strdup(env_value) : NULL;
-    env->next = NULL;
+    (*env)->env_name = HYDU_strdup(env_name);
+    (*env)->env_value = env_value ? HYDU_strdup(env_value) : NULL;
+    (*env)->next = NULL;
 
   fn_exit:
     HYDU_FUNC_EXIT();
-    return env;
+    return status;
 
   fn_fail:
-    if (env)
-        HYDU_FREE(env);
-    env = NULL;
+    if (*env)
+        HYDU_FREE(*env);
+    *env = NULL;
     goto fn_exit;
 }
 
 
-HYD_Env_t *HYDU_str_pair_to_env(const char *env_name, const char *env_value)
+static HYD_Env_t *env_dup(HYD_Env_t env)
 {
-    HYD_Env_t *env;
+    HYD_Env_t *tenv;
     HYD_Status status = HYD_SUCCESS;
 
     HYDU_FUNC_ENTER();
 
-    HYDU_MALLOC(env, HYD_Env_t *, sizeof(HYD_Env_t), status);
-    env->env_name = HYDU_strdup(env_name);
-    env->env_value = env_value ? HYDU_strdup(env_value) : NULL;
-    env->next = NULL;
+    HYDU_MALLOC(tenv, HYD_Env_t *, sizeof(HYD_Env_t), status);
+    memcpy(tenv, &env, sizeof(HYD_Env_t));
+    tenv->next = NULL;
+    tenv->env_name = HYDU_strdup(env.env_name);
+    tenv->env_value = env.env_value ? HYDU_strdup(env.env_value) : NULL;
 
   fn_exit:
     HYDU_FUNC_EXIT();
-    return env;
+    return tenv;
 
   fn_fail:
-    if (env)
-        HYDU_FREE(env);
-    env = NULL;
+    if (tenv)
+        HYDU_FREE(tenv);
+    tenv = NULL;
     goto fn_exit;
 }
 
 
-HYD_Status HYDU_list_append_env_to_str(HYD_Env_t * env_list, char **str_list)
-{
-    int i;
-    HYD_Env_t *env;
-    HYD_Status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    i = HYDU_strlist_lastidx(str_list);
-    env = env_list;
-    while (env) {
-        status = env_to_str(env, &str_list[i++]);
-        HYDU_ERR_POP(status, "HYDU_env_to_str returned error\n");
-        env = env->next;
-    }
-    str_list[i++] = NULL;
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}
-
-
 HYD_Status HYDU_list_inherited_env(HYD_Env_t ** env_list)
 {
     HYD_Env_t *env;
@@ -153,7 +102,8 @@
     while (environ[i]) {
         env_str = HYDU_strdup(environ[i]);
 
-        env = HYDU_str_to_env(env_str);
+        status = HYDU_str_to_env(env_str, &env);
+        HYDU_ERR_POP(status, "error converting string to env\n");
 
         status = HYDU_append_env_to_list(*env, env_list);
         HYDU_ERR_POP(status, "unable to add env to list\n");
@@ -254,7 +204,7 @@
 }
 
 
-HYD_Env_t *HYDU_env_lookup(HYD_Env_t env, HYD_Env_t * env_list)
+HYD_Env_t *HYDU_env_lookup(char *env_name, HYD_Env_t * env_list)
 {
     HYD_Env_t *run;
 
@@ -262,7 +212,7 @@
 
     run = env_list;
     while (run->next) {
-        if (!strcmp(run->env_name, env.env_name))
+        if (!strcmp(run->env_name, env_name))
             goto fn_exit;
         run = run->next;
     }



More information about the mpich2-commits mailing list