.\" Automatically generated by Pandoc 3.1.11.1
.\"
.TH "ibv_alloc_null_mr" "3" "2018\-6\-1" "libibverbs" "Libibverbs Programmer\[cq]s Manual"
.SH NAME
ibv_alloc_null_mr \- allocate a null memory region (MR)
.SH SYNOPSIS
.IP
.EX
#include <infiniband/verbs.h>

struct ibv_mr *ibv_alloc_null_mr(struct ibv_pd *pd);
.EE
.SH DESCRIPTION
\f[B]ibv_alloc_null_mr()\f[R] allocates a null memory region (MR) that
is associated with the protection domain \f[I]pd\f[R].
.PP
A null MR discards all data written to it, and always returns 0 on read.
It has the maximum length and only the lkey is valid, the MR is not
exposed as an rkey.
.PP
A device should implement the null MR in a way that bypasses PCI
transfers, internally discarding or sourcing 0 data.
This provides a way to avoid PCI bus transfers by using a scatter/gather
list in commands if applications do not intend to access the data, or
need data to be 0 filled.
.PP
Specifically upon \f[B]ibv_post_send()\f[R] the device skips PCI read
cycles and upon \f[B]ibv_post_recv()\f[R] the device skips PCI write
cycles which finally improves performance.
.PP
\f[B]ibv_dereg_mr()\f[R] deregisters the MR.
The use of ibv_rereg_mr() or ibv_bind_mw() with this MR is invalid.
.SH RETURN VALUE
\f[B]ibv_alloc_null_mr()\f[R] returns a pointer to the allocated MR, or
NULL if the request fails.
.SH SEE ALSO
\f[B]ibv_reg_mr\f[R](3), \f[B]ibv_dereg_mr\f[R](3),
.SH AUTHOR
Yonatan Cohen \c
.MT yonatanc@mellanox.com
.ME \c
