bml_r2_btl.h
来自「MPI stands for the Message Passing Inter」· C头文件 代码 · 共 89 行
H
89 行
/* * 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-2006 The Regents of the University of California. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ *//** * @file */#ifndef MCA_BML_R2_BTL_H#define MCA_BML_R2_BTL_H#include "opal/util/output.h"#include "ompi/mca/btl/btl.h"#if defined(c_plusplus) || defined(__cplusplus)extern "C" {#endif/** * Allocate a descriptor for control message */#if OMPI_HAVE_THREAD_SUPPORT#define MCA_BML_R2_BTL_DES_ALLOC(btl, descriptor, size) \do { \ if(NULL != (descriptor = btl->btl_cache)) { \ /* atomically acquire the cached descriptor */ \ if(opal_atomic_cmpset_ptr(&btl->btl_cache, descriptor, NULL) == 0) { \ descriptor = btl->btl_alloc(btl->btl, sizeof(mca_bml_r2_hdr_t) + \ MCA_BTL_DES_MAX_SEGMENTS * sizeof(mca_btl_base_segment_t)); \ } \ } else { \ descriptor = btl->btl_alloc(btl->btl, sizeof(mca_bml_r2_hdr_t) + \ MCA_BTL_DES_MAX_SEGMENTS * sizeof(mca_btl_base_segment_t)); \ } \ descriptor->des_src->seg_len = size; \} while(0)#else#define MCA_BML_R2_BTL_DES_ALLOC(btl, descriptor, size) \do { \ if(NULL != (descriptor = btl->btl_cache)) { \ btl->btl_cache = NULL; \ } else { \ descriptor = btl->btl_alloc(btl->btl, sizeof(mca_bml_r2_hdr_t) + \ MCA_BTL_DES_MAX_SEGMENTS * sizeof(mca_btl_base_segment_t)); \ } \ descriptor->des_src->seg_len = size; \} while(0)#endif/** * Return a descriptor */#if OMPI_HAVE_THREAD_SUPPORT#define MCA_BML_R2_BTL_DES_RETURN(btl, descriptor) \do { \ if(opal_atomic_cmpset_ptr(&btl->btl_cache,NULL,descriptor) == 0) { \ btl->btl_free(btl->btl,descriptor); \ } \} while(0)#else#define MCA_BML_R2_BTL_DES_RETURN(btl, descriptor) \do { \ if(NULL == btl->btl_cache) { \ btl->btl_cache = descriptor; \ } else { \ btl->btl_free(endpoint->btl,descriptor); \ } \} while(0)#endif#if defined(c_plusplus) || defined(__cplusplus)}#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?