RDMA_POST_READV(3)
π RDMA_POST_READV(3) π
okay bestie, welcome to the Librdmacm Programmer's Manual β¨ this one's about rdma_post_readv, and it's literally the moment where you tell the network card "hey. go grab me that remote memory. put it right here." π«Ά
πΈ NAME πΈ
rdma_post_readv β post an RDMA read work request. that's it, that's the whole vibe. π¦
β¨ SYNOPSIS β¨
#include <rdma/rdma_verbs.h>
int rdma_post_readv (struct rdma_cm_id *id, void *context, struct
ibv_sge *sgl, int nsge, int flags, uint64_t remote_addr, uint32_t rkey);
π ARGUMENTS π
idβ a reference to a communication identifier where the request will be posted. this is your main character, the one carrying the whole operation πcontextβ user-defined context associated with the request. you put it in, you get it back later (see NOTES, bestie, it comes back to you through the work completionwr_idfield π)sglβ a scatter-gather list of the destination buffers of the read. so like, where the stuff lands πnsgeβ the number of scatter-gather array entries. count them. no cap π’flagsβ optional flags used to control the read operation. optional means optional, but they do things πremote_addrβ the address of the remote registered memory to read from. that's the far-away memory, the one you're reaching for π¦rkeyβ the registered memory key associated with the remote address. you need this. the remote side won't hand over anything without it π
π 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 buffers.
so to be super clear: remote memory β‘οΈ your local buffers. it's giving "bring it to me" energy ππ
β RETURN VALUE β
Returns 0 on success, or -1 on error. If an error occurs, errno will be set to indicate the failure reason.
zero = slay. negative one = something went wrong and errno is holding the receipts π
π§ 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. do not be out here unregistering early, bestie, it will not go well π
Read operations may not be posted to an rdma_cm_id or the corresponding queue pair until it has been connected. connect first. then post. in that order. periodt. π₯
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. so whatever you handed in as context? yeah. it finds its way back to you π₯Ήπ
π SEE ALSO π
rdma_cm(7), rdma_connect(3), rdma_accept(3), ibv_post_send(3), rdma_post_read(3), rdma_reg_read(3), rdma_reg_msgs(3)
and that's the whole page, bestie!! πβ¨ this one came from librdmacm, dated 2010-07-19 β yes she's been iconic since 2010 and she's still serving π π¦ go register your buffers and connect your queue pair first, ily, bye ππ
π¦ where this page comes from
- alpine 3.24: rdma-core-doc 61.0-r0 Β· GPL-2.0-only OR BSD-2-Clause
- arch rolling: rdma-core 65.0-1 Β· GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-MIT AND GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-FreeBSD AND GPL-2.0-or-later OR LicenseRef-Intel-BSD-3-Clause AND GPL-2.0-or-later OR LicenseRef-PathScale-BSD-Patent-License AND CC0-1.0 AND MIT AND BSD-2-Clause AND CPL-1.0 OR BSD-2-Clause OR GPL-2.0-or-later
- centos-stream 10: rdma-core-devel 62.0-3.el10 Β· GPLv2 or BSD
- centos-stream 9: rdma-core-devel 61.0-3.el9 Β· GPLv2 or BSD
- centos-stream 9: rdma-core-devel 61.0-3.el9 Β· GPLv2 or BSD
- debian bookworm: librdmacm-dev 44.0-2 Β· BSD-MIT OR GPL-2.0-only
- debian trixie: librdmacm-dev 56.1-1 Β· BSD-MIT OR GPL-2.0-only
- fedora 43: rdma-core-devel 58.0-4.fc43 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 43: rdma-core-devel 58.0-4.fc43 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.0-2.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.0-2.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.1^20260812git975bdaf-1.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.1^20260812git975bdaf-1.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixos 26.05: rdma-core 62.0
- nixpkgs unstable: rdma-core 65.0
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- ubuntu jammy: librdmacm-dev 39.0-1 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: librdmacm-dev 50.0-2build2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: librdmacm-dev 50.0-2ubuntu0.2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu questing: librdmacm-dev 56.1-1ubuntu1
- ubuntu resolute: librdmacm-dev 61.0-2ubuntu3 Β· BSD-MIT OR GPL-2.0-only
- ubuntu stonking: librdmacm-dev 64.0-1ubuntu1 Β· BSD-MIT OR GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms