root/mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_handle_common.c @ 4887

Revision 4887, 1.4 KB (checked in by balaji, 5 months ago)

Warning stomp.

Line 
1/* -*- Mode: C; c-basic-offset:4 ; -*- */
2/*
3 *  (C) 2008 by Argonne National Laboratory.
4 *      See COPYRIGHT in top-level directory.
5 */
6
7#include "hydra.h"
8#include "pmi_handle.h"
9#include "pmi_handle_common.h"
10#include "pmi_handle_v1.h"
11#include "pmi_handle_v2.h"
12
13HYD_Status HYD_PMCD_pmi_handle_init(int fd, char *args[])
14{
15    int pmi_version, pmi_subversion;
16    const char *tmp;
17    HYD_Status status = HYD_SUCCESS;
18
19    HYDU_FUNC_ENTER();
20
21    strtok(args[0], "=");
22    pmi_version = atoi(strtok(NULL, "="));
23    strtok(args[1], "=");
24    pmi_subversion = atoi(strtok(NULL, "="));
25
26    if (pmi_version == 1 && pmi_subversion <= 1) {
27        tmp = "cmd=response_to_init pmi_version=1 pmi_subversion=1 rc=0\n";
28        status = HYDU_sock_writeline(fd, tmp, strlen(tmp));
29        HYDU_ERR_POP(status, "error writing PMI line\n");
30        HYD_PMCD_pmi_handle = HYD_PMCD_pmi_v1;
31    }
32    else if (pmi_version == 2 && pmi_subversion == 0) {
33        tmp = "cmd=response_to_init pmi_version=2 pmi_subversion=0 rc=0\n";
34        status = HYDU_sock_writeline(fd, tmp, strlen(tmp));
35        HYDU_ERR_POP(status, "error writing PMI line\n");
36        HYD_PMCD_pmi_handle = HYD_PMCD_pmi_v2;
37    }
38    else {
39        /* PMI version mismatch */
40        HYDU_ERR_SETANDJUMP2(status, HYD_INTERNAL_ERROR,
41                             "PMI version mismatch; %d.%d\n", pmi_version, pmi_subversion);
42    }
43
44  fn_exit:
45    HYDU_FUNC_EXIT();
46    return status;
47
48  fn_fail:
49    goto fn_exit;
50}
Note: See TracBrowser for help on using the browser.