1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
2 /*
3 * Copyright (c) 2013-2014 Los Alamos National Security, LLC. All rights
4 * reserved.
5 * Copyright (c) 2016 ARM, Inc. All rights reserved.
6 * $COPYRIGHT$
7 *
8 * Additional copyrights may follow
9 *
10 * $HEADER$
11 */
12
13 #if !defined(MCA_BTL_VADER_XPMEM_H)
14 #define MCA_BTL_VADER_XPMEM_H
15
16 #if OPAL_BTL_VADER_HAVE_XPMEM
17
18 #if defined(HAVE_XPMEM_H)
19 #include <xpmem.h>
20
21 typedef struct xpmem_addr xpmem_addr_t;
22 #elif defined(HAVE_SN_XPMEM_H)
23 #include <sn/xpmem.h>
24
25 typedef int64_t xpmem_segid_t;
26 typedef int64_t xpmem_apid_t;
27 #endif
28
29 #include <opal/mca/rcache/base/rcache_base_vma.h>
30 #include <opal/mca/rcache/rcache.h>
31
32 /* look up the remote pointer in the peer rcache and attach if
33 * necessary */
34
35 /* largest address we can attach to using xpmem */
36 #if defined(__x86_64__)
37 #define VADER_MAX_ADDRESS ((uintptr_t)0x7ffffffff000ul)
38 #else
39 #define VADER_MAX_ADDRESS XPMEM_MAXADDR_SIZE
40 #endif
41
42 struct mca_btl_base_endpoint_t;
43
44 int mca_btl_vader_xpmem_init (void);
45
46 mca_rcache_base_registration_t *vader_get_registation (struct mca_btl_base_endpoint_t *endpoint, void *rem_ptr,
47 size_t size, int flags, void **local_ptr);
48
49 void vader_return_registration (mca_rcache_base_registration_t *reg, struct mca_btl_base_endpoint_t *endpoint);
50 void mca_btl_vader_xpmem_cleanup_endpoint (struct mca_btl_base_endpoint_t *ep);
51
52 #else
53
vader_get_registation(struct mca_btl_base_endpoint_t * endpoint,void * rem_ptr,size_t size,int flags,void ** local_ptr)54 static inline mca_rcache_base_registration_t *vader_get_registation (struct mca_btl_base_endpoint_t *endpoint, void *rem_ptr,
55 size_t size, int flags, void **local_ptr)
56 {
57 (void) endpoint;
58 (void) rem_ptr;
59 (void) size;
60 (void) flags;
61 (void) local_ptr;
62 return NULL;
63 }
64
vader_return_registration(mca_rcache_base_registration_t * reg,struct mca_btl_base_endpoint_t * endpoint)65 static inline void vader_return_registration (mca_rcache_base_registration_t *reg, struct mca_btl_base_endpoint_t *endpoint)
66 {
67 (void) reg;
68 (void) endpoint;
69 }
70
71 #endif /* OPAL_BTL_VADER_HAVE_XPMEM */
72
73 #endif
74