⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 univ_info.c

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 C
字号:
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University *                         of Tennessee Research Foundation.  All rights *                         reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, *                         University of Stuttgart.  All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. *                         All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */#include "orte_config.h"#include <stdio.h>#include <string.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_LIBGEN_H#include <libgen.h>#endif#include <stdlib.h>#ifdef HAVE_PWD_H#include <pwd.h>#endif#include <sys/stat.h>#include "orte/orte_constants.h"#include "opal/mca/base/base.h"#include "opal/mca/base/mca_base_param.h"#include "orte/mca/ns/ns_types.h"#include "orte/mca/schema/schema_types.h"#include "opal/util/output.h"#include "orte/util/proc_info.h"#include "orte/util/sys_info.h"#include "orte/util/univ_info.h"static bool universe_info_has_been_created = false;orte_universe_t orte_universe_info;void orte_universe_construct(orte_universe_t *obj);void orte_universe_destruct( orte_universe_t *obj);OBJ_CLASS_INSTANCE(orte_universe_t,                   opal_list_item_t,                   orte_universe_construct,                   orte_universe_destruct);void orte_universe_construct(orte_universe_t *obj) {    obj->state             = ORTE_UNIVERSE_STATE_PRE_INIT;    obj->persistence       = false;    obj->console           = false;    obj->console_connected = false;    obj->name           = NULL;    obj->default_name   = false;    obj->host           = NULL;    obj->uid            = NULL;    obj->scope          = NULL;    obj->seed_uri       = NULL;    obj->scriptfile     = NULL;}void orte_universe_destruct( orte_universe_t *obj) {    if (NULL != obj->name) {        free(obj->name);        obj->name = NULL;    }    if (NULL != obj->host) {        free(obj->host);        obj->host = NULL;    }    if (NULL != obj->uid) {        free(obj->uid);        obj->uid = NULL;    }    if (NULL != obj->scope) {        free(obj->scope);        obj->scope = NULL;    }    if (NULL != obj->seed_uri) {        free(obj->seed_uri);        obj->seed_uri = NULL;    }    if (NULL != obj->scriptfile) {        free(obj->scriptfile);        obj->scriptfile = NULL;    }    obj->state             = ORTE_UNIVERSE_STATE_PRE_INIT;    obj->persistence       = false;    obj->console           = false;    obj->console_connected = false;}int orte_univ_info(void){    int id, tmp;    char *tmpname=NULL, *tptr, *ptr;    if(!universe_info_has_been_created) {        OBJ_CONSTRUCT(&orte_universe_info, orte_universe_t);        universe_info_has_been_created = true;    }    if (ORTE_UNIVERSE_STATE_PRE_INIT == orte_universe_info.state) {        id = mca_base_param_register_string("universe", NULL, NULL, NULL, NULL);        mca_base_param_lookup_string(id, &tmpname);        if (NULL != tmpname) {            /* Universe name info is passed as userid@hostname:univ_name */            /* extract the userid from the universe option, if provided */            tptr = tmpname;            if (NULL != (ptr = strchr(tptr, '@'))) {                *ptr = '\0';                orte_universe_info.uid = strdup(tptr);                ptr++;                tptr = ptr;            } else {                if (NULL == orte_system_info.user) {                    orte_sys_info();                }                orte_universe_info.uid = strdup(orte_system_info.user);            }            /* extract the hostname, if provided */            if (NULL != (ptr = strchr(tptr, ':'))) {                *ptr = '\0';                orte_universe_info.host = strdup(tptr);                ptr++;                tptr = ptr;            } else {                orte_universe_info.host = strdup(orte_system_info.nodename);            }            /* now copy the universe name into the universe_info structure */            orte_universe_info.name = strdup(tptr);                        /* indicate that the universe name was provided */            orte_universe_info.default_name = false;                    } else {            /* if nothing was provided, then initialize the user and nodename             * to the local values             */            orte_universe_info.uid = strdup(orte_system_info.user);            orte_universe_info.host = strdup(orte_system_info.nodename);            /* and the universe name to default-universe-PID */            asprintf(&orte_universe_info.name, "%s-%d", ORTE_DEFAULT_UNIVERSE, getpid());                        /* indicate that the universe name is a default one */            orte_universe_info.default_name = true;        }        id = mca_base_param_register_int("universe", "persistence", NULL, NULL, orte_universe_info.persistence);        mca_base_param_lookup_int(id, &tmp);        orte_universe_info.persistence = OPAL_INT_TO_BOOL(tmp);        id = mca_base_param_register_string("universe", "scope", NULL, NULL, orte_universe_info.scope);        mca_base_param_lookup_string(id, &(orte_universe_info.scope));        id = mca_base_param_register_int("universe", "console", NULL, NULL, orte_universe_info.console);        mca_base_param_lookup_int(id, &tmp);        orte_universe_info.console = OPAL_INT_TO_BOOL(tmp);        id = mca_base_param_register_string("universe", "uri", NULL, NULL, orte_universe_info.seed_uri);        mca_base_param_lookup_string(id, &(orte_universe_info.seed_uri));        /* console connected is set elsewhere */        id = mca_base_param_register_string("universe", "script", NULL, NULL, orte_universe_info.scriptfile);        mca_base_param_lookup_string(id, &(orte_universe_info.scriptfile));        orte_universe_info.state = ORTE_UNIVERSE_STATE_INIT;    }    return(ORTE_SUCCESS);}int orte_univ_info_finalize(void){    OBJ_DESTRUCT(&orte_universe_info);    return ORTE_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -