---
name: "rdma_post_read"
section: "3"
platform: "linux"
package: "rdma-core"
version: "65.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/rdma_post_read"
---

# rdma\_post\_read(3)

post an RDMA read work request.

## NAME

rdma\_post\_read - post an RDMA read work request.

## SYNOPSIS

**#include \<rdma/rdma\_verbs.h\>**

**int rdma\_post\_read** **(struct rdma\_cm\_id \****id***,** **void \****context***,** **void \****addr***,** **size\_t** *length***,** **struct ibv\_mr \****mr***,** **int** *flags***,** **uint64\_t** *remote\_addr***,** **uint32\_t** *rkey***);**

## ARGUMENTS

- id

  A reference to a communication identifier where the request  will be posted.

- context

  User-defined context associated with the request.

- addr

  The address of the local destination of the read request.

- length

  The length of the read operation.

- mr

  Registered memory region associated with the local buffer.

- flags

  Optional flags used to control the read operation.

- remote\_addr

  The address of the remote registered memory to read from.

- rkey

  The registered memory key associated with the remote address.

## DESCRIPTION

Posts a work request to the send queue of the queue pair associated with the rdma\_cm\_id.  The contents of the remote memory region will be read into the local data buffer.

## RETURN VALUE

Returns 0 on success, or -1 on error.  If an error occurs, errno will be set to indicate the failure reason.

## NOTES

For a list of supported flags, see ibv\_post\_send.  Both the remote and local data buffers must have been registered before the read is issued, and the buffers must remain registered until the read completes.

Read operations may not be posted to an rdma\_cm\_id or the corresponding queue pair until it has been connected.

The user-defined context associated with the read request will be returned to the user through the work completion wr\_id, work request identifier, field.

## SEE ALSO

[rdma\_cm(7)](/rdma_cm/7.md), [rdma\_connect(3)](/rdma_connect/3.md), [rdma\_accept(3)](/rdma_accept/3.md), [ibv\_post\_send(3)](/ibv_post_send/3.md), [rdma\_post\_readv(3)](/rdma_post_readv/3.md), [rdma\_reg\_read(3)](/rdma_reg_read/3.md), [rdma\_reg\_msgs(3)](/rdma_reg_msgs/3.md)
