1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ 2 /* 3 * Copyright (c) 2014-2015 Los Alamos National Security, LLC. All rights 4 * reserved. 5 * $COPYRIGHT$ 6 * 7 * Additional copyrights may follow 8 * 9 * $HEADER$ 10 */ 11 12 #include "osc_rdma.h" 13 14 /** 15 * @brief attach a region to a window 16 * 17 * @param[in] win mpi window 18 * @param[in] base base pointer of region 19 * @param[in] len region size 20 * 21 * @returns OMPI_SUCCESS on success 22 * @returns OMPI_ERR_RMA_FLAVOR if the window is not a dynamic window 23 * @returns OMPI_ERR_RMA_ATTACH if the region could not be attached 24 * 25 * This function attaches a region to the local window. After this call 26 * completes the region will be available for RMA access by all peers in 27 * the window. 28 */ 29 int ompi_osc_rdma_attach (struct ompi_win_t *win, void *base, size_t len); 30 31 /** 32 * @brief detach a region from a window 33 * 34 * @param[in] win mpi window 35 * @param[in] base base pointer of region specified to ompi_osc_rdma_attach() 36 * 37 * @returns OMPI_SUCCESS on success 38 * @returns OMPI_ERR_RMA_FLAVOR if the window is not a dynamic window 39 * @returns OMPI_ERROR if the region is not attached 40 * 41 * This function requires that a region with the same base has been attached 42 * using the ompi_osc_rdma_attach() function. 43 */ 44 int ompi_osc_rdma_detach (struct ompi_win_t *win, const void *base); 45 46 /** 47 * @brief find dynamic region associated with a peer, base, and len 48 * 49 * @param[in] module osc rdma module 50 * @param[in] peer peer object for remote peer 51 * @param[in] base base pointer for region 52 * @param[in] len length of region 53 * @param[out] region region structure for the region 54 * 55 * @returns OMPI_SUCCESS on success 56 * @returns OMPI_ERR_OUT_OF_RESOURCE on resource failure 57 * @returns OMPI_ERR_RMA_RANGE if no region matches 58 */ 59 int ompi_osc_rdma_find_dynamic_region (ompi_osc_rdma_module_t *module, ompi_osc_rdma_peer_t *peer, uint64_t base, size_t len, 60 ompi_osc_rdma_region_t **region);