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

📄 rmaps_data_type_copy_fns.c

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 C
字号:
/* * Copyright (c) 2004-2006 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 <sys/types.h>#if HAVE_NETINET_IN_H#include <netinet/in.h>#endif#include "opal/util/argv.h"#include "opal/class/opal_list.h"#include "orte/mca/errmgr/errmgr.h"#include "orte/dss/dss.h"#include "orte/mca/rmaps/base/rmaps_private.h"/* * JOB_MAP */int orte_rmaps_base_copy_map(orte_job_map_t **dest, orte_job_map_t *src, orte_data_type_t type){    orte_std_cntr_t i;    int rc;    opal_list_item_t *item;    orte_mapped_node_t *srcnode, *nodeptr;        if (NULL == src) {        *dest = NULL;        return ORTE_SUCCESS;    }        /* create the new object */    *dest = OBJ_NEW(orte_job_map_t);    if (NULL == *dest) {        ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);        return ORTE_ERR_OUT_OF_RESOURCE;    }    /* copy data into it */    (*dest)->job = src->job;    if (NULL != src->mapping_mode) {        (*dest)->mapping_mode = strdup(src->mapping_mode);    }    (*dest)->vpid_start = src->vpid_start;    (*dest)->vpid_range = src->vpid_range;    (*dest)->num_apps = src->num_apps;        (*dest)->apps = (orte_app_context_t**)malloc(src->num_apps * sizeof(orte_app_context_t*));    if (NULL == (*dest)->apps) {        ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);        OBJ_RELEASE(*dest);        return ORTE_ERR_OUT_OF_RESOURCE;    }    for (i=0; i < src->num_apps; i++) {        if (ORTE_SUCCESS != (rc = orte_dss.copy((void**)&((*dest)->apps[i]), src->apps[i], ORTE_APP_CONTEXT))) {            ORTE_ERROR_LOG(rc);            OBJ_RELEASE(*dest);            return rc;        }    }        (*dest)->num_nodes = src->num_nodes;    for (item = opal_list_get_first(&(src->nodes));         item != opal_list_get_end(&(src->nodes));         item = opal_list_get_next(item)) {        srcnode = (orte_mapped_node_t*)item;        if (ORTE_SUCCESS != (rc = orte_rmaps_base_copy_mapped_node(&nodeptr, srcnode, ORTE_MAPPED_NODE))) {            ORTE_ERROR_LOG(rc);            OBJ_RELEASE(*dest);            return rc;        }        opal_list_append(&((*dest)->nodes), &nodeptr->super);    }        return ORTE_SUCCESS;}/* * MAPPED_PROC */int orte_rmaps_base_copy_mapped_proc(orte_mapped_proc_t **dest, orte_mapped_proc_t *src, orte_data_type_t type){    if (NULL == src) {        *dest = NULL;        return ORTE_SUCCESS;    }        /* create the new object */    *dest = OBJ_NEW(orte_mapped_proc_t);    if (NULL == *dest) {        ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);        return ORTE_ERR_OUT_OF_RESOURCE;    }        /* copy data into it */    (*dest)->name = src->name;        (*dest)->rank = src->rank;        (*dest)->app_idx = src->app_idx;        (*dest)->pid = src->pid;        return ORTE_SUCCESS;}/* * MAPPED_NODE */int orte_rmaps_base_copy_mapped_node(orte_mapped_node_t **dest, orte_mapped_node_t *src, orte_data_type_t type){    int rc;    opal_list_item_t *item;    orte_mapped_proc_t *srcproc, *procptr;        if (NULL == src) {        *dest = NULL;        return ORTE_SUCCESS;    }        /* create the new object */    *dest = OBJ_NEW(orte_mapped_node_t);    if (NULL == *dest) {        ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);        return ORTE_ERR_OUT_OF_RESOURCE;    }        /* copy data into it */    (*dest)->cell = src->cell;        if (NULL != src->nodename) {        (*dest)->nodename = strdup(src->nodename);    }    (*dest)->launch_id = src->launch_id;        if (NULL != src->username) {        (*dest)->username = strdup(src->username);    }        if (NULL != src->daemon) {        if (ORTE_SUCCESS != (rc = orte_dss.copy((void**)&((*dest)->daemon), src->daemon, ORTE_NAME))) {            ORTE_ERROR_LOG(rc);            OBJ_RELEASE(*dest);            return rc;        }    }        (*dest)->oversubscribed = src->oversubscribed;        (*dest)->num_procs = src->num_procs;    for (item = opal_list_get_first(&(src->procs));         item != opal_list_get_end(&(src->procs));         item = opal_list_get_next(item)) {        srcproc = (orte_mapped_proc_t*)item;        if (ORTE_SUCCESS != (rc = orte_rmaps_base_copy_mapped_proc(&procptr, srcproc, ORTE_MAPPED_PROC))) {            ORTE_ERROR_LOG(rc);            OBJ_RELEASE(*dest);            return rc;        }        opal_list_append(&((*dest)->procs), &procptr->super);    }        return ORTE_SUCCESS;    }

⌨️ 快捷键说明

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