140 строки
3.3 KiB
C
140 строки
3.3 KiB
C
/*
|
|
* Copyright (c) 2007 Los Alamos National Security, LLC.
|
|
* All righs reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#include "ompi_config.h"
|
|
|
|
#include "btl_pcie_frag.h"
|
|
#include "btl_pcie.h"
|
|
|
|
|
|
static void
|
|
mca_btl_pcie_sma_buf_eager_constructor(mca_btl_pcie_sma_buf_t* buf)
|
|
{
|
|
buf->pcie_data.pval = buf + 1;
|
|
buf->type = MCA_BTL_PCIE_TYPE_EAGER;
|
|
}
|
|
|
|
static void
|
|
mca_btl_pcie_sma_buf_max_constructor(mca_btl_pcie_sma_buf_t* buf)
|
|
{
|
|
buf->pcie_data.pval = buf + 1;
|
|
buf->type = MCA_BTL_PCIE_TYPE_MAX;
|
|
}
|
|
|
|
OBJ_CLASS_INSTANCE(mca_btl_pcie_sma_buf_eager_t,
|
|
ompi_free_list_item_t,
|
|
mca_btl_pcie_sma_buf_eager_constructor,
|
|
NULL);
|
|
|
|
OBJ_CLASS_INSTANCE(mca_btl_pcie_sma_buf_max_t,
|
|
ompi_free_list_item_t,
|
|
mca_btl_pcie_sma_buf_max_constructor,
|
|
NULL);
|
|
|
|
|
|
static void
|
|
mca_btl_pcie_frag_dma_constructor(mca_btl_pcie_frag_t* frag)
|
|
{
|
|
frag->base.des_src = NULL;
|
|
frag->base.des_src_cnt = 0;
|
|
frag->base.des_dst = NULL;
|
|
frag->base.des_dst_cnt = 0;
|
|
|
|
frag->segment.seg_addr.pval = NULL;
|
|
frag->segment.seg_len = 0;
|
|
|
|
frag->endpoint = NULL;
|
|
frag->hdr = NULL;
|
|
frag->size = 0;
|
|
frag->registration = NULL;
|
|
frag->type = MCA_BTL_PCIE_TYPE_RDMA;
|
|
frag->sma_buf = NULL;
|
|
}
|
|
|
|
|
|
static void
|
|
mca_btl_pcie_frag_common_constructor(mca_btl_pcie_frag_t* frag)
|
|
{
|
|
frag->base.des_src = &frag->segment;
|
|
frag->base.des_src_cnt = 1;
|
|
frag->base.des_dst = NULL;
|
|
frag->base.des_dst_cnt = 0;
|
|
|
|
frag->hdr = (mca_btl_pcie_header_t*) (frag + 1);
|
|
frag->hdr->send_frag.pval = frag;
|
|
|
|
frag->segment.seg_addr.pval = ((unsigned char*) frag->hdr) + sizeof(mca_btl_pcie_header_t);
|
|
frag->segment.seg_len = frag->size;
|
|
|
|
frag->endpoint = NULL;
|
|
frag->registration = NULL;
|
|
frag->sma_buf = NULL;
|
|
}
|
|
|
|
static void
|
|
mca_btl_pcie_frag_eager_constructor(mca_btl_pcie_frag_t* frag)
|
|
{
|
|
frag->size = mca_btl_pcie_module.super.btl_eager_limit;
|
|
mca_btl_pcie_frag_common_constructor(frag);
|
|
frag->type = MCA_BTL_PCIE_TYPE_EAGER;
|
|
}
|
|
|
|
static void mca_btl_pcie_frag_max_constructor(mca_btl_pcie_frag_t* frag)
|
|
{
|
|
frag->size = mca_btl_pcie_module.super.btl_max_send_size;
|
|
mca_btl_pcie_frag_common_constructor(frag);
|
|
frag->type = MCA_BTL_PCIE_TYPE_MAX;
|
|
}
|
|
|
|
|
|
static void mca_btl_pcie_frag_recv_constructor(mca_btl_pcie_frag_t *frag)
|
|
{
|
|
frag->base.des_src = NULL;
|
|
frag->base.des_src_cnt = 0;
|
|
frag->base.des_dst = &frag->segment;
|
|
frag->base.des_dst_cnt = 1;
|
|
|
|
frag->segment.seg_addr.pval = NULL;
|
|
frag->segment.seg_len = 0;
|
|
|
|
frag->endpoint = NULL;
|
|
frag->hdr = NULL;
|
|
frag->size = 0;
|
|
frag->registration = NULL;
|
|
frag->type = MCA_BTL_PCIE_TYPE_RECV;
|
|
frag->sma_buf = NULL;
|
|
}
|
|
|
|
|
|
OBJ_CLASS_INSTANCE(
|
|
mca_btl_pcie_frag_eager_t,
|
|
mca_btl_base_descriptor_t,
|
|
mca_btl_pcie_frag_eager_constructor,
|
|
NULL);
|
|
|
|
OBJ_CLASS_INSTANCE(
|
|
mca_btl_pcie_frag_max_t,
|
|
mca_btl_base_descriptor_t,
|
|
mca_btl_pcie_frag_max_constructor,
|
|
NULL);
|
|
|
|
|
|
OBJ_CLASS_INSTANCE(
|
|
mca_btl_pcie_frag_recv_t,
|
|
mca_btl_base_descriptor_t,
|
|
mca_btl_pcie_frag_recv_constructor,
|
|
NULL);
|
|
|
|
OBJ_CLASS_INSTANCE(
|
|
mca_btl_pcie_frag_dma_t,
|
|
mca_btl_base_descriptor_t,
|
|
mca_btl_pcie_frag_dma_constructor,
|
|
NULL);
|