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