1IBV_REG_MR(3) Libibverbs Programmer's Manual IBV_REG_MR(3)
2
3
4
6 ibv_reg_mr, ibv_dereg_mr - register or deregister a memory region (MR)
7
9 #include <infiniband/verbs.h>
10
11 struct ibv_mr *ibv_reg_mr(struct ibv_pd *pd, void *addr,
12 size_t length, int access);
13
14 int ibv_dereg_mr(struct ibv_mr *mr);
15
17 ibv_reg_mr() registers a memory region (MR) associated with the protec‐
18 tion domain pd. The MR's starting address is addr and its size is
19 length. The argument access describes the desired memory protection
20 attributes; it is either 0 or the bitwise OR of one or more of the fol‐
21 lowing flags:
22
23 IBV_ACCESS_LOCAL_WRITE Enable Local Write Access
24
25 IBV_ACCESS_REMOTE_WRITE Enable Remote Write Access
26
27 IBV_ACCESS_REMOTE_READ Enable Remote Read Access
28
29 IBV_ACCESS_REMOTE_ATOMIC Enable Remote Atomic Operation Access (if sup‐
30 ported)
31
32 IBV_ACCESS_MW_BIND Enable Memory Window Binding
33
34 IBV_ACCESS_ON_DEMAND Create an on-demand paging MR
35
36 If IBV_ACCESS_REMOTE_WRITE or IBV_ACCESS_REMOTE_ATOMIC is set, then
37 IBV_ACCESS_LOCAL_WRITE must be set too.
38
39 Local read access is always enabled for the MR.
40
41 ibv_dereg_mr() deregisters the MR mr.
42
44 ibv_reg_mr() returns a pointer to the registered MR, or NULL if the
45 request fails. The local key (L_Key) field lkey is used as the lkey
46 field of struct ibv_sge when posting buffers with ibv_post_* verbs, and
47 the the remote key (R_Key) field rkey is used by remote processes to
48 perform Atomic and RDMA operations. The remote process places this
49 rkey as the rkey field of struct ibv_send_wr passed to the
50 ibv_post_send function.
51
52 ibv_dereg_mr() returns 0 on success, or the value of errno on failure
53 (which indicates the failure reason).
54
56 ibv_dereg_mr() fails if any memory window is still bound to this MR.
57
59 ibv_alloc_pd(3), ibv_post_send(3), ibv_post_recv(3),
60 ibv_post_srq_recv(3)
61
63 Dotan Barak <dotanba@gmail.com>
64
65
66
67libibverbs 2006-10-31 IBV_REG_MR(3)