RDMA_POST_SENDV(3)
π RDMA_POST_SENDV π
okay bestie, gather round, because we're diving into rdma_post_sendv from the Librdmacm Programmer's Manual and honestly? it's giving "send a message, but make it scatter-gather." let's GO π¦
β¨ NAME β¨
rdma_post_sendv β post a work request to send a message. that's it, that's the whole vibe. π¨
πΈ SYNOPSIS πΈ
#include <rdma/rdma_verbs.h>
int rdma_post_sendv (struct rdma_cm_id *id, void *context, struct
ibv_sge *slg, int nsge, int flags);
look at that signature. chef's kiss. π
π ARGUMENTS π
idβ a reference to a communication identifier where the message buffer will be posted. like, the where of it all. πcontextβ user-defined context associated with the request. this is YOUR lil stamp, you put whatever you want in here, and it comes back to you later (we'll get to that, stay tuned π).slgβ a scatter-gather list of memory buffers posted as a single request. one request, many buffers, we love efficiency. β¨nsgeβ the number of scatter-gather entries in theslgarray. just tell it how many you brought. π’flagsβ optional flags used to control the send operation. the little knobs and dials, iykyk. ποΈ
π DESCRIPTION π
so what does this actually DO? it posts a work request to the send queue of the queue pair associated with the rdma_cm_id. and then the contents of the posted buffers get sent to the remote peer of a connection. boom. message delivered. main character energy fr fr. π«
π«Ά RETURN VALUE π«Ά
- Returns
0on success. slay. β - Returns
-1on error. not slay. π
and if an error happens, errno will be set to indicate the failure reason. always check your errno, bestie, it's literally telling you what went wrong. π
π₯ NOTES π₯
okay this part is important, don't skip it, i'm serious. π
the user is responsible for ensuring that the remote peer has queued a receive request before issuing the send operations. like, they gotta be ready to catch it, you can't just throw. π€²
for a list of supported flags, see ibv_post_send.
unless the send request is using inline data, the message buffers must have been registered before being posted, and the buffers must remain registered until the send completes. no cap β registration is not optional here. π
send operations may not be posted to an rdma_cm_id or the corresponding queue pair until it has been connected. so like... connect first. obviously. π
the user-defined context associated with the send request will be returned to the user through the work completion wr_id, work request identifier, field. see? i TOLD you your lil context stamp comes back. iconic behavior. π
π SEE ALSO π
and that's the whole page, bestie!! this lil guy is from the librdmacm source, dated 2010-07-19 β an absolute vintage queen who's been serving sends since before some of us could walk. π go forth and post your work requests responsibly, mwah πβ¨
π¦ 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