1ibv_alloc_null_mr(3) Libibverbs Programmer's Manual ibv_alloc_null_mr(3)
2
3
4
6 ibv_alloc_null_mr - allocate a null memory region (MR)
7
9 #include <infiniband/verbs.h>
10
11 struct ibv_mr *ibv_alloc_null_mr(struct ibv_pd *pd);
12
14 ibv_alloc_null_mr() allocates a null memory region (MR) that is associ‐
15 ated with the protection domain pd.
16
17 A null MR discards all data written to it, and always returns 0 on
18 read. It has the maximum length and only the lkey is valid, the MR is
19 not exposed as an rkey.
20
21 A device should implement the null MR in a way that bypasses PCI trans‐
22 fers, internally discarding or sourcing 0 data. This provides a way to
23 avoid PCI bus transfers by using a scatter/gather list in commands if
24 applications do not intend to access the data, or need data to be 0
25 filled.
26
27 Specifically upon ibv_post_send() the device skips PCI read cycles and
28 upon ibv_post_recv() the device skips PCI write cycles which finally
29 improves performance.
30
31 ibv_dereg_mr() deregisters the MR. The use of ibv_rereg_mr() or
32 ibv_bind_mw() with this MR is invalid.
33
35 ibv_alloc_null_mr() returns a pointer to the allocated MR, or NULL if
36 the request fails.
37
39 ibv_reg_mr(3), ibv_dereg_mr(3),
40
42 Yonatan Cohen <yonatanc@mellanox.com>
43
44
45
46libibverbs 2018-6-1 ibv_alloc_null_mr(3)