566a050c23
- move files out of toplevel include/ and etc/, moving it into the sub-projects - rather than including config headers with <project>/include, have them as <project> - require all headers to be included with a project prefix, with the exception of the config headers ({opal,orte,ompi}_config.h mpi.h, and mpif.h) This commit was SVN r8985.
89 строки
3.8 KiB
C
89 строки
3.8 KiB
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$
|
|
*/
|
|
/**
|
|
* @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
|
|
|