[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