[mpich2-commits] r4087 - in mpich2/trunk/src/pm/hydra: bootstrap/fork bootstrap/src bootstrap/ssh control/consys demux include launcher/mpiexec launcher/utils pm/central pm/utils utils/args utils/env utils/launch utils/signals utils/sock utils/string
balaji at mcs.anl.gov
balaji at mcs.anl.gov
Mon Mar 16 10:02:00 CDT 2009
Author: balaji
Date: 2009-03-16 10:02:00 -0500 (Mon, 16 Mar 2009)
New Revision: 4087
Modified:
mpich2/trunk/src/pm/hydra/bootstrap/fork/fork_launch.c
mpich2/trunk/src/pm/hydra/bootstrap/src/bsci_init.c.in
mpich2/trunk/src/pm/hydra/bootstrap/ssh/ssh_launch.c
mpich2/trunk/src/pm/hydra/control/consys/consys_close.c
mpich2/trunk/src/pm/hydra/control/consys/consys_finalize.c
mpich2/trunk/src/pm/hydra/control/consys/consys_launch.c
mpich2/trunk/src/pm/hydra/control/consys/consys_wait.c
mpich2/trunk/src/pm/hydra/demux/demux.c
mpich2/trunk/src/pm/hydra/include/hydra_base.h
mpich2/trunk/src/pm/hydra/include/hydra_utils.h
mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c
mpich2/trunk/src/pm/hydra/launcher/mpiexec/mpiexec.c
mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c
mpich2/trunk/src/pm/hydra/launcher/utils/lchu.c
mpich2/trunk/src/pm/hydra/pm/central/central_cb.c
mpich2/trunk/src/pm/hydra/pm/central/central_finalize.c
mpich2/trunk/src/pm/hydra/pm/central/central_launch.c
mpich2/trunk/src/pm/hydra/pm/central/proxy.c
mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c
mpich2/trunk/src/pm/hydra/pm/central/proxy_utils.c
mpich2/trunk/src/pm/hydra/pm/utils/pmi.c
mpich2/trunk/src/pm/hydra/utils/args/args.c
mpich2/trunk/src/pm/hydra/utils/env/env.c
mpich2/trunk/src/pm/hydra/utils/launch/launch.c
mpich2/trunk/src/pm/hydra/utils/signals/signals.c
mpich2/trunk/src/pm/hydra/utils/sock/sock.c
mpich2/trunk/src/pm/hydra/utils/string/string.c
Log:
Converted the error checks to the MPICH2 style check-and-pop macros.
Modified: mpich2/trunk/src/pm/hydra/bootstrap/fork/fork_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/bootstrap/fork/fork_launch.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/bootstrap/fork/fork_launch.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -41,10 +41,7 @@
* for everyone else, it's NULL. */
status = HYDU_Create_process(client_arg, (process_id == 0 ? &handle.in : NULL),
&partition->out, &partition->err, &partition->pid);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("bootstrap spawn process returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "create process returned error\n");
for (arg = 0; client_arg[arg]; arg++)
HYDU_FREE(client_arg[arg]);
Modified: mpich2/trunk/src/pm/hydra/bootstrap/src/bsci_init.c.in
===================================================================
--- mpich2/trunk/src/pm/hydra/bootstrap/src/bsci_init.c.in 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/bootstrap/src/bsci_init.c.in 2009-03-16 15:02:00 UTC (rev 4087)
@@ -33,18 +33,14 @@
}
}
- if (HYD_BSCI_comp_array[i] == NULL) {
- HYDU_Error_printf("unrecognized bootstrap server: %s\n", bootstrap);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (HYD_BSCI_comp_array[i] == NULL)
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unrecognized bootstrap server: %s\n", bootstrap);
- if (HYD_BSCI_fns.launch_procs == NULL) {
- /* This function is mandatory */
- HYDU_Error_printf("Mandatory bootstrap launch function undefined\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ /* This function is mandatory */
+ if (HYD_BSCI_fns.launch_procs == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+ "mandatory bootstrap launch function undefined\n");
if (HYD_BSCI_fns.get_usize == NULL)
HYD_BSCI_fns.get_usize = HYD_BSCU_get_usize;
if (HYD_BSCI_fns.wait_for_completion == NULL)
Modified: mpich2/trunk/src/pm/hydra/bootstrap/ssh/ssh_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/bootstrap/ssh/ssh_launch.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/bootstrap/ssh/ssh_launch.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -61,10 +61,7 @@
* for everyone else, it's NULL. */
status = HYDU_Create_process(client_arg, (process_id == 0 ? &handle.in : NULL),
&partition->out, &partition->err, &partition->pid);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("bootstrap spawn process returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "create process returned error\n");
for (arg = 0; client_arg[arg]; arg++)
HYDU_FREE(client_arg[arg]);
Modified: mpich2/trunk/src/pm/hydra/control/consys/consys_close.c
===================================================================
--- mpich2/trunk/src/pm/hydra/control/consys/consys_close.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/control/consys/consys_close.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -22,11 +22,7 @@
/* Deregister the FD with the demux engine and close it. */
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd: %d\n", fd);
- goto fn_fail;
- }
-
+ HYDU_ERR_SETANDJUMP1(status, status, "error deregistering fd %d\n", fd);
close(fd);
/* Find the FD in the handle and remove it. */
Modified: mpich2/trunk/src/pm/hydra/control/consys/consys_finalize.c
===================================================================
--- mpich2/trunk/src/pm/hydra/control/consys/consys_finalize.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/control/consys/consys_finalize.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -16,16 +16,10 @@
HYDU_FUNC_ENTER();
status = HYD_PMCI_Finalize();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("process manager finalize returned an error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error returned from PM finalize\n");
status = HYD_DMX_Finalize();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine finalize returned an error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error returned from demux finalize\n");
fn_exit:
HYDU_FUNC_EXIT();
Modified: mpich2/trunk/src/pm/hydra/control/consys/consys_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/control/consys/consys_launch.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/control/consys/consys_launch.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -22,53 +22,33 @@
HYDU_FUNC_ENTER();
status = HYD_PMCI_Launch_procs();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("process manager returned error when launching processes\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "PM returned error while launching processes\n");
for (proc_params = handle.proc_params; proc_params; proc_params = proc_params->next) {
for (partition = proc_params->partition; partition; partition = partition->next) {
status =
HYD_DMX_Register_fd(1, &partition->out, HYD_STDOUT, proc_params->stdout_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "demux returned error registering fd\n");
status =
HYD_DMX_Register_fd(1, &partition->err, HYD_STDOUT, proc_params->stderr_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "demux returned error registering fd\n");
}
}
if (handle.in != -1) { /* Only process_id 0 */
status = HYDU_Sock_set_nonblock(handle.in);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Unable to set socket as non-blocking\n");
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set socket as non-blocking\n");
stdin_fd = 0;
status = HYDU_Sock_set_nonblock(stdin_fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Unable to set socket as non-blocking\n");
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set socket as non-blocking\n");
handle.stdin_buf_count = 0;
handle.stdin_buf_offset = 0;
status = HYD_DMX_Register_fd(1, &stdin_fd, HYD_STDIN, handle.stdin_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "demux returned error registering fd\n");
}
fn_exit:
Modified: mpich2/trunk/src/pm/hydra/control/consys/consys_wait.c
===================================================================
--- mpich2/trunk/src/pm/hydra/control/consys/consys_wait.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/control/consys/consys_wait.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -24,10 +24,7 @@
while (1) {
/* Wait for some event to occur */
status = HYD_DMX_Wait_for_event(HYDU_Time_left(handle.start, handle.timeout));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when waiting for event\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error waiting for event\n");
/* Check to see if there's any open read socket left; if there
* are, we will just wait for more events. */
@@ -49,10 +46,7 @@
/* Make sure all the processes have terminated. The process
* manager control device will take care of that. */
status = HYD_PMCI_Wait_for_completion();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("process manager returned error when waiting for completion\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error waiting for completion\n");
/* We are done */
break;
Modified: mpich2/trunk/src/pm/hydra/demux/demux.c
===================================================================
--- mpich2/trunk/src/pm/hydra/demux/demux.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/demux/demux.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -30,13 +30,10 @@
HYDU_FUNC_ENTER();
- for (i = 0; i < num_fds; i++) {
- if (fd[i] < 0) {
- HYDU_Error_printf("registering bad fd %d\n", fd[i]);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
- }
+ for (i = 0; i < num_fds; i++)
+ if (fd[i] < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR, "registering bad fd %d\n",
+ fd[i]);
HYDU_MALLOC(cb_element, HYD_DMXI_Callback_t *, sizeof(HYD_DMXI_Callback_t), status);
cb_element->num_fds = num_fds;
@@ -88,9 +85,8 @@
}
/* FD is not found */
- HYDU_Error_printf("couldn't find the fd to deregister: %d\n", fd);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "could not find fd to deregister: %d\n", fd);
fn_exit:
HYDU_FUNC_EXIT();
@@ -143,9 +139,7 @@
status = HYD_SUCCESS;
goto fn_exit;
}
- HYDU_Error_printf("poll error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "poll error (errno: %d)\n", errno);
}
break;
}
@@ -165,10 +159,7 @@
events |= HYD_STDOUT;
status = run->callback(pollfds[i].fd, events);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("callback returned error status\n", errno);
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "callback returned error status\n");
}
i++;
Modified: mpich2/trunk/src/pm/hydra/include/hydra_base.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_base.h 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/include/hydra_base.h 2009-03-16 15:02:00 UTC (rev 4087)
@@ -67,6 +67,57 @@
HYD_INTERNAL_ERROR
} HYD_Status;
+#define HYDU_ERR_POP(status, message) \
+ { \
+ if (status != HYD_SUCCESS && status != HYD_GRACEFUL_ABORT) { \
+ if (message) \
+ HYDU_Error_printf(message); \
+ goto fn_fail; \
+ } \
+ else if (status == HYD_GRACEFUL_ABORT) { \
+ goto fn_exit; \
+ } \
+ }
+
+#define HYDU_ERR_SETANDJUMP(status, error, message) \
+ { \
+ status = error; \
+ if (status != HYD_SUCCESS && status != HYD_GRACEFUL_ABORT) { \
+ if (message) \
+ HYDU_Error_printf(message); \
+ goto fn_fail; \
+ } \
+ else if (status == HYD_GRACEFUL_ABORT) { \
+ goto fn_exit; \
+ } \
+ }
+
+#define HYDU_ERR_SETANDJUMP1(status, error, message, arg1) \
+ { \
+ status = error; \
+ if (status != HYD_SUCCESS && status != HYD_GRACEFUL_ABORT) { \
+ if (message) \
+ HYDU_Error_printf(message, arg1); \
+ goto fn_fail; \
+ } \
+ else if (status == HYD_GRACEFUL_ABORT) { \
+ goto fn_exit; \
+ } \
+ }
+
+#define HYDU_ERR_SETANDJUMP2(status, error, message, arg1, arg2) \
+ { \
+ status = error; \
+ if (status != HYD_SUCCESS && status != HYD_GRACEFUL_ABORT) { \
+ if (message) \
+ HYDU_Error_printf(message, arg1, arg2); \
+ goto fn_fail; \
+ } \
+ else if (status == HYD_GRACEFUL_ABORT) { \
+ goto fn_exit; \
+ } \
+ }
+
#define HYD_STDOUT (1)
#define HYD_STDIN (2)
Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h 2009-03-16 15:02:00 UTC (rev 4087)
@@ -78,11 +78,10 @@
#define HYDU_MALLOC(p, type, size, status) \
{ \
(p) = (type) MPIU_Malloc((size)); \
- if ((p) == NULL) { \
- HYDU_Error_printf("failed trying to allocate %d bytes\n", (size)); \
- (status) = HYD_NO_MEM; \
- goto fn_fail; \
- } \
+ if ((p) == NULL) \
+ HYDU_ERR_SETANDJUMP1((status), HYD_NO_MEM, \
+ "failed to allocate %d bytes\n", \
+ (size)); \
}
#define HYDU_FREE(p) \
@@ -93,11 +92,9 @@
#define HYDU_STRDUP(src, dest, type, status) \
{ \
(dest) = (type) MPIU_Strdup((src)); \
- if ((dest) == NULL) { \
- HYDU_Error_printf("failed duping string %s\n", (src)); \
- (status) = HYD_INTERNAL_ERROR; \
- goto fn_fail; \
- } \
+ if ((dest) == NULL) \
+ HYDU_ERR_SETANDJUMP1((status), HYD_INTERNAL_ERROR, \
+ "failed duping string %s\n", (src)); \
}
HYD_Status HYDU_String_alloc_and_join(char **strlist, char **strjoin);
Modified: mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c
===================================================================
--- mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -20,17 +20,13 @@
/* Write output to fd 1 */
status = HYDU_Sock_stdout_cb(fd, events, 1, &closed);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("socket stdout callback error on fd: %d (errno: %d)\n", fd, errno);
- goto fn_fail;
- }
+ HYDU_ERR_SETANDJUMP2(status, status, "stdout callback error on fd %d (errno: %d)\n",
+ fd, errno);
if (closed) {
status = HYD_CSI_Close_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("socket close error on fd: %d (errno: %d)\n", fd, errno);
- goto fn_fail;
- }
+ HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d (errno: %d)\n",
+ fd, errno);
goto fn_exit;
}
@@ -52,17 +48,13 @@
/* Write output to fd 2 */
status = HYDU_Sock_stdout_cb(fd, events, 2, &closed);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("socket stdout callback error on fd: %d (errno: %d)\n", fd, errno);
- goto fn_fail;
- }
+ HYDU_ERR_SETANDJUMP2(status, status, "stdout callback error on %d (errno: %d)\n",
+ fd, errno)
if (closed) {
status = HYD_CSI_Close_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("socket close error on fd: %d (errno: %d)\n", fd, errno);
- goto fn_fail;
- }
+ HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d (errno: %d)\n",
+ fd, errno);
goto fn_exit;
}
@@ -84,18 +76,12 @@
status = HYDU_Sock_stdin_cb(handle.in, events, handle.stdin_tmp_buf,
&handle.stdin_buf_count, &handle.stdin_buf_offset, &closed);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock stdin callback returned an error\n");
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "stdin callback error\n");
if (closed) {
status = HYD_CSI_Close_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("socket close error on fd: %d (errno: %d)\n", fd, errno);
- goto fn_fail;
- }
+ HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d (errno: %d)\n",
+ fd, errno);
/* Close the input handler for the process, so it knows that
* we got a close event */
Modified: mpich2/trunk/src/pm/hydra/launcher/mpiexec/mpiexec.c
===================================================================
--- mpich2/trunk/src/pm/hydra/launcher/mpiexec/mpiexec.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/launcher/mpiexec/mpiexec.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -66,25 +66,16 @@
if (handle.debug) {
status = HYD_LCHI_Print_parameters();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create host list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, NULL);
}
/* Convert the host file to a host list */
status = HYD_LCHU_Create_host_list();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create host list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create host list\n");
/* Consolidate the environment list that we need to propagate */
status = HYD_LCHU_Create_env_list();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create host list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create env list\n");
proc_params = handle.proc_params;
while (proc_params) {
@@ -104,18 +95,11 @@
/* Launch the processes */
status = HYD_CSI_Launch_procs();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("control system returned error when launching processes\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "control system error launching processes\n");
/* Wait for their completion */
status = HYD_CSI_Wait_for_completion();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf
- ("control system returned error when waiting for process' completion\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "control system error waiting for completion\n");
/* Check for the exit status for all the processes */
exit_status = 0;
@@ -125,10 +109,7 @@
/* Call finalize functions for lower layers to cleanup their resources */
status = HYD_CSI_Finalize();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("control system returned error on finalize\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "control system error on finalize\n");
/* Free the mpiexec params */
HYD_LCHU_Free_params();
Modified: mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/launcher/mpiexec/utils.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -63,10 +63,7 @@
if (handle.proc_params == NULL) {
status = allocate_proc_params(&handle.proc_params);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to allocate proc_params\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to allocate proc_params\n");
}
proc_params = handle.proc_params;
@@ -106,123 +103,69 @@
HYD_LCHU_Init_params();
status = HYDU_Get_base_path(argv[0], &handle.base_path);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to get base path\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to get base path\n");
status = HYDU_Env_global_list(&handle.global_env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to get the global env list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to get the global env list\n");
while (--argc && ++argv) {
status = HYDU_String_break(*argv, &str1, &str2);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("string break returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "string break returned error\n");
- /* Help options */
- if (!strcmp(str1, "-h") || !strcmp(str1, "--help") || !strcmp(str1, "-help")) {
- /* Just return from this function; the main code will show the usage */
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (!strcmp(str1, "-h") || !strcmp(str1, "--help") || !strcmp(str1, "-help"))
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, NULL);
- /* Check what debug level is requested */
if (!strcmp(str1, "--verbose")) {
- /* Debug level already set */
- if (handle.debug != -1) {
- HYDU_Error_printf
- ("Duplicate debug level setting; previously set to %d\n", handle.debug);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (handle.debug != -1)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate debug level\n");
handle.debug = 1;
-
continue;
}
- /* Version information */
if (!strcmp(str1, "--version")) {
- /* Just show the version information and continue. This
- * option can be used in conjunction with other
- * options. */
show_version();
- status = HYD_GRACEFUL_ABORT;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP(status, HYD_GRACEFUL_ABORT, NULL);
}
- /* Bootstrap server */
if (!strcmp(str1, "--bootstrap")) {
if (!str2) {
CHECK_NEXT_ARG_VALID(status);
str2 = *argv;
}
-
- if (handle.bootstrap != NULL) {
- HYDU_Error_printf("Duplicate bootstrap setting; previously set to %s\n",
- handle.bootstrap);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
-
+ if (handle.bootstrap != NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate bootstrap\n");
handle.bootstrap = MPIU_Strdup(str2);
continue;
}
- /* Check if X forwarding is explicitly set */
if (!strcmp(str1, "--enable-x") || !strcmp(str1, "--disable-x")) {
- /* X forwarding already enabled or disabled */
- if (handle.enablex != -1) {
- HYDU_Error_printf
- ("Duplicate enable-x setting; previously set to %d\n", handle.enablex);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
-
+ if (handle.enablex != -1)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate enable-x\n");
handle.enablex = !strcmp(str1, "--enable-x");
continue;
}
- /* Check if the proxy port is set */
if (!strcmp(str1, "--proxy-port")) {
if (!str2) {
CHECK_NEXT_ARG_VALID(status);
str2 = *argv;
}
-
- if (handle.proxy_port != -1) {
- HYDU_Error_printf("Duplicate proxy port setting; previously set to %d\n",
- handle.proxy_port);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
-
+ if (handle.proxy_port != -1)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate proxy port\n");
handle.proxy_port = atoi(str2);
continue;
}
- /* Check what all environment variables need to be propagated */
if (!strcmp(str1, "-genvall") || !strcmp(str1, "-genvnone") ||
!strcmp(str1, "-genvlist")) {
- /* propagation already set */
- if (handle.prop != HYD_ENV_PROP_UNSET) {
- HYDU_Error_printf
- ("Duplicate propagation setting; previously set to %d\n", handle.prop);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (handle.prop != HYD_ENV_PROP_UNSET)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate prop setting\n");
- if (!strcmp(str1, "-genvall")) {
+ if (!strcmp(str1, "-genvall"))
handle.prop = HYD_ENV_PROP_ALL;
- }
- else if (!strcmp(str1, "-genvnone")) {
+ else if (!strcmp(str1, "-genvnone"))
handle.prop = HYD_ENV_PROP_NONE;
- }
else if (!strcmp(str1, "-genvlist")) {
handle.prop = HYD_ENV_PROP_LIST;
@@ -234,45 +177,27 @@
env_name = strtok(str2, ",");
do {
status = HYDU_Env_create(&env, env_name, NULL);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create env struct\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create env struct\n");
status = HYDU_Env_add_to_list(&handle.user_env, *env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
} while ((env_name = strtok(NULL, ",")));
}
continue;
}
- /* Check what all environment variables need to be propagated */
if (!strcmp(str1, "-envall") || !strcmp(str1, "-envnone") ||
!strcmp(str1, "-envlist")) {
status = get_current_proc_params(&proc_params);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("get_current_proc_params returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "get_current_proc_params returned error\n");
- /* propagation already set */
- if (proc_params->prop != HYD_ENV_PROP_UNSET) {
- HYDU_Error_printf
- ("Duplicate propagation setting; previously set to %d\n",
- proc_params->prop);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (proc_params->prop != HYD_ENV_PROP_UNSET)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate prop setting\n");
- if (!strcmp(str1, "-envall")) {
+ if (!strcmp(str1, "-envall"))
proc_params->prop = HYD_ENV_PROP_ALL;
- }
- else if (!strcmp(str1, "-envnone")) {
+ else if (!strcmp(str1, "-envnone"))
proc_params->prop = HYD_ENV_PROP_NONE;
- }
else if (!strcmp(str1, "-envlist")) {
proc_params->prop = HYD_ENV_PROP_LIST;
@@ -287,16 +212,10 @@
break;
status = HYDU_Env_create(&env, env_name, NULL);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create env struct\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create env struct\n");
status = HYDU_Env_add_to_list(&proc_params->prop_env, *env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
} while (env_name);
}
continue;
@@ -314,19 +233,13 @@
env_value = MPIU_Strdup(*argv);
status = HYDU_Env_create(&env, env_name, env_value);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create env struct\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create env struct\n");
if (!strcmp(str1, "-genv"))
HYDU_Env_add_to_list(&handle.user_env, *env);
else {
status = get_current_proc_params(&proc_params);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("get_current_proc_params returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "get_current_proc_params returned error\n");
HYDU_Env_add_to_list(&proc_params->user_env, *env);
}
@@ -351,19 +264,10 @@
}
status = get_current_proc_params(&proc_params);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("get_current_proc_params returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "get_current_proc_params returned error\n");
- /* Num_procs already set */
- if (proc_params->exec_proc_count != 0) {
- HYDU_Error_printf
- ("Duplicate setting for number of processes; previously set to %d\n",
- proc_params->exec_proc_count);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (proc_params->exec_proc_count != 0)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "duplicate proc count\n");
proc_params->exec_proc_count = atoi(str2);
continue;
@@ -378,26 +282,17 @@
continue;
}
- if (*argv[0] == '-') {
- HYDU_Error_printf("unrecognized argument\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (*argv[0] == '-')
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "unrecognized argument\n");
status = get_current_proc_params(&proc_params);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("get_current_proc_params returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "get_current_proc_params returned error\n");
/* Read the executable till you hit the end of a ":" */
do {
if (!strcmp(*argv, ":")) { /* Next executable */
status = allocate_proc_params(&proc_params->next);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("allocate_proc_params returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "allocate_proc_params returned error\n");
break;
}
@@ -414,25 +309,17 @@
continue;
}
- /* Check on what's set and what's not */
if (handle.debug == -1)
handle.debug = 0;
- /* We need at least one local exec */
- if (handle.proc_params == NULL) {
- HYDU_Error_printf("No local options set\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (handle.proc_params == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "no local options set\n");
- /* If wdir is not set, use the current one */
if (handle.wdir == NULL) {
HYDU_MALLOC(handle.wdir, char *, HYDRA_MAX_PATH, status);
- if (getcwd(handle.wdir, HYDRA_MAX_PATH) == NULL) {
- HYDU_Error_printf("allocated space is too small for absolute path\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (getcwd(handle.wdir, HYDRA_MAX_PATH) == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+ "allocated space is too small for absolute path\n");
}
/*
@@ -459,27 +346,20 @@
proc_params = handle.proc_params;
while (proc_params) {
- if (proc_params->exec[0] == NULL) {
- HYDU_Error_printf("no executable specified\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (proc_params->exec[0] == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "no executable specified\n");
if (proc_params->exec_proc_count == 0)
proc_params->exec_proc_count = 1;
- if (handle.prop == HYD_ENV_PROP_UNSET && proc_params->prop == HYD_ENV_PROP_UNSET) {
- /* By default we pass the entire environment */
+ if (handle.prop == HYD_ENV_PROP_UNSET && proc_params->prop == HYD_ENV_PROP_UNSET)
proc_params->prop = HYD_ENV_PROP_ALL;
- }
proc_params = proc_params->next;
}
- /* If the proxy port is not set, set it to the default value */
- if (handle.proxy_port == -1) {
+ if (handle.proxy_port == -1)
handle.proxy_port = HYD_DEFAULT_PROXY_PORT;
- }
fn_exit:
HYDU_FUNC_EXIT();
Modified: mpich2/trunk/src/pm/hydra/launcher/utils/lchu.c
===================================================================
--- mpich2/trunk/src/pm/hydra/launcher/utils/lchu.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/launcher/utils/lchu.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -125,11 +125,9 @@
if (strcmp(handle.host_file, "HYDRA_USE_LOCALHOST")) {
fp = fopen(handle.host_file, "r");
- if (fp == NULL) {
- HYDU_Error_printf("unable to open host file %s\n", handle.host_file);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (fp == NULL)
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unable to open host file: %s\n", handle.host_file);
}
HYDU_Debug("Partition list: ");
@@ -145,11 +143,9 @@
else {
total_procs = 0;
while (!feof(fp)) {
- if ((fscanf(fp, "%s", line) < 0) && errno) {
- HYDU_Error_printf("unable to read input line (errno: %d)\n", errno);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if ((fscanf(fp, "%s", line) < 0) && errno)
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unable to read input line (errno: %d)\n", errno);
if (feof(fp))
break;
@@ -267,10 +263,7 @@
handle.prop_env = HYDU_Env_listdup(handle.global_env);
for (env = handle.user_env; env; env = env->next) {
status = HYDU_Env_add_to_list(&handle.prop_env, *env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
}
}
else if (handle.prop == HYD_ENV_PROP_LIST) {
@@ -278,10 +271,7 @@
run = HYDU_Env_found_in_list(handle.global_env, *env);
if (run) {
status = HYDU_Env_add_to_list(&handle.prop_env, *run);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
}
}
}
@@ -292,10 +282,7 @@
proc_params->prop_env = HYDU_Env_listdup(handle.global_env);
for (env = proc_params->user_env; env; env = env->next) {
status = HYDU_Env_add_to_list(&proc_params->prop_env, *env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
}
}
else if (proc_params->prop == HYD_ENV_PROP_LIST) {
@@ -303,10 +290,7 @@
run = HYDU_Env_found_in_list(handle.global_env, *env);
if (run) {
status = HYDU_Env_add_to_list(&proc_params->prop_env, *run);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
}
}
}
Modified: mpich2/trunk/src/pm/hydra/pm/central/central_cb.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/central_cb.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/central/central_cb.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -54,23 +54,14 @@
if (fd == HYD_PMCD_Central_listenfd) { /* Someone is trying to connect to us */
status = HYDU_Sock_accept(fd, &accept_fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when accepting connection\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "accept error\n");
status = HYD_DMX_Register_fd(1, &accept_fd, HYD_STDOUT, HYD_PMCD_Central_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
}
else {
status = HYDU_Sock_readline(fd, buf, HYD_TMPBUF_SIZE, &linelen);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when reading PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "PMI read line error\n");
if (linelen == 0) {
/* This is not a clean close. If a finalize was called, we
@@ -137,10 +128,7 @@
if (status == HYD_SUCCESS) {
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to deregister fd %d\n", fd);
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
close(fd);
}
}
@@ -159,10 +147,7 @@
goto fn_fail;
}
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("PMI server function returned an error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "PMI server returned error\n");
}
fn_exit:
Modified: mpich2/trunk/src/pm/hydra/pm/central/central_finalize.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/central_finalize.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/central/central_finalize.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -22,25 +22,16 @@
/* Deregister the listen socket from the demux engine and close
* it. */
status = HYD_DMX_Deregister_fd(HYD_PMCD_Central_listenfd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to deregister fd\n");
close(HYD_PMCD_Central_listenfd);
HYD_PMCD_Central_listenfd = -1;
status = HYD_PMCU_Finalize();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to finalize process manager utils\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to finalize process manager utils\n");
status = HYD_BSCI_finalize();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to finalize the bootstrap server\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to finalize bootstrap server\n");
fn_exit:
HYDU_FUNC_EXIT();
Modified: mpich2/trunk/src/pm/hydra/pm/central/central_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/central_launch.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/central/central_launch.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -50,10 +50,7 @@
HYDU_FUNC_ENTER();
status = HYDU_Set_common_signals(HYD_PMCD_Central_signal_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("signal utils returned error when trying to set signal\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set signal\n");
/* Check if the user wants us to use a port within a certain
* range. */
@@ -66,31 +63,22 @@
/* Listen on a port in the port range */
port = 0;
status = HYDU_Sock_listen(&HYD_PMCD_Central_listenfd, port_range, &port);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned listen error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to listen on port\n");
/* Register the listening socket with the demux engine */
status = HYD_DMX_Register_fd(1, &HYD_PMCD_Central_listenfd, HYD_STDOUT,
HYD_PMCD_Central_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error for registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
/* Create a port string for MPI processes to use to connect to */
- if (gethostname(hostname, MAX_HOSTNAME_LEN) < 0) {
- HYDU_Error_printf("gethostname error (hostname: %s; errno: %d)\n", hostname, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (gethostname(hostname, MAX_HOSTNAME_LEN) < 0)
+ HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR,
+ "gethostname error (hostname: %s; errno: %d)\n", hostname,
+ errno);
status = HYDU_String_int_to_str(port, &sport);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "cannot convert int to string\n");
+
HYDU_MALLOC(port_str, char *, strlen(hostname) + 1 + strlen(sport) + 1, status);
MPIU_Snprintf(port_str, strlen(hostname) + 1 + strlen(sport) + 1,
"%s:%s", hostname, sport);
@@ -98,25 +86,18 @@
HYDU_Debug("Process manager listening on PMI port %s\n", port_str);
status = HYDU_Env_create(&env, "PMI_PORT", port_str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create env\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create env\n");
+
status = HYDU_Env_add_to_list(&handle.system_env, *env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
+
HYDU_Env_free(env);
HYDU_FREE(port_str);
/* Create a process group for the MPI processes in this
* comm_world */
status = HYD_PMCU_Create_pg();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("pm utils returned error creating process group\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create process group\n");
/* Create the arguments list for each proxy */
process_id = 0;
@@ -138,20 +119,14 @@
path_str[i++] = MPIU_Strdup("hydproxy");
path_str[i] = NULL;
status = HYDU_String_alloc_and_join(path_str, &partition->args[arg]);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error when joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
arg++;
HYDU_Free_args(path_str);
status = HYDU_String_int_to_str(partition->proc_count, &str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf
- ("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
+
partition->args[arg++] = MPIU_Strdup("--proc-count");
partition->args[arg++] = MPIU_Strdup(str);
@@ -161,21 +136,15 @@
HYDU_FREE(str);
status = HYDU_String_int_to_str(process_id, &str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf
- ("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
+
partition->args[arg++] = MPIU_Strdup("--pmi-id");
partition->args[arg++] = MPIU_Strdup(str);
HYDU_FREE(str);
status = HYDU_String_int_to_str(handle.proxy_port, &str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf
- ("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert in to string\n");
+
partition->args[arg++] = MPIU_Strdup("--proxy-port");
partition->args[arg++] = MPIU_Strdup(str);
HYDU_FREE(str);
@@ -192,11 +161,8 @@
for (env = proc_params->prop_env; env; env = env->next)
i++;
status = HYDU_String_int_to_str(i, &str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf
- ("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert in to string\n");
+
partition->args[arg++] = MPIU_Strdup(str);
partition->args[arg++] = NULL;
@@ -220,16 +186,10 @@
/* Initialize the bootstrap server and ask it to launch the
* processes. */
status = HYD_BSCI_init(handle.bootstrap);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("bootstrap server initialization failed\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "bootstrap server initialization failed\n");
status = HYD_BSCI_launch_procs();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("bootstrap server returned error launching processes\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "bootstrap server cannot launch processes\n");
fn_exit:
HYDU_FUNC_EXIT();
@@ -249,10 +209,7 @@
status = HYD_BSCI_wait_for_completion();
if (status != HYD_SUCCESS) {
status = HYD_PMCD_Central_cleanup();
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("process manager device returned error for process cleanup\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "process manager cannot cleanup processes\n");
}
fn_exit:
Modified: mpich2/trunk/src/pm/hydra/pm/central/proxy.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/proxy.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/central/proxy.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -22,25 +22,15 @@
HYD_Status status = HYD_SUCCESS;
status = HYD_Proxy_get_params(argc, argv);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Bad parameters passed to the proxy\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "bad parameters passed to the proxy\n");
- /* Listen on a port in the port range */
status = HYDU_Sock_listen(&HYD_Proxy_listenfd, NULL,
(uint16_t *) & HYD_Proxy_params.proxy_port);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned listen error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to listen on socket\n");
/* Register the listening socket with the demux engine */
status = HYD_DMX_Register_fd(1, &HYD_Proxy_listenfd, HYD_STDOUT, HYD_Proxy_listen_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error for registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
/* FIXME: We do not use the bootstrap server right now, as the
* current implementation of the bootstrap launch directly reads
@@ -69,27 +59,20 @@
j = 0;
tmp[j++] = MPIU_Strdup("PMI_ID=");
status = HYDU_String_int_to_str(HYD_Proxy_params.pmi_id + i, &str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("string utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
+
tmp[j++] = MPIU_Strdup(str);
HYDU_FREE(str);
tmp[j++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("string utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
+
HYDU_Env_putenv(str);
for (j = 0; tmp[j]; j++)
HYDU_FREE(tmp[j]);
status = HYDU_Chdir(HYD_Proxy_params.wdir);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to change to wdir %s\n", HYD_Proxy_params.wdir);
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to change wdir\n");
for (j = 0, arg = 0; HYD_Proxy_params.args[j]; j++)
client_args[arg++] = MPIU_Strdup(HYD_Proxy_params.args[j]);
@@ -105,10 +88,7 @@
&HYD_Proxy_params.out[i],
&HYD_Proxy_params.err[i], &HYD_Proxy_params.pid[i]);
}
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("spawn process returned error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "spawn process returned error\n");
HYDU_FREE(str);
}
@@ -116,40 +96,24 @@
/* Everything is spawned, now wait for I/O */
status = HYD_DMX_Register_fd(HYD_Proxy_params.proc_count, HYD_Proxy_params.out,
HYD_STDOUT, HYD_Proxy_stdout_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
+
status = HYD_DMX_Register_fd(HYD_Proxy_params.proc_count, HYD_Proxy_params.err,
HYD_STDOUT, HYD_Proxy_stderr_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
if (HYD_Proxy_params.pmi_id == 0) {
status = HYDU_Sock_set_nonblock(HYD_Proxy_params.in);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Unable to set socket as non-blocking\n");
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set socket as non-blocking\n");
stdin_fd = 0;
status = HYDU_Sock_set_nonblock(stdin_fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Unable to set socket as non-blocking\n");
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set socket as non-blocking\n");
HYD_Proxy_params.stdin_buf_offset = 0;
HYD_Proxy_params.stdin_buf_count = 0;
status = HYD_DMX_Register_fd(1, &stdin_fd, HYD_STDIN, HYD_Proxy_stdin_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
}
timeout_str = getenv("MPIEXEC_TIMEOUT");
@@ -161,10 +125,7 @@
while (1) {
/* Wait for some event to occur */
status = HYD_DMX_Wait_for_event(timeout);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when waiting for event\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "demux engine error waiting for event\n");
/* Check to see if there's any open read socket left; if there
* are, we will just wait for more events. */
@@ -211,10 +172,7 @@
/* Check if there are any messages from the launcher */
status = HYD_DMX_Wait_for_event(0);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when waiting for event\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "demux engine error waiting for event\n");
} while (1);
ret_status = 0;
Modified: mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -21,39 +21,26 @@
HYDU_FUNC_ENTER();
- if (events & HYD_STDIN) {
- HYDU_Error_printf("stdout handler got an stdin event: %d\n", events);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (events & HYD_STDIN)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "stdout handler got stdin event\n");
if (fd == HYD_Proxy_listenfd) { /* mpiexec is trying to connect */
status = HYDU_Sock_accept(fd, &accept_fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when accepting connection\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "accept error\n");
status = HYD_DMX_Register_fd(1, &accept_fd, HYD_STDOUT, HYD_Proxy_listen_cb);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when registering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
}
else { /* We got a command from mpiexec */
count = read(fd, &cmd, HYD_TMPBUF_SIZE);
if (count < 0) {
- HYDU_Error_printf("socket read error on fd: %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "read error on %d (errno: %d)\n",
+ fd, errno);
}
else if (count == 0) {
/* The connection has closed */
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to deregister fd\n");
close(fd);
goto fn_exit;
}
@@ -64,16 +51,12 @@
kill(HYD_Proxy_params.pid[i], SIGKILL);
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to register fd\n");
close(fd);
}
else {
- HYDU_Error_printf("got unrecognized command from mpiexec\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+ "got unrecognized command from mpiexec\n");
}
}
@@ -94,18 +77,12 @@
HYDU_FUNC_ENTER();
status = HYDU_Sock_stdout_cb(fd, events, 1, &closed);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock stdout callback error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "stdout callback error\n");
if (closed) {
/* The connection has closed */
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to deregister fd\n");
for (i = 0; i < HYD_Proxy_params.proc_count; i++)
if (HYD_Proxy_params.out[i] == fd)
@@ -129,18 +106,12 @@
HYDU_FUNC_ENTER();
status = HYDU_Sock_stdout_cb(fd, events, 2, &closed);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock stdout callback error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "stdout callback error\n");
if (closed) {
/* The connection has closed */
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to deregister fd\n");
for (i = 0; i < HYD_Proxy_params.proc_count; i++)
if (HYD_Proxy_params.err[i] == fd)
@@ -166,18 +137,12 @@
status = HYDU_Sock_stdin_cb(HYD_Proxy_params.in, events, HYD_Proxy_params.stdin_tmp_buf,
&HYD_Proxy_params.stdin_buf_count,
&HYD_Proxy_params.stdin_buf_offset, &closed);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock stdin callback error\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "stdin callback error\n");
if (closed) {
/* The connection has closed */
status = HYD_DMX_Deregister_fd(fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("demux engine returned error when deregistering fd\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to deregister fd\n");
close(HYD_Proxy_params.in);
close(fd);
Modified: mpich2/trunk/src/pm/hydra/pm/central/proxy_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/proxy_utils.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/central/proxy_utils.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -24,10 +24,7 @@
HYD_Proxy_params.partition = NULL;
status = HYDU_Env_global_list(&HYD_Proxy_params.global_env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to get the global env list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to get the global env list\n");
while (--argc && ++argv) {
Modified: mpich2/trunk/src/pm/hydra/pm/utils/pmi.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/utils/pmi.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/pm/utils/pmi.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -44,11 +44,7 @@
(*pg)->process = NULL;
status = allocate_kvs(&(*pg)->kvs, pgid);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Unable to allocate kvs space\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to allocate kvs space\n");
(*pg)->next = NULL;
@@ -107,10 +103,7 @@
}
status = create_pg(&pg_list, 0);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to create pg\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to create pg\n");
pg_list->num_procs = num_procs;
fn_exit:
@@ -144,22 +137,13 @@
debug = handle.debug;
status = HYDU_String_int_to_str(size, &ssize);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
status = HYDU_String_int_to_str(id, &srank);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
status = HYDU_String_int_to_str(debug, &sdebug);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
i = 0;
tmp[i++] = "cmd=initack\ncmd=set size=";
@@ -172,16 +156,11 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error while joining strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
+
HYDU_FREE(ssize);
HYDU_FREE(srank);
HYDU_FREE(sdebug);
@@ -193,10 +172,7 @@
/* Add the process to the last PG */
status = add_process_to_pg(run, fd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add process to pg\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add process to pg\n");
fn_exit:
HYDU_FUNC_EXIT();
@@ -224,17 +200,12 @@
/* We support PMI v1.0 and 1.1 */
tmp[0] = "cmd=response_to_init pmi_version=1 pmi_subversion=1 rc=0\n";
status = HYDU_Sock_writeline(fd, tmp[0], strlen(tmp[0]));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
}
else {
/* PMI version mismatch */
- HYDU_Error_printf
- ("got a pmi version mismatch; pmi_version: %d; pmi_subversion: %d\n",
- pmi_version, pmi_subversion);
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP2(status, HYD_INTERNAL_ERROR,
+ "PMI version mismatch; %d.%d\n", pmi_version, pmi_subversion);
}
fn_exit:
@@ -256,22 +227,13 @@
HYDU_FUNC_ENTER();
status = HYDU_String_int_to_str(MAXKVSNAME, &maxkvsname);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
status = HYDU_String_int_to_str(MAXKEYLEN, &maxkeylen);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
status = HYDU_String_int_to_str(MAXVALLEN, &maxvallen);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
i = 0;
tmp[i++] = "cmd=maxes kvsname_max=";
@@ -284,16 +246,10 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
HYDU_FREE(cmd);
HYDU_FREE(maxkvsname);
@@ -341,17 +297,12 @@
/* Find the group id corresponding to this fd */
process = find_process(fd);
- if (process == NULL) { /* We didn't find the process */
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf("could not find the process structure\n");
- goto fn_fail;
- }
+ if (process == NULL) /* We didn't find the process */
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+ "unable to find process structure\n");
status = HYDU_String_int_to_str(process->pg->id, &sapp_num);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
i = 0;
tmp[i++] = "cmd=appnum appnum=";
@@ -360,16 +311,10 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
HYDU_FREE(cmd);
HYDU_FREE(sapp_num);
@@ -394,11 +339,9 @@
/* Find the group id corresponding to this fd */
process = find_process(fd);
- if (process == NULL) { /* We didn't find the process */
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf("could not find the process structure for fd %d\n", fd);
- goto fn_fail;
- }
+ if (process == NULL) /* We didn't find the process */
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unable to find process structure for fd %d\n", fd);
i = 0;
tmp[i++] = "cmd=my_kvsname kvsname=";
@@ -407,16 +350,10 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
HYDU_FREE(cmd);
fn_exit:
@@ -438,11 +375,9 @@
/* Find the group id corresponding to this fd */
process = find_process(fd);
- if (process == NULL) { /* We didn't find the process */
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf("could not find the process structure for fd %d\n", fd);
- goto fn_fail;
- }
+ if (process == NULL) /* We didn't find the process */
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unable to find process structure for fd %d\n", fd);
process->pg->barrier_count++;
@@ -453,10 +388,7 @@
run = process->pg->process; /* The first process in the list */
while (run) {
status = HYDU_Sock_writeline(run->fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
run = run->next;
}
@@ -492,19 +424,14 @@
/* Find the group id corresponding to this fd */
process = find_process(fd);
- if (process == NULL) { /* We didn't find the process */
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf("could not find the process structure for fd %d\n", fd);
- goto fn_fail;
- }
+ if (process == NULL) /* We didn't find the process */
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unable to find process structure for fd %d\n", fd);
- if (strcmp(process->pg->kvs->kvs_name, kvsname)) {
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf
- ("kvsname (%s) does not match this process' kvs space (%s)\n",
- kvsname, process->pg->kvs->kvs_name);
- goto fn_fail;
- }
+ if (strcmp(process->pg->kvs->kvs_name, kvsname))
+ HYDU_ERR_SETANDJUMP2(status, HYD_INTERNAL_ERROR,
+ "kvsname (%s) does not match this process' kvs space (%s)\n",
+ kvsname, process->pg->kvs->kvs_name);
HYDU_MALLOC(key_pair, HYD_PMCU_pmi_kvs_pair_t *, sizeof(HYD_PMCU_pmi_kvs_pair_t), status);
MPIU_Snprintf(key_pair->key, MAXKEYLEN, "%s", key);
@@ -535,16 +462,10 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
HYDU_FREE(cmd);
HYDU_FREE(key_pair_str);
@@ -575,19 +496,14 @@
/* Find the group id corresponding to this fd */
process = find_process(fd);
- if (process == NULL) { /* We didn't find the process */
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf("could not find the process structure for fd %d\n", fd);
- goto fn_fail;
- }
+ if (process == NULL) /* We didn't find the process */
+ HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
+ "unable to find process structure for fd %d\n", fd);
- if (strcmp(process->pg->kvs->kvs_name, kvsname)) {
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf
- ("kvsname (%s) does not match this process' kvs space (%s)\n",
- kvsname, process->pg->kvs->kvs_name);
- goto fn_fail;
- }
+ if (strcmp(process->pg->kvs->kvs_name, kvsname))
+ HYDU_ERR_SETANDJUMP2(status, HYD_INTERNAL_ERROR,
+ "kvsname (%s) does not match this process' kvs space (%s)\n",
+ kvsname, process->pg->kvs->kvs_name);
i = 0;
tmp[i++] = "cmd=get_result rc=";
@@ -617,16 +533,10 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
HYDU_FREE(cmd);
HYDU_FREE(key_val_str);
@@ -648,10 +558,7 @@
cmd = "cmd=finalize_ack\n";
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
fn_exit:
HYDU_FUNC_EXIT();
@@ -671,16 +578,10 @@
HYDU_FUNC_ENTER();
status = HYD_BSCI_get_usize(&usize);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("Unable to get universe size from the bootstrap server\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to get bootstrap universe size\n");
status = HYDU_String_int_to_str(usize, &usize_str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while converting int to string\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to convert int to string\n");
i = 0;
tmp[i++] = "cmd=universe_size size=";
@@ -689,16 +590,10 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &cmd);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
status = HYDU_Sock_writeline(fd, cmd, strlen(cmd));
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("sock utils returned error when writing PMI line\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "error writing PMI line\n");
HYDU_FREE(cmd);
fn_exit:
@@ -761,16 +656,10 @@
tmp = pg->next;
status = free_pmi_process_list(pg->process);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to free process list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to free process list\n");
status = free_pmi_kvs_list(pg->kvs);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to free kvs list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to free kvs list\n");
HYDU_FREE(pg);
pg = tmp;
Modified: mpich2/trunk/src/pm/hydra/utils/args/args.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/args/args.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/utils/args/args.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -28,10 +28,7 @@
tmp[j++] = NULL;
status = HYDU_String_alloc_and_join(tmp, &envstr);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
client_arg[i++] = MPIU_Strdup(envstr);
HYDU_FREE(envstr);
@@ -144,11 +141,8 @@
HYDU_FUNC_ENTER();
- if (chdir(dir) < 0) {
- status = HYD_INTERNAL_ERROR;
- HYDU_Error_printf("chdir failed\n");
- goto fn_fail;
- }
+ if (chdir(dir) < 0)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "chdir failed\n");
fn_exit:
HYDU_FUNC_EXIT();
Modified: mpich2/trunk/src/pm/hydra/utils/env/env.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/env/env.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/utils/env/env.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -28,10 +28,8 @@
HYDU_FREE(env_str);
status = HYDU_Env_add_to_list(env_list, *env);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("launcher returned error adding env to list\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
+
HYDU_Env_free(env);
i++;
@@ -64,8 +62,6 @@
return tenv;
fn_fail:
- if (status != HYD_SUCCESS)
- HYDU_Error_printf("freeing temporary env structure\n");
if (tenv)
HYDU_FREE(tenv);
tenv = NULL;
@@ -84,11 +80,7 @@
tenv = NULL;
while (run) {
status = HYDU_Env_add_to_list(&tenv, *run);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("unable to add env to list\n");
- tenv = NULL;
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to add env to list\n");
run = run->next;
}
@@ -97,6 +89,7 @@
return tenv;
fn_fail:
+ tenv = NULL;
goto fn_exit;
}
@@ -185,11 +178,8 @@
HYDU_FUNC_ENTER();
tenv = HYDU_Env_dup(env);
- if (tenv == NULL) {
- HYDU_Error_printf("unable to dup environment\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (tenv == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "unable to dup env\n");
tenv->next = NULL;
@@ -254,10 +244,7 @@
tmp[i++] = NULL;
status = HYDU_String_alloc_and_join(tmp, env_str);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("String utils returned error while joining strings\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to join strings\n");
fn_exit:
HYDU_FUNC_EXIT();
Modified: mpich2/trunk/src/pm/hydra/utils/launch/launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/launch.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/utils/launch/launch.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -13,60 +13,35 @@
HYDU_FUNC_ENTER();
- if (in != NULL) {
- if (pipe(inpipe) < 0) {
- HYDU_Error_printf("pipe error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
- }
+ if (in && (pipe(inpipe) < 0))
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (errno: %d)\n", errno);
- if (pipe(outpipe) < 0) {
- HYDU_Error_printf("pipe error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (out && (pipe(outpipe) < 0))
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (errno: %d)\n", errno);
- if (pipe(errpipe) < 0) {
- HYDU_Error_printf("pipe error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (err && (pipe(errpipe) < 0))
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (errno: %d)\n", errno);
/* Fork off the process */
tpid = fork();
if (tpid == 0) { /* Child process */
close(outpipe[0]);
close(1);
- if (dup2(outpipe[1], 1) < 0) {
- HYDU_Error_printf("dup2 error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (dup2(outpipe[1], 1) < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (errno: %d)\n", errno);
close(errpipe[0]);
close(2);
- if (dup2(errpipe[1], 2) < 0) {
- HYDU_Error_printf("dup2 error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (dup2(errpipe[1], 2) < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (errno: %d)\n", errno);
close(inpipe[1]);
close(0);
- if (in != NULL) {
- if (dup2(inpipe[0], 0) < 0) {
- HYDU_Error_printf("dup2 error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
- }
+ if (in && (dup2(inpipe[0], 0) < 0))
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (errno: %d)\n", errno);
- if (execvp(client_arg[0], client_arg) < 0) {
- HYDU_Error_printf("execvp error\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (execvp(client_arg[0], client_arg) < 0)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "execvp error\n");
}
else { /* Parent process */
close(outpipe[1]);
Modified: mpich2/trunk/src/pm/hydra/utils/signals/signals.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/signals/signals.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/utils/signals/signals.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -45,37 +45,22 @@
HYDU_FUNC_ENTER();
status = HYDU_Set_signal(SIGINT, handler);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("signal utils returned error when trying to set SIGINT signal\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set SIGINT\n");
status = HYDU_Set_signal(SIGQUIT, handler);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("signal utils returned error when trying to set SIGQUIT signal\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set SIGQUIT\n");
status = HYDU_Set_signal(SIGTERM, handler);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("signal utils returned error when trying to set SIGTERM signal\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set SIGTERM\n");
#if defined SIGSTOP
status = HYDU_Set_signal(SIGSTOP, handler);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("signal utils returned error when trying to set SIGSTOP signal\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set SIGSTOP\n");
#endif /* SIGSTOP */
#if defined SIGCONT
status = HYDU_Set_signal(SIGCONT, handler);
- if (status != HYD_SUCCESS) {
- HYDU_Error_printf("signal utils returned error when trying to set SIGCONT signal\n");
- goto fn_fail;
- }
+ HYDU_ERR_POP(status, "unable to set SIGCONT\n");
#endif /* SIGCONT */
fn_exit:
Modified: mpich2/trunk/src/pm/hydra/utils/sock/sock.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/sock/sock.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/utils/sock/sock.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -24,26 +24,17 @@
*port = 0;
port_str = strtok(port_range, ":");
- if (port_str == NULL) {
- HYDU_Error_printf("error parsing port range string\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (port_str == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "error parsing port range\n");
low_port = atoi(port_str);
port_str = strtok(NULL, ":");
- if (port_str == NULL) {
- HYDU_Error_printf("error parsing port range string\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (port_str == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "error parsing port range\n");
high_port = atoi(port_str);
- if (high_port < low_port) {
- HYDU_Error_printf("high port is smaller than low port\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (high_port < low_port)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "high port < low port\n");
}
else {
/* If port range is NULL, if a port is already provided, we
@@ -53,17 +44,12 @@
}
*listen_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (*listen_fd < 0) {
- HYDU_Error_printf("unable to create a stream socket (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (*listen_fd < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "cannot open socket (errno: %d)\n",
+ errno);
- if (setsockopt(*listen_fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(int)) < 0) {
- HYDU_Error_printf("unable to set the TCP_NODELAY socket option (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (setsockopt(*listen_fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(int)) < 0)
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "cannot set TCP_NODELAY\n");
for (i = low_port; i <= high_port; i++) {
memset((void *) &sa, 0, sizeof(sa));
@@ -76,49 +62,35 @@
* being set is not a fatal error, so we ignore that
* case. However, we do check for error cases, which means
* that something bad has happened. */
- if (setsockopt(*listen_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0) {
- HYDU_Error_printf("unable to set socket option to SO_REUSEADDR\n");
- goto fn_fail;
- }
+ if (setsockopt(*listen_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0)
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "cannot set SO_REUSEADDR\n");
if (bind(*listen_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
close(*listen_fd);
/* If the address is in use, we should try the next
* port. Otherwise, it's an error. */
- if (errno != EADDRINUSE) {
- status = HYD_SOCK_ERROR;
- HYDU_Error_printf
- ("unable to bind listen socket %d (errno: %d)\n", *listen_fd, errno);
- goto fn_fail;
- }
+ if (errno != EADDRINUSE)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "bind error (errno: %d)\n", errno);
}
else /* We got a port */
break;
}
*port = i;
- if (*port > high_port) {
- HYDU_Error_printf("unable to find an appropriate port to bind to\n");
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (*port > high_port)
+ HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "no port to bind\n");
- if (listen(*listen_fd, -1) < 0) {
- HYDU_Error_printf("listen error on fd %d (errno: %d)\n", *listen_fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (listen(*listen_fd, -1) < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "listen error (errno: %d)\n", errno);
/* We asked for any port, so we need to find out which port we
* actually got. */
if (*port == 0) {
socklen_t sinlen = sizeof(sa);
- if (getsockname(*listen_fd, (struct sockaddr *) &sa, &sinlen) < 0) {
- HYDU_Error_printf("getsockname error (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (getsockname(*listen_fd, (struct sockaddr *) &sa, &sinlen) < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "getsockname error (errno: %d)\n",
+ errno);
*port = ntohs(sa.sin_port);
}
@@ -145,20 +117,16 @@
/* Get the remote host's IP address */
ht = gethostbyname(host);
- if (ht == NULL) {
- HYDU_Error_printf("unable to get host address: %s (errno: %d)\n", host, errno);
- status = HYD_INVALID_PARAM;
- goto fn_fail;
- }
+ if (ht == NULL)
+ HYDU_ERR_SETANDJUMP1(status, HYD_INVALID_PARAM,
+ "unable to get host address (errno: %d)\n", errno);
memcpy(&sa.sin_addr, ht->h_addr_list[0], ht->h_length);
/* Create a socket and set the required options */
*fd = socket(AF_INET, SOCK_STREAM, 0);
- if (*fd < 0) {
- HYDU_Error_printf("unable to create a stream socket (errno: %d)\n", errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (*fd < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "cannot open socket (errno: %d)\n",
+ errno);
/* Not being able to connect is not an error in all cases. So we
* return an error, but only print a warning message. The upper
@@ -185,11 +153,8 @@
HYDU_FUNC_ENTER();
*fd = accept(listen_fd, 0, 0);
- if (*fd < 0) {
- HYDU_Error_printf("accept error on socket %d (errno: %d)\n", listen_fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (*fd < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "accept error (errno: %d)\n", errno);
fn_exit:
HYDU_FUNC_EXIT();
@@ -221,10 +186,7 @@
else if (n < 0) {
if (errno == EINTR)
continue;
-
- HYDU_Error_printf("error reading from socket %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read error (errno: %d)\n", errno);
}
*linelen += n;
@@ -266,11 +228,8 @@
*count = read(fd, buf, maxlen);
} while (*count < 0 && errno == EINTR);
- if (*count < 0) {
- HYDU_Error_printf("error reading from socket %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (*count < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read errno (errno: %d)\n", errno);
fn_exit:
HYDU_FUNC_EXIT();
@@ -288,21 +247,15 @@
HYDU_FUNC_ENTER();
- if (buf[maxsize - 1] != '\n') {
- HYDU_Error_printf("write line does not end in newline\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (buf[maxsize - 1] != '\n')
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "line does not end in newline\n");
do {
n = write(fd, buf, maxsize);
} while (n < 0 && errno == EINTR);
- if (n < maxsize) {
- HYDU_Error_printf("error writing to socket %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (n < maxsize)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "write error (errno: %d)\n", errno);
fn_exit:
HYDU_FUNC_EXIT();
@@ -324,11 +277,8 @@
n = write(fd, buf, maxsize);
} while (n < 0 && errno == EINTR);
- if (n < maxsize) {
- HYDU_Error_printf("error writing to socket %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (n < maxsize)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "write error (errno: %d)\n", errno);
fn_exit:
HYDU_FUNC_EXIT();
@@ -347,16 +297,10 @@
HYDU_FUNC_ENTER();
flags = fcntl(fd, F_GETFL, 0);
- if (flags < 0) {
- status = HYD_SOCK_ERROR;
- HYDU_Error_printf("unable to do fcntl on fd %d\n", fd);
- goto fn_fail;
- }
- if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0) {
- status = HYD_SOCK_ERROR;
- HYDU_Error_printf("unable to do fcntl on fd %d\n", fd);
- goto fn_fail;
- }
+ if (flags < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "fcntl failed on %d\n", fd);
+ if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0)
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "fcntl failed on %d\n", fd);
fn_exit:
HYDU_FUNC_EXIT();
@@ -396,17 +340,13 @@
*closed = 0;
- if (events & HYD_STDIN) {
- HYDU_Error_printf("stdout handler got an stdin event: %d\n", events);
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (events & HYD_STDIN)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "stdout handler got stdin event\n");
count = read(fd, buf, HYD_TMPBUF_SIZE);
if (count < 0) {
- HYDU_Error_printf("socket read error on fd: %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "read error on %d (errno: %d)\n",
+ fd, errno);
}
else if (count == 0) {
/* The connection has closed */
@@ -417,11 +357,9 @@
written = 0;
while (written != count) {
ret = write(stdout_fd, buf + written, count - written);
- if (ret < 0 && errno != EAGAIN) {
- HYDU_Error_printf("socket write error on fd: %d (errno: %d)\n", stdout_fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (ret < 0 && errno != EAGAIN)
+ HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "write errnor on %d (errno: %d)\n",
+ stdout_fd, errno);
if (ret > 0)
written += ret;
}
@@ -445,22 +383,16 @@
*closed = 0;
- if (events & HYD_STDOUT) {
- HYDU_Error_printf("stdin handler got an stdout event\n");
- status = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (events & HYD_STDOUT)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "stdin handler got stdout event\n");
while (1) {
/* If we already have buffered data, send it out */
if (*buf_count) {
count = write(fd, buf + *buf_offset, *buf_count);
- if (count < 0) {
- /* We can't get an EAGAIN as we just got out of poll */
- HYDU_Error_printf("socket write error on fd: %d (errno: %d)\n", fd, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
- }
+ if (count < 0)
+ HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR,
+ "write error on %d (errno: %d)\n", fd, errno)
*buf_offset += count;
*buf_count -= count;
break;
@@ -475,9 +407,8 @@
break;
}
- HYDU_Error_printf("socket read error on fd: %d (errno: %d)\n", 0, errno);
- status = HYD_SOCK_ERROR;
- goto fn_fail;
+ HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read error on 0 (errno: %d)\n",
+ errno);
}
else if (count == 0) {
/* The connection has closed */
Modified: mpich2/trunk/src/pm/hydra/utils/string/string.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/string/string.c 2009-03-16 05:31:53 UTC (rev 4086)
+++ mpich2/trunk/src/pm/hydra/utils/string/string.c 2009-03-16 15:02:00 UTC (rev 4087)
@@ -41,10 +41,8 @@
HYDU_FUNC_ENTER();
- if (str == NULL) {
- str = HYD_INTERNAL_ERROR;
- goto fn_fail;
- }
+ if (str == NULL)
+ HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, NULL);
*str1 = MPIU_Strdup(str);
for (i = 0; (*str1)[i] && ((*str1)[i] != '='); i++);
@@ -85,11 +83,8 @@
}
*str = (char *) MPIU_Malloc(len + 1);
- if (*str == NULL) {
- HYDU_Error_printf("failed trying to allocate %d bytes\n", len + 1);
- status = HYD_NO_MEM;
- goto fn_fail;
- }
+ if (*str == NULL)
+ HYDU_ERR_SETANDJUMP1(status, HYD_NO_MEM, "unable to allocate %d bytes\n", len + 1);
MPIU_Snprintf(*str, len + 1, "%d", x);
More information about the mpich2-commits
mailing list