/* * Copyright (c) 2013 Mellanox Technologies, Inc. * All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow * * $HEADER$ */ #ifndef OSHMEM_SPML_YODA_GET_REQUEST_H #define OSHMEM_SPML_YODA_GET_REQUEST_H #include "opal/mca/btl/btl.h" #include "oshmem/mca/spml/base/spml_base_putreq.h" #include "opal/mca/mpool/base/base.h" #include "ompi/mca/pml/ob1/pml_ob1_comm.h" #include "ompi/mca/bml/bml.h" #include "oshmem/mca/spml/yoda/spml_yoda_rdmafrag.h" #include "oshmem/mca/spml/yoda/spml_yoda.h" #include "orte/runtime/orte_globals.h" #include "oshmem/mca/spml/base/spml_base_getreq.h" BEGIN_C_DECLS struct mca_spml_yoda_getreq_parent { int32_t active_count; }; struct mca_spml_yoda_get_request_t { mca_spml_base_get_request_t req_get; uint64_t *p_dst; struct mca_spml_yoda_getreq_parent *parent; mca_spml_yoda_rdma_frag_t get_frag; }; typedef struct mca_spml_yoda_get_request_t mca_spml_yoda_get_request_t; OBJ_CLASS_DECLARATION(mca_spml_yoda_get_request_t); static inline mca_spml_yoda_get_request_t *mca_spml_yoda_getreq_alloc(int dst) { ompi_free_list_item_t *item; mca_spml_yoda_get_request_t *getreq; OMPI_FREE_LIST_WAIT_MT(&mca_spml_base_get_requests, item); getreq = (mca_spml_yoda_get_request_t*) item; assert(getreq); getreq->req_get.req_base.req_free_called = false; getreq->req_get.req_base.req_oshmem.req_complete = false; return getreq; } void mca_spml_yoda_get_completion(mca_btl_base_module_t* btl, struct mca_btl_base_endpoint_t* ep, struct mca_btl_base_descriptor_t* des, int status); void mca_spml_yoda_get_response_completion(mca_btl_base_module_t* btl, struct mca_btl_base_endpoint_t* ep, struct mca_btl_base_descriptor_t* des, int status); END_C_DECLS #endif /* OSHMEM_SPML_YODA_GET_REQUEST_H */