RDMA_POST_SEND(3)
π rdma_post_send β post a work request to send a message
okay bestie, so this one lives in the Librdmacm Programmer's Manual, and it's literally the "hey send this buffer to my friend over there" function. it's giving mail carrier but for RDMA. let's get into it π«Ά
β¨ SYNOPSIS β¨
#include <rdma/rdma_verbs.h>
int rdma_post_send (struct rdma_cm_id *id, void *context, void *addr,
size_t length, struct ibv_mr *mr, int flags);
πΈ ARGUMENTS πΈ
idβ a reference to a communication identifier where the message buffer will be posted. like, this is the connection we're sending on, bestie.contextβ user-defined context associated with the request. it's your little "this is mine" sticky note that comes back to you later πaddrβ the address of the memory buffer to post. where your data actually lives.lengthβ the length of the memory buffer. how much of it we're sending, no more no less.mrβ optional registered memory region associated with the posted buffer. optional but likeβ¦ usually not optional, yk? πflagsβ optional flags used to control the send operation. the seasoning β¨
π DESCRIPTION π
Posts a work request to the send queue of the queue pair associated with the rdma_cm_id. the contents of the posted buffer will be sent to the remote peer of a connection. that's it. that's the whole vibe. you hand it a buffer, it yeets it to the other side π
β RETURN VALUE β
Returns 0 on success, or -1 on error. if an error occurs, errno will be set to indicate the failure reason. so like, check errno fr fr, don't just stare at the -1 like it owes you money π
π NOTES π
bestie. read this part. this is the part that bites people.
- The user is responsible for ensuring that the remote peer has queued a receive request before issuing the send operations. like, you have to make sure they're ready to catch it. no receive request = your send is just screaming into the void π
- For a list of supported flags, see
ibv_post_send. - Unless the send request is using inline data, the message buffer must have been registered before being posted, with the
mrparameter referencing the registration. The buffer must remain registered until the send completes. registered and still registered while it's in flight, okay? don't unregister early, that's not cute π - Send operations may not be posted to an
rdma_cm_idor the corresponding queue pair until it has been connected. not connected = not allowed. periodt. - 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. so thatcontextyou passed in? it comes back to you at completion time. full circle moment π
π¦ SEE ALSO π¦
and that's the page, bestie! π this one's from librdmacm, dated 2010-07-19 β yeah she's an elder but she ate and left no crumbs ππ go forth and post responsibly π
π¦ 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