1 /*
2  * Copyright (c) 2014 Intel Corporation. All rights reserved.
3  *
4  * This software is available to you under a choice of one of two
5  * licenses.  You may choose to be licensed under the terms of the GNU
6  * General Public License (GPL) Version 2, available from the file
7  * COPYING in the main directory of this source tree, or the
8  * BSD license below:
9  *
10  *     Redistribution and use in source and binary forms, with or
11  *     without modification, are permitted provided that the following
12  *     conditions are met:
13  *
14  *      - Redistributions of source code must retain the above
15  *        copyright notice, this list of conditions and the following
16  *        disclaimer.
17  *
18  *      - Redistributions in binary form must reproduce the above
19  *        copyright notice, this list of conditions and the following
20  *        disclaimer in the documentation and/or other materials
21  *        provided with the distribution.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30  * SOFTWARE.
31  */
32 
33 #include <pthread.h>
34 #include <stdio.h>
35 #include <rdma/fabric.h>
36 #include <rdma/fi_errno.h>
37 #include "ofi_enosys.h"
38 
39 
40 /*
41  * struct fi_ops
42  */
fi_no_bind(struct fid * fid,struct fid * bfid,uint64_t flags)43 int fi_no_bind(struct fid *fid, struct fid *bfid, uint64_t flags)
44 {
45 	return -FI_ENOSYS;
46 }
fi_no_control(struct fid * fid,int command,void * arg)47 int fi_no_control(struct fid *fid, int command, void *arg)
48 {
49 	return -FI_ENOSYS;
50 }
fi_no_ops_open(struct fid * fid,const char * name,uint64_t flags,void ** ops,void * context)51 int fi_no_ops_open(struct fid *fid, const char *name,
52 		uint64_t flags, void **ops, void *context)
53 {
54 	return -FI_ENOSYS;
55 }
56 
57 /*
58  * struct fi_ops_fabric
59  */
fi_no_domain(struct fid_fabric * fabric,struct fi_info * info,struct fid_domain ** dom,void * context)60 int fi_no_domain(struct fid_fabric *fabric, struct fi_info *info,
61 		struct fid_domain **dom, void *context)
62 {
63 	return -FI_ENOSYS;
64 }
fi_no_passive_ep(struct fid_fabric * fabric,struct fi_info * info,struct fid_pep ** pep,void * context)65 int fi_no_passive_ep(struct fid_fabric *fabric, struct fi_info *info,
66 		struct fid_pep **pep, void *context)
67 {
68 	return -FI_ENOSYS;
69 }
fi_no_eq_open(struct fid_fabric * fabric,struct fi_eq_attr * attr,struct fid_eq ** eq,void * context)70 int fi_no_eq_open(struct fid_fabric *fabric, struct fi_eq_attr *attr,
71 		struct fid_eq **eq, void *context)
72 {
73 	return -FI_ENOSYS;
74 }
fi_no_wait_open(struct fid_fabric * fabric,struct fi_wait_attr * attr,struct fid_wait ** waitset)75 int fi_no_wait_open(struct fid_fabric *fabric, struct fi_wait_attr *attr,
76 		struct fid_wait **waitset)
77 {
78 	return -FI_ENOSYS;
79 }
fi_no_trywait(struct fid_fabric * fabric,struct fid ** fids,int count)80 int fi_no_trywait(struct fid_fabric *fabric, struct fid **fids, int count)
81 {
82 	return -FI_ENOSYS;
83 }
84 
85 /*
86  * struct fi_ops_atomic
87  */
fi_no_atomic_write(struct fid_ep * ep,const void * buf,size_t count,void * desc,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op,void * context)88 ssize_t fi_no_atomic_write(struct fid_ep *ep,
89 		const void *buf, size_t count, void *desc,
90 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
91 		enum fi_datatype datatype, enum fi_op op, void *context)
92 {
93 	return -FI_ENOSYS;
94 }
fi_no_atomic_writev(struct fid_ep * ep,const struct fi_ioc * iov,void ** desc,size_t count,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op,void * context)95 ssize_t fi_no_atomic_writev(struct fid_ep *ep,
96 		const struct fi_ioc *iov, void **desc, size_t count,
97 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
98 		enum fi_datatype datatype, enum fi_op op, void *context)
99 {
100 	return -FI_ENOSYS;
101 }
fi_no_atomic_writemsg(struct fid_ep * ep,const struct fi_msg_atomic * msg,uint64_t flags)102 ssize_t fi_no_atomic_writemsg(struct fid_ep *ep,
103 		const struct fi_msg_atomic *msg, uint64_t flags)
104 {
105 	return -FI_ENOSYS;
106 }
fi_no_atomic_inject(struct fid_ep * ep,const void * buf,size_t count,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op)107 ssize_t fi_no_atomic_inject(struct fid_ep *ep, const void *buf, size_t count,
108 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
109 		enum fi_datatype datatype, enum fi_op op)
110 {
111 	return -FI_ENOSYS;
112 }
fi_no_atomic_readwrite(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op,void * context)113 ssize_t fi_no_atomic_readwrite(struct fid_ep *ep,
114 		const void *buf, size_t count, void *desc,
115 		void *result, void *result_desc,
116 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
117 		enum fi_datatype datatype, enum fi_op op, void *context)
118 {
119 	return -FI_ENOSYS;
120 }
fi_no_atomic_readwritev(struct fid_ep * ep,const struct fi_ioc * iov,void ** desc,size_t count,struct fi_ioc * resultv,void ** result_desc,size_t result_count,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op,void * context)121 ssize_t fi_no_atomic_readwritev(struct fid_ep *ep,
122 		const struct fi_ioc *iov, void **desc, size_t count,
123 		struct fi_ioc *resultv, void **result_desc, size_t result_count,
124 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
125 		enum fi_datatype datatype, enum fi_op op, void *context)
126 {
127 	return -FI_ENOSYS;
128 }
fi_no_atomic_readwritemsg(struct fid_ep * ep,const struct fi_msg_atomic * msg,struct fi_ioc * resultv,void ** result_desc,size_t result_count,uint64_t flags)129 ssize_t fi_no_atomic_readwritemsg(struct fid_ep *ep,
130 		const struct fi_msg_atomic *msg,
131 		struct fi_ioc *resultv, void **result_desc, size_t result_count,
132 		uint64_t flags)
133 {
134 	return -FI_ENOSYS;
135 }
fi_no_atomic_compwrite(struct fid_ep * ep,const void * buf,size_t count,void * desc,const void * compare,void * compare_desc,void * result,void * result_desc,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op,void * context)136 ssize_t fi_no_atomic_compwrite(struct fid_ep *ep,
137 		const void *buf, size_t count, void *desc,
138 		const void *compare, void *compare_desc,
139 		void *result, void *result_desc,
140 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
141 		enum fi_datatype datatype, enum fi_op op, void *context)
142 {
143 	return -FI_ENOSYS;
144 }
fi_no_atomic_compwritev(struct fid_ep * ep,const struct fi_ioc * iov,void ** desc,size_t count,const struct fi_ioc * comparev,void ** compare_desc,size_t compare_count,struct fi_ioc * resultv,void ** result_desc,size_t result_count,fi_addr_t dest_addr,uint64_t addr,uint64_t key,enum fi_datatype datatype,enum fi_op op,void * context)145 ssize_t fi_no_atomic_compwritev(struct fid_ep *ep,
146 		const struct fi_ioc *iov, void **desc, size_t count,
147 		const struct fi_ioc *comparev, void **compare_desc, size_t compare_count,
148 		struct fi_ioc *resultv, void **result_desc, size_t result_count,
149 		fi_addr_t dest_addr, uint64_t addr, uint64_t key,
150 		enum fi_datatype datatype, enum fi_op op, void *context)
151 {
152 	return -FI_ENOSYS;
153 }
fi_no_atomic_compwritemsg(struct fid_ep * ep,const struct fi_msg_atomic * msg,const struct fi_ioc * comparev,void ** compare_desc,size_t compare_count,struct fi_ioc * resultv,void ** result_desc,size_t result_count,uint64_t flags)154 ssize_t fi_no_atomic_compwritemsg(struct fid_ep *ep,
155 		const struct fi_msg_atomic *msg,
156 		const struct fi_ioc *comparev, void **compare_desc, size_t compare_count,
157 		struct fi_ioc *resultv, void **result_desc, size_t result_count,
158 		uint64_t flags)
159 {
160 	return -FI_ENOSYS;
161 }
fi_no_atomic_writevalid(struct fid_ep * ep,enum fi_datatype datatype,enum fi_op op,size_t * count)162 int fi_no_atomic_writevalid(struct fid_ep *ep,
163 		enum fi_datatype datatype, enum fi_op op, size_t *count)
164 {
165 	return -FI_ENOSYS;
166 }
fi_no_atomic_readwritevalid(struct fid_ep * ep,enum fi_datatype datatype,enum fi_op op,size_t * count)167 int fi_no_atomic_readwritevalid(struct fid_ep *ep,
168 		enum fi_datatype datatype, enum fi_op op, size_t *count)
169 {
170 	return -FI_ENOSYS;
171 }
fi_no_atomic_compwritevalid(struct fid_ep * ep,enum fi_datatype datatype,enum fi_op op,size_t * count)172 int fi_no_atomic_compwritevalid(struct fid_ep *ep,
173 		enum fi_datatype datatype, enum fi_op op, size_t *count)
174 {
175 	return -FI_ENOSYS;
176 }
177 
178 /*
179  * struct fi_ops_cm
180  */
fi_no_setname(fid_t fid,void * addr,size_t addrlen)181 int fi_no_setname(fid_t fid, void *addr, size_t addrlen)
182 {
183 	return -FI_ENOSYS;
184 }
fi_no_getname(fid_t fid,void * addr,size_t * addrlen)185 int fi_no_getname(fid_t fid, void *addr, size_t *addrlen)
186 {
187 	return -FI_ENOSYS;
188 }
fi_no_getpeer(struct fid_ep * ep,void * addr,size_t * addrlen)189 int fi_no_getpeer(struct fid_ep *ep, void *addr, size_t *addrlen)
190 {
191 	return -FI_ENOSYS;
192 }
fi_no_connect(struct fid_ep * ep,const void * addr,const void * param,size_t paramlen)193 int fi_no_connect(struct fid_ep *ep, const void *addr,
194 		const void *param, size_t paramlen)
195 {
196 	return -FI_ENOSYS;
197 }
fi_no_listen(struct fid_pep * pep)198 int fi_no_listen(struct fid_pep *pep)
199 {
200 	return -FI_ENOSYS;
201 }
fi_no_accept(struct fid_ep * ep,const void * param,size_t paramlen)202 int fi_no_accept(struct fid_ep *ep, const void *param, size_t paramlen)
203 {
204 	return -FI_ENOSYS;
205 }
fi_no_reject(struct fid_pep * pep,fid_t handle,const void * param,size_t paramlen)206 int fi_no_reject(struct fid_pep *pep, fid_t handle,
207 		const void *param, size_t paramlen)
208 {
209 	return -FI_ENOSYS;
210 }
fi_no_shutdown(struct fid_ep * ep,uint64_t flags)211 int fi_no_shutdown(struct fid_ep *ep, uint64_t flags)
212 {
213 	return -FI_ENOSYS;
214 }
fi_no_join(struct fid_ep * ep,const void * addr,uint64_t flags,struct fid_mc ** mc,void * context)215 int fi_no_join(struct fid_ep *ep, const void *addr, uint64_t flags,
216 			  struct fid_mc **mc, void *context)
217 {
218 	return -FI_ENOSYS;
219 }
220 
221 /*
222  * struct fi_ops_av
223  */
224 
225 /*
226  * struct fi_ops_domain
227  */
fi_no_av_open(struct fid_domain * domain,struct fi_av_attr * attr,struct fid_av ** av,void * context)228 int fi_no_av_open(struct fid_domain *domain, struct fi_av_attr *attr,
229 		struct fid_av **av, void *context)
230 {
231 	return -FI_ENOSYS;
232 }
fi_no_cq_open(struct fid_domain * domain,struct fi_cq_attr * attr,struct fid_cq ** cq,void * context)233 int fi_no_cq_open(struct fid_domain *domain, struct fi_cq_attr *attr,
234 		struct fid_cq **cq, void *context)
235 {
236 	return -FI_ENOSYS;
237 }
fi_no_endpoint(struct fid_domain * domain,struct fi_info * info,struct fid_ep ** ep,void * context)238 int fi_no_endpoint(struct fid_domain *domain, struct fi_info *info,
239 		struct fid_ep **ep, void *context)
240 {
241 	return -FI_ENOSYS;
242 }
fi_no_scalable_ep(struct fid_domain * domain,struct fi_info * info,struct fid_ep ** sep,void * context)243 int fi_no_scalable_ep(struct fid_domain *domain, struct fi_info *info,
244 		struct fid_ep **sep, void *context)
245 {
246 	return -FI_ENOSYS;
247 }
fi_no_cntr_open(struct fid_domain * domain,struct fi_cntr_attr * attr,struct fid_cntr ** cntr,void * context)248 int fi_no_cntr_open(struct fid_domain *domain, struct fi_cntr_attr *attr,
249 		struct fid_cntr **cntr, void *context)
250 {
251 	return -FI_ENOSYS;
252 }
fi_no_poll_open(struct fid_domain * domain,struct fi_poll_attr * attr,struct fid_poll ** pollset)253 int fi_no_poll_open(struct fid_domain *domain, struct fi_poll_attr *attr,
254 		struct fid_poll **pollset)
255 {
256 	return -FI_ENOSYS;
257 }
fi_no_stx_context(struct fid_domain * domain,struct fi_tx_attr * attr,struct fid_stx ** stx,void * context)258 int fi_no_stx_context(struct fid_domain *domain, struct fi_tx_attr *attr,
259 		struct fid_stx **stx, void *context)
260 {
261 	return -FI_ENOSYS;
262 }
fi_no_srx_context(struct fid_domain * domain,struct fi_rx_attr * attr,struct fid_ep ** rx_ep,void * context)263 int fi_no_srx_context(struct fid_domain *domain, struct fi_rx_attr *attr,
264 		struct fid_ep **rx_ep, void *context)
265 {
266 	return -FI_ENOSYS;
267 }
fi_no_query_atomic(struct fid_domain * domain,enum fi_datatype datatype,enum fi_op op,struct fi_atomic_attr * attr,uint64_t flags)268 int fi_no_query_atomic(struct fid_domain *domain, enum fi_datatype datatype,
269 		enum fi_op op, struct fi_atomic_attr *attr, uint64_t flags)
270 {
271 	return -FI_ENOSYS;
272 }
fi_no_query_collective(struct fid_domain * domain,enum fi_collective_op coll,struct fi_collective_attr * attr,uint64_t flags)273 int fi_no_query_collective(struct fid_domain *domain, enum fi_collective_op coll,
274 			   struct fi_collective_attr *attr, uint64_t flags)
275 {
276 	return -FI_ENOSYS;
277 }
278 
279 /*
280  * struct fi_ops_mr
281  */
fi_no_mr_reg(struct fid * fid,const void * buf,size_t len,uint64_t access,uint64_t offset,uint64_t requested_key,uint64_t flags,struct fid_mr ** mr,void * context)282 int fi_no_mr_reg(struct fid *fid, const void *buf, size_t len,
283 		uint64_t access, uint64_t offset, uint64_t requested_key,
284 		uint64_t flags, struct fid_mr **mr, void *context)
285 {
286 	return -FI_ENOSYS;
287 }
fi_no_mr_regv(struct fid * fid,const struct iovec * iov,size_t count,uint64_t access,uint64_t offset,uint64_t requested_key,uint64_t flags,struct fid_mr ** mr,void * context)288 int fi_no_mr_regv(struct fid *fid, const struct iovec *iov,
289 		size_t count, uint64_t access,
290 		uint64_t offset, uint64_t requested_key,
291 		uint64_t flags, struct fid_mr **mr, void *context)
292 {
293 	return -FI_ENOSYS;
294 }
fi_no_mr_regattr(struct fid * fid,const struct fi_mr_attr * attr,uint64_t flags,struct fid_mr ** mr)295 int fi_no_mr_regattr(struct fid *fid, const struct fi_mr_attr *attr,
296 		uint64_t flags, struct fid_mr **mr)
297 {
298 	return -FI_ENOSYS;
299 }
300 
301 /*
302  * struct fi_ops_ep
303  */
fi_no_cancel(fid_t fid,void * context)304 ssize_t fi_no_cancel(fid_t fid, void *context)
305 {
306 	return -FI_ENOSYS;
307 }
fi_no_getopt(fid_t fid,int level,int optname,void * optval,size_t * optlen)308 int fi_no_getopt(fid_t fid, int level, int optname,
309 		void *optval, size_t *optlen)
310 {
311 	return -FI_ENOSYS;
312 }
fi_no_setopt(fid_t fid,int level,int optname,const void * optval,size_t optlen)313 int fi_no_setopt(fid_t fid, int level, int optname,
314 		const void *optval, size_t optlen)
315 {
316 	return -FI_ENOSYS;
317 }
fi_no_tx_ctx(struct fid_ep * sep,int index,struct fi_tx_attr * attr,struct fid_ep ** tx_ep,void * context)318 int fi_no_tx_ctx(struct fid_ep *sep, int index,
319 		struct fi_tx_attr *attr, struct fid_ep **tx_ep,
320 		void *context)
321 {
322 	return -FI_ENOSYS;
323 }
fi_no_rx_ctx(struct fid_ep * sep,int index,struct fi_rx_attr * attr,struct fid_ep ** rx_ep,void * context)324 int fi_no_rx_ctx(struct fid_ep *sep, int index,
325 		struct fi_rx_attr *attr, struct fid_ep **rx_ep,
326 		void *context)
327 {
328 	return -FI_ENOSYS;
329 }
fi_no_rx_size_left(struct fid_ep * ep)330 ssize_t fi_no_rx_size_left(struct fid_ep *ep)
331 {
332 	return -FI_ENOSYS;
333 }
fi_no_tx_size_left(struct fid_ep * ep)334 ssize_t fi_no_tx_size_left(struct fid_ep *ep)
335 {
336 	return -FI_ENOSYS;
337 }
338 
339 /*
340  * struct fi_ops_msg
341  */
fi_no_msg_recv(struct fid_ep * ep,void * buf,size_t len,void * desc,fi_addr_t src_addr,void * context)342 ssize_t fi_no_msg_recv(struct fid_ep *ep, void *buf, size_t len, void *desc,
343 		fi_addr_t src_addr, void *context)
344 {
345 	return -FI_ENOSYS;
346 }
fi_no_msg_recvv(struct fid_ep * ep,const struct iovec * iov,void ** desc,size_t count,fi_addr_t src_addr,void * context)347 ssize_t fi_no_msg_recvv(struct fid_ep *ep, const struct iovec *iov, void **desc,
348 		size_t count, fi_addr_t src_addr, void *context)
349 {
350 	return -FI_ENOSYS;
351 }
fi_no_msg_recvmsg(struct fid_ep * ep,const struct fi_msg * msg,uint64_t flags)352 ssize_t fi_no_msg_recvmsg(struct fid_ep *ep, const struct fi_msg *msg,
353 		uint64_t flags)
354 {
355 	return -FI_ENOSYS;
356 }
fi_no_msg_send(struct fid_ep * ep,const void * buf,size_t len,void * desc,fi_addr_t dest_addr,void * context)357 ssize_t fi_no_msg_send(struct fid_ep *ep, const void *buf, size_t len, void *desc,
358 		fi_addr_t dest_addr, void *context)
359 {
360 	return -FI_ENOSYS;
361 }
fi_no_msg_sendv(struct fid_ep * ep,const struct iovec * iov,void ** desc,size_t count,fi_addr_t dest_addr,void * context)362 ssize_t fi_no_msg_sendv(struct fid_ep *ep, const struct iovec *iov, void **desc,
363 		size_t count, fi_addr_t dest_addr, void *context)
364 {
365 	return -FI_ENOSYS;
366 }
fi_no_msg_sendmsg(struct fid_ep * ep,const struct fi_msg * msg,uint64_t flags)367 ssize_t fi_no_msg_sendmsg(struct fid_ep *ep, const struct fi_msg *msg,
368 		uint64_t flags)
369 {
370 	return -FI_ENOSYS;
371 }
fi_no_msg_inject(struct fid_ep * ep,const void * buf,size_t len,fi_addr_t dest_addr)372 ssize_t fi_no_msg_inject(struct fid_ep *ep, const void *buf, size_t len,
373 		fi_addr_t dest_addr)
374 {
375 	return -FI_ENOSYS;
376 }
fi_no_msg_senddata(struct fid_ep * ep,const void * buf,size_t len,void * desc,uint64_t data,fi_addr_t dest_addr,void * context)377 ssize_t fi_no_msg_senddata(struct fid_ep *ep, const void *buf, size_t len, void *desc,
378 		uint64_t data, fi_addr_t dest_addr, void *context)
379 {
380 	return -FI_ENOSYS;
381 }
fi_no_msg_injectdata(struct fid_ep * ep,const void * buf,size_t len,uint64_t data,fi_addr_t dest_addr)382 ssize_t fi_no_msg_injectdata(struct fid_ep *ep, const void *buf, size_t len,
383 		uint64_t data, fi_addr_t dest_addr)
384 {
385 	return -FI_ENOSYS;
386 }
387 
388 /*
389  * struct fi_ops_wait
390  */
391 
392 /*
393  * struct fi_ops_poll
394  */
395 
396 /*
397  * struct fi_ops_eq
398  */
fi_no_eq_write(struct fid_eq * eq,uint32_t event,const void * buf,size_t len,uint64_t flags)399 ssize_t fi_no_eq_write(struct fid_eq *eq, uint32_t event,
400 		const void *buf, size_t len, uint64_t flags)
401 {
402 	return -FI_ENOSYS;
403 }
fi_no_eq_sread(struct fid_eq * eq,uint32_t * event,void * buf,size_t len,int timeout,uint64_t flags)404 ssize_t fi_no_eq_sread(struct fid_eq *eq, uint32_t *event,
405 		void *buf, size_t len, int timeout, uint64_t flags)
406 {
407 	return -FI_ENOSYS;
408 }
409 
410 /*
411  * struct fi_ops_cq
412  */
fi_no_cq_read(struct fid_cq * cq,void * buf,size_t count)413 ssize_t fi_no_cq_read(struct fid_cq *cq, void *buf, size_t count)
414 {
415 	return -FI_ENOSYS;
416 }
fi_no_cq_readerr(struct fid_cq * cq,struct fi_cq_err_entry * buf,uint64_t flags)417 ssize_t fi_no_cq_readerr(struct fid_cq *cq, struct fi_cq_err_entry *buf,
418 		                uint64_t flags)
419 {
420 	return -FI_ENOSYS;
421 }
fi_no_cq_readfrom(struct fid_cq * cq,void * buf,size_t count,fi_addr_t * src_addr)422 ssize_t fi_no_cq_readfrom(struct fid_cq *cq, void *buf, size_t count,
423 		fi_addr_t *src_addr)
424 {
425 	return -FI_ENOSYS;
426 }
fi_no_cq_sread(struct fid_cq * cq,void * buf,size_t count,const void * cond,int timeout)427 ssize_t fi_no_cq_sread(struct fid_cq *cq, void *buf, size_t count,
428 		const void *cond, int timeout)
429 {
430 	return -FI_ENOSYS;
431 }
fi_no_cq_sreadfrom(struct fid_cq * cq,void * buf,size_t count,fi_addr_t * src_addr,const void * cond,int timeout)432 ssize_t fi_no_cq_sreadfrom(struct fid_cq *cq, void *buf, size_t count,
433 		fi_addr_t *src_addr, const void *cond, int timeout)
434 {
435 	return -FI_ENOSYS;
436 }
fi_no_cq_signal(struct fid_cq * cq)437 int fi_no_cq_signal(struct fid_cq *cq)
438 {
439 	return -FI_ENOSYS;
440 }
441 
fi_no_cq_strerror(struct fid_cq * cq,int prov_errno,const void * err_data,char * buf,size_t len)442 const char * fi_no_cq_strerror(struct fid_cq *cq, int prov_errno,
443 		const void *err_data, char *buf, size_t len)
444 {
445 	return NULL;
446 }
447 
448 /*
449  * struct fi_ops_cntr
450  */
fi_no_cntr_add(struct fid_cntr * cntr,uint64_t value)451 int fi_no_cntr_add(struct fid_cntr *cntr, uint64_t value)
452 {
453 	return -FI_ENOSYS;
454 }
fi_no_cntr_set(struct fid_cntr * cntr,uint64_t value)455 int fi_no_cntr_set(struct fid_cntr *cntr, uint64_t value)
456 {
457 	return -FI_ENOSYS;
458 }
fi_no_cntr_wait(struct fid_cntr * cntr,uint64_t threshold,int timeout)459 int fi_no_cntr_wait(struct fid_cntr *cntr, uint64_t threshold, int timeout)
460 {
461 	return -FI_ENOSYS;
462 }
463 
464 /*
465  * struct fi_ops_rma
466  */
fi_no_rma_read(struct fid_ep * ep,void * buf,size_t len,void * desc,fi_addr_t src_addr,uint64_t addr,uint64_t key,void * context)467 ssize_t fi_no_rma_read(struct fid_ep *ep, void *buf, size_t len, void *desc,
468 		fi_addr_t src_addr, uint64_t addr, uint64_t key, void *context)
469 {
470 	return -FI_ENOSYS;
471 }
fi_no_rma_readv(struct fid_ep * ep,const struct iovec * iov,void ** desc,size_t count,fi_addr_t src_addr,uint64_t addr,uint64_t key,void * context)472 ssize_t fi_no_rma_readv(struct fid_ep *ep, const struct iovec *iov, void **desc,
473 		size_t count, fi_addr_t src_addr, uint64_t addr, uint64_t key,
474 		void *context)
475 {
476 	return -FI_ENOSYS;
477 }
fi_no_rma_readmsg(struct fid_ep * ep,const struct fi_msg_rma * msg,uint64_t flags)478 ssize_t fi_no_rma_readmsg(struct fid_ep *ep, const struct fi_msg_rma *msg,
479 		uint64_t flags)
480 {
481 	return -FI_ENOSYS;
482 }
fi_no_rma_write(struct fid_ep * ep,const void * buf,size_t len,void * desc,fi_addr_t dest_addr,uint64_t addr,uint64_t key,void * context)483 ssize_t fi_no_rma_write(struct fid_ep *ep, const void *buf, size_t len, void *desc,
484 		fi_addr_t dest_addr, uint64_t addr, uint64_t key, void *context)
485 {
486 	return -FI_ENOSYS;
487 }
fi_no_rma_writev(struct fid_ep * ep,const struct iovec * iov,void ** desc,size_t count,fi_addr_t dest_addr,uint64_t addr,uint64_t key,void * context)488 ssize_t fi_no_rma_writev(struct fid_ep *ep, const struct iovec *iov, void **desc,
489 		size_t count, fi_addr_t dest_addr, uint64_t addr, uint64_t key,
490 		void *context)
491 {
492 	return -FI_ENOSYS;
493 }
fi_no_rma_writemsg(struct fid_ep * ep,const struct fi_msg_rma * msg,uint64_t flags)494 ssize_t fi_no_rma_writemsg(struct fid_ep *ep, const struct fi_msg_rma *msg,
495 		uint64_t flags)
496 {
497 	return -FI_ENOSYS;
498 }
fi_no_rma_inject(struct fid_ep * ep,const void * buf,size_t len,fi_addr_t dest_addr,uint64_t addr,uint64_t key)499 ssize_t fi_no_rma_inject(struct fid_ep *ep, const void *buf, size_t len,
500 		fi_addr_t dest_addr, uint64_t addr, uint64_t key)
501 {
502 	return -FI_ENOSYS;
503 }
fi_no_rma_writedata(struct fid_ep * ep,const void * buf,size_t len,void * desc,uint64_t data,fi_addr_t dest_addr,uint64_t addr,uint64_t key,void * context)504 ssize_t fi_no_rma_writedata(struct fid_ep *ep, const void *buf, size_t len, void *desc,
505 		uint64_t data, fi_addr_t dest_addr, uint64_t addr, uint64_t key,
506 		void *context)
507 {
508 	return -FI_ENOSYS;
509 }
fi_no_rma_injectdata(struct fid_ep * ep,const void * buf,size_t len,uint64_t data,fi_addr_t dest_addr,uint64_t addr,uint64_t key)510 ssize_t fi_no_rma_injectdata(struct fid_ep *ep, const void *buf, size_t len,
511 		uint64_t data, fi_addr_t dest_addr, uint64_t addr, uint64_t key)
512 {
513 	return -FI_ENOSYS;
514 }
515 
516 /*
517  * struct fi_ops_tagged
518  */
fi_no_tagged_recv(struct fid_ep * ep,void * buf,size_t len,void * desc,fi_addr_t src_addr,uint64_t tag,uint64_t ignore,void * context)519 ssize_t fi_no_tagged_recv(struct fid_ep *ep, void *buf, size_t len, void *desc,
520 		fi_addr_t src_addr, uint64_t tag, uint64_t ignore, void *context)
521 {
522 	return -FI_ENOSYS;
523 }
fi_no_tagged_recvv(struct fid_ep * ep,const struct iovec * iov,void ** desc,size_t count,fi_addr_t src_addr,uint64_t tag,uint64_t ignore,void * context)524 ssize_t fi_no_tagged_recvv(struct fid_ep *ep, const struct iovec *iov, void **desc,
525 		size_t count, fi_addr_t src_addr, uint64_t tag, uint64_t ignore,
526 		void *context)
527 {
528 	return -FI_ENOSYS;
529 }
fi_no_tagged_recvmsg(struct fid_ep * ep,const struct fi_msg_tagged * msg,uint64_t flags)530 ssize_t fi_no_tagged_recvmsg(struct fid_ep *ep, const struct fi_msg_tagged *msg,
531 		uint64_t flags)
532 {
533 	return -FI_ENOSYS;
534 }
fi_no_tagged_send(struct fid_ep * ep,const void * buf,size_t len,void * desc,fi_addr_t dest_addr,uint64_t tag,void * context)535 ssize_t fi_no_tagged_send(struct fid_ep *ep, const void *buf, size_t len, void *desc,
536 		fi_addr_t dest_addr, uint64_t tag, void *context)
537 {
538 	return -FI_ENOSYS;
539 }
fi_no_tagged_sendv(struct fid_ep * ep,const struct iovec * iov,void ** desc,size_t count,fi_addr_t dest_addr,uint64_t tag,void * context)540 ssize_t fi_no_tagged_sendv(struct fid_ep *ep, const struct iovec *iov, void **desc,
541 		size_t count, fi_addr_t dest_addr, uint64_t tag, void *context)
542 {
543 	return -FI_ENOSYS;
544 }
fi_no_tagged_sendmsg(struct fid_ep * ep,const struct fi_msg_tagged * msg,uint64_t flags)545 ssize_t fi_no_tagged_sendmsg(struct fid_ep *ep, const struct fi_msg_tagged *msg,
546 		uint64_t flags)
547 {
548 	return -FI_ENOSYS;
549 }
fi_no_tagged_inject(struct fid_ep * ep,const void * buf,size_t len,fi_addr_t dest_addr,uint64_t tag)550 ssize_t fi_no_tagged_inject(struct fid_ep *ep, const void *buf, size_t len,
551 		fi_addr_t dest_addr, uint64_t tag)
552 {
553 	return -FI_ENOSYS;
554 }
fi_no_tagged_senddata(struct fid_ep * ep,const void * buf,size_t len,void * desc,uint64_t data,fi_addr_t dest_addr,uint64_t tag,void * context)555 ssize_t fi_no_tagged_senddata(struct fid_ep *ep, const void *buf, size_t len, void *desc,
556 		uint64_t data, fi_addr_t dest_addr, uint64_t tag, void *context)
557 {
558 	return -FI_ENOSYS;
559 }
fi_no_tagged_injectdata(struct fid_ep * ep,const void * buf,size_t len,uint64_t data,fi_addr_t dest_addr,uint64_t tag)560 ssize_t fi_no_tagged_injectdata(struct fid_ep *ep, const void *buf, size_t len,
561 		uint64_t data, fi_addr_t dest_addr, uint64_t tag)
562 {
563 	return -FI_ENOSYS;
564 }
fi_no_tagged_search(struct fid_ep * ep,uint64_t * tag,uint64_t ignore,uint64_t flags,fi_addr_t * src_addr,size_t * len,void * context)565 ssize_t fi_no_tagged_search(struct fid_ep *ep, uint64_t *tag, uint64_t ignore,
566 		uint64_t flags, fi_addr_t *src_addr, size_t *len, void *context)
567 {
568 	return -FI_ENOSYS;
569 }
570 
571 /*
572  * fi_ops_av
573  */
fi_no_av_insert(struct fid_av * av,const void * addr,size_t count,fi_addr_t * fi_addr,uint64_t flags,void * context)574 int fi_no_av_insert(struct fid_av *av, const void *addr, size_t count,
575 			fi_addr_t *fi_addr, uint64_t flags, void *context)
576 {
577 	return -FI_ENOSYS;
578 }
fi_no_av_insertsvc(struct fid_av * av,const char * node,const char * service,fi_addr_t * fi_addr,uint64_t flags,void * context)579 int fi_no_av_insertsvc(struct fid_av *av, const char *node,
580 		const char *service, fi_addr_t *fi_addr, uint64_t flags,
581 		void *context)
582 {
583 	return -FI_ENOSYS;
584 }
fi_no_av_insertsym(struct fid_av * av,const char * node,size_t nodecnt,const char * service,size_t svccnt,fi_addr_t * fi_addr,uint64_t flags,void * context)585 int fi_no_av_insertsym(struct fid_av *av, const char *node, size_t nodecnt,
586 			const char *service, size_t svccnt, fi_addr_t *fi_addr,
587 			uint64_t flags, void *context)
588 {
589 	return -FI_ENOSYS;
590 }
fi_no_av_remove(struct fid_av * av,fi_addr_t * fi_addr,size_t count,uint64_t flags)591 int fi_no_av_remove(struct fid_av *av, fi_addr_t *fi_addr, size_t count,
592 			uint64_t flags)
593 {
594 	return -FI_ENOSYS;
595 }
596 
fi_coll_no_barrier(struct fid_ep * ep,fi_addr_t coll_addr,void * context)597 ssize_t fi_coll_no_barrier(struct fid_ep *ep, fi_addr_t coll_addr, void *context)
598 {
599 	return -FI_ENOSYS;
600 }
fi_coll_no_broadcast(struct fid_ep * ep,void * buf,size_t count,void * desc,fi_addr_t coll_addr,fi_addr_t root_addr,enum fi_datatype datatype,uint64_t flags,void * context)601 ssize_t fi_coll_no_broadcast(struct fid_ep *ep, void *buf, size_t count, void *desc,
602 			     fi_addr_t coll_addr, fi_addr_t root_addr,
603 			     enum fi_datatype datatype, uint64_t flags, void *context)
604 {
605 	return -FI_ENOSYS;
606 }
fi_coll_no_alltoall(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,enum fi_datatype datatype,uint64_t flags,void * context)607 ssize_t fi_coll_no_alltoall(struct fid_ep *ep, const void *buf, size_t count, void *desc,
608 			    void *result, void *result_desc, fi_addr_t coll_addr,
609 			    enum fi_datatype datatype, uint64_t flags, void *context)
610 {
611 	return -FI_ENOSYS;
612 }
fi_coll_no_allreduce(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,enum fi_datatype datatype,enum fi_op op,uint64_t flags,void * context)613 ssize_t fi_coll_no_allreduce(struct fid_ep *ep, const void *buf, size_t count, void *desc,
614 			     void *result, void *result_desc, fi_addr_t coll_addr,
615 			     enum fi_datatype datatype, enum fi_op op, uint64_t flags,
616 			     void *context)
617 {
618 	return -FI_ENOSYS;
619 }
fi_coll_no_allgather(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,enum fi_datatype datatype,uint64_t flags,void * context)620 ssize_t fi_coll_no_allgather(struct fid_ep *ep, const void *buf, size_t count, void *desc,
621 			     void *result, void *result_desc, fi_addr_t coll_addr,
622 			     enum fi_datatype datatype, uint64_t flags, void *context)
623 {
624 	return -FI_ENOSYS;
625 }
fi_coll_no_reduce_scatter(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,enum fi_datatype datatype,enum fi_op op,uint64_t flags,void * context)626 ssize_t fi_coll_no_reduce_scatter(struct fid_ep *ep, const void *buf, size_t count,
627 				  void *desc, void *result, void *result_desc,
628 				  fi_addr_t coll_addr, enum fi_datatype datatype,
629 				  enum fi_op op, uint64_t flags, void *context)
630 {
631 	return -FI_ENOSYS;
632 }
fi_coll_no_reduce(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,fi_addr_t root_addr,enum fi_datatype datatype,enum fi_op op,uint64_t flags,void * context)633 ssize_t fi_coll_no_reduce(struct fid_ep *ep, const void *buf, size_t count, void *desc,
634 			  void *result, void *result_desc, fi_addr_t coll_addr,
635 			  fi_addr_t root_addr, enum fi_datatype datatype, enum fi_op op,
636 			  uint64_t flags, void *context)
637 {
638 	return -FI_ENOSYS;
639 }
fi_coll_no_scatter(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,fi_addr_t root_addr,enum fi_datatype datatype,uint64_t flags,void * context)640 ssize_t fi_coll_no_scatter(struct fid_ep *ep, const void *buf, size_t count, void *desc,
641 			   void *result, void *result_desc, fi_addr_t coll_addr,
642 			   fi_addr_t root_addr, enum fi_datatype datatype, uint64_t flags,
643 			   void *context)
644 {
645 	return -FI_ENOSYS;
646 }
fi_coll_no_gather(struct fid_ep * ep,const void * buf,size_t count,void * desc,void * result,void * result_desc,fi_addr_t coll_addr,fi_addr_t root_addr,enum fi_datatype datatype,uint64_t flags,void * context)647 ssize_t fi_coll_no_gather(struct fid_ep *ep, const void *buf, size_t count, void *desc,
648 			  void *result, void *result_desc, fi_addr_t coll_addr,
649 			  fi_addr_t root_addr, enum fi_datatype datatype, uint64_t flags,
650 			  void *context)
651 {
652 	return -FI_ENOSYS;
653 }
fi_coll_no_msg(struct fid_ep * ep,const struct fi_msg_collective * msg,struct fi_ioc * resultv,void ** result_desc,size_t result_count,uint64_t flags)654 ssize_t fi_coll_no_msg(struct fid_ep *ep, const struct fi_msg_collective *msg,
655 		       struct fi_ioc *resultv, void **result_desc, size_t result_count,
656 		       uint64_t flags)
657 {
658 	return -FI_ENOSYS;
659 }
660