1 /* 2 * Copyright (c) 2013-2017 Intel Corporation. All rights reserved. 3 * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved. 4 * 5 * This software is available to you under a choice of one of two 6 * licenses. You may choose to be licensed under the terms of the GNU 7 * General Public License (GPL) Version 2, available from the file 8 * COPYING in the main directory of this source tree, or the 9 * BSD license below: 10 * 11 * Redistribution and use in source and binary forms, with or 12 * without modification, are permitted provided that the following 13 * conditions are met: 14 * 15 * - Redistributions of source code must retain the above 16 * copyright notice, this list of conditions and the following 17 * disclaimer. 18 * 19 * - Redistributions in binary form must reproduce the above 20 * copyright notice, this list of conditions and the following 21 * disclaimer in the documentation and/or other materials 22 * provided with the distribution. 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 * SOFTWARE. 32 */ 33 34 #ifndef _OFI_PROV_H_ 35 #define _OFI_PROV_H_ 36 37 #include "config.h" 38 39 #include <rdma/providers/fi_prov.h> 40 41 /* Provider initialization function signature that built-in providers 42 * must specify. */ 43 #define INI_SIG(name) struct fi_provider* name(void) 44 45 /* for each provider defines for three scenarios: 46 * dl: externally visible ctor with known name (see fi_prov.h) 47 * built-in: ctor function def, don't export symbols 48 * not built: no-op call for ctor 49 */ 50 51 #if (HAVE_GNI) && (HAVE_GNI_DL) 52 # define GNI_INI FI_EXT_INI 53 # define GNI_INIT NULL 54 #elif (HAVE_GNI) 55 # define GNI_INI INI_SIG(fi_gni_ini) 56 # define GNI_INIT fi_gni_ini() 57 GNI_INI ; 58 #else 59 # define GNI_INIT NULL 60 #endif 61 62 #if (HAVE_VERBS) && (HAVE_VERBS_DL) 63 # define VERBS_INI FI_EXT_INI 64 # define VERBS_INIT NULL 65 #elif (HAVE_VERBS) 66 # define VERBS_INI INI_SIG(fi_verbs_ini) 67 # define VERBS_INIT fi_verbs_ini() 68 VERBS_INI ; 69 #else 70 # define VERBS_INIT NULL 71 #endif 72 73 #if (HAVE_EFA) && (HAVE_EFA_DL) 74 # define EFA_INI FI_EXT_INI 75 # define EFA_INIT NULL 76 #elif (HAVE_EFA) 77 # define EFA_INI INI_SIG(fi_efa_ini) 78 # define EFA_INIT fi_efa_ini() 79 EFA_INI ; 80 #else 81 # define EFA_INIT NULL 82 #endif 83 84 #if (HAVE_PSM) && (HAVE_PSM_DL) 85 # define PSM_INI FI_EXT_INI 86 # define PSM_INIT NULL 87 #elif (HAVE_PSM) 88 # define PSM_INI INI_SIG(fi_psm_ini) 89 # define PSM_INIT fi_psm_ini() 90 PSM_INI ; 91 #else 92 # define PSM_INIT NULL 93 #endif 94 95 #if (HAVE_PSM2) && (HAVE_PSM2_DL) 96 # define PSM2_INI FI_EXT_INI 97 # define PSM2_INIT NULL 98 #elif (HAVE_PSM2) 99 # define PSM2_INI INI_SIG(fi_psm2_ini) 100 # define PSM2_INIT fi_psm2_ini() 101 PSM2_INI ; 102 #else 103 # define PSM2_INIT NULL 104 #endif 105 106 #if (HAVE_SOCKETS) && (HAVE_SOCKETS_DL) 107 # define SOCKETS_INI FI_EXT_INI 108 # define SOCKETS_INIT NULL 109 #elif (HAVE_SOCKETS) 110 # define SOCKETS_INI INI_SIG(fi_sockets_ini) 111 # define SOCKETS_INIT fi_sockets_ini() 112 SOCKETS_INI ; 113 #else 114 # define SOCKETS_INIT NULL 115 #endif 116 117 #if (HAVE_USNIC) && (HAVE_USNIC_DL) 118 # define USNIC_INI FI_EXT_INI 119 # define USNIC_INIT NULL 120 #elif (HAVE_USNIC) 121 # define USNIC_INI INI_SIG(fi_usnic_ini) 122 # define USNIC_INIT fi_usnic_ini() 123 USNIC_INI ; 124 #else 125 # define USNIC_INIT NULL 126 #endif 127 128 #if (HAVE_UDP) && (HAVE_UDP_DL) 129 # define UDP_INI FI_EXT_INI 130 # define UDP_INIT NULL 131 #elif (HAVE_UDP) 132 # define UDP_INI INI_SIG(fi_udp_ini) 133 # define UDP_INIT fi_udp_ini() 134 UDP_INI ; 135 #else 136 # define UDP_INIT NULL 137 #endif 138 139 #if (HAVE_TCP) && (HAVE_TCP_DL) 140 # define TCP_INI FI_EXT_INI 141 # define TCP_INIT NULL 142 #elif (HAVE_TCP) 143 # define TCP_INI INI_SIG(fi_tcp_ini) 144 # define TCP_INIT fi_tcp_ini() 145 TCP_INI ; 146 #else 147 # define TCP_INIT NULL 148 #endif 149 150 #if (HAVE_RXM) && (HAVE_RXM_DL) 151 # define RXM_INI FI_EXT_INI 152 # define RXM_INIT NULL 153 #elif (HAVE_RXM) 154 # define RXM_INI INI_SIG(fi_rxm_ini) 155 # define RXM_INIT fi_rxm_ini() 156 RXM_INI ; 157 #else 158 # define RXM_INIT NULL 159 #endif 160 161 #if (HAVE_RXD) && (HAVE_RXD_DL) 162 # define RXD_INI FI_EXT_INI 163 # define RXD_INIT NULL 164 #elif (HAVE_RXD) 165 # define RXD_INI INI_SIG(fi_rxd_ini) 166 # define RXD_INIT fi_rxd_ini() 167 RXD_INI ; 168 #else 169 # define RXD_INIT NULL 170 #endif 171 172 #if (HAVE_BGQ) && (HAVE_BGQ_DL) 173 # define BGQ_INI FI_EXT_INI 174 # define BGQ_INIT NULL 175 #elif (HAVE_BGQ) 176 # define BGQ_INI INI_SIG(fi_bgq_ini) 177 # define BGQ_INIT fi_bgq_ini() 178 BGQ_INI ; 179 #else 180 # define BGQ_INIT NULL 181 #endif 182 183 #ifdef _WIN32 184 #if (HAVE_NETDIR) && (HAVE_NETDIR_DL) 185 # define NETDIR_INI FI_EXT_INI 186 # define NETDIR_INIT NULL 187 #elif (HAVE_NETDIR) 188 # define NETDIR_INI INI_SIG(fi_netdir_ini) 189 # define NETDIR_INIT fi_netdir_ini() 190 NETDIR_INI ; 191 #else 192 # define NETDIR_INIT NULL 193 #endif 194 #else /* _WIN32 */ 195 # define NETDIR_INIT NULL 196 #endif /* _WIN32 */ 197 198 #if (HAVE_SHM) && (HAVE_SHM_DL) 199 # define SHM_INI FI_EXT_INI 200 # define SHM_INIT NULL 201 #elif (HAVE_SHM) 202 # define SHM_INI INI_SIG(fi_shm_ini) 203 # define SHM_INIT fi_shm_ini() 204 SHM_INI ; 205 #else 206 # define SHM_INIT NULL 207 #endif 208 209 #if (HAVE_MRAIL) && (HAVE_MRAIL_DL) 210 # define MRAIL_INI FI_EXT_INI 211 # define MRAIL_INIT NULL 212 #elif (HAVE_MRAIL) 213 # define MRAIL_INI INI_SIG(fi_mrail_ini) 214 # define MRAIL_INIT fi_mrail_ini() 215 MRAIL_INI ; 216 #else 217 # define MRAIL_INIT NULL 218 #endif 219 220 #if (HAVE_RSTREAM) && (HAVE_RSTREAM_DL) 221 # define RSTREAM_INI FI_EXT_INI 222 # define RSTREAM_INIT NULL 223 #elif (HAVE_RSTREAM) 224 # define RSTREAM_INI INI_SIG(fi_rstream_ini) 225 # define RSTREAM_INIT fi_rstream_ini() 226 RSTREAM_INI ; 227 #else 228 # define RSTREAM_INIT NULL 229 #endif 230 231 #if(HAVE_PERF) 232 # define HOOK_PERF_INI INI_SIG(fi_hook_perf_ini) 233 # define HOOK_PERF_INIT fi_hook_perf_ini() 234 HOOK_PERF_INI ; 235 #else 236 # define HOOK_PERF_INIT NULL 237 #endif 238 239 #if(HAVE_HOOK_DEBUG) 240 # define HOOK_DEBUG_INI INI_SIG(fi_debug_hook_ini) 241 # define HOOK_DEBUG_INIT fi_debug_hook_ini() 242 HOOK_DEBUG_INI ; 243 #else 244 # define HOOK_DEBUG_INIT NULL 245 #endif 246 247 # define HOOK_NOOP_INI INI_SIG(fi_hook_noop_ini) 248 # define HOOK_NOOP_INIT fi_hook_noop_ini() 249 HOOK_NOOP_INI ; 250 251 #endif /* _OFI_PROV_H_ */ 252