.\" Automatically generated by Pandoc 3.1.8 .\" .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 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