RDMA_POST_WRITE(3)
π RDMA_POST_WRITE(3) π
okay bestie, welcome to the librdmacm Programmer's Manual β¨ this one's called rdma_post_write, and it's literally the girlboss of "post an RDMA write work request" β no cap, that's the whole NAME section, I'm not even joking π«Ά
πΈ SYNOPSIS πΈ
#include <rdma/rdma_verbs.h>
int rdma_post_write (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);
like, that's the whole signature, copy it exactly pls, don't get creative π
β¨ ARGUMENTS β¨
idβ a reference to a communication identifier where the request will be posted. it's giving "where do I drop this off" energy πcontextβ user-defined context associated with the request. it's yours, do whatever, it comes back to you later (spoiler: see NOTES π)addrβ the local address of the source of the write request. this is the local tea being spilled βlengthβ the length of the write operation. how much of the tea, exactly.mrβ optional memory region associated with the local buffer. optional!! but read the NOTES before you get bold πflagsβ optional flags used to control the write operation. for the full menu of flags, checkibv_post_send(NOTES has the receipt π§Ύ)remote_addrβ the address of the remote registered memory to write into. the destination, the final boss, the main character location πrkeyβ the registered memory key associated with the remote address. yes you need the key, no you can't skip it π
π¦ DESCRIPTION π¦
Posts a work request to the send queue of the queue pair associated with the rdma_cm_id. π«‘
The contents of the local data buffer will be written into the remote memory region. that's it, that's the vibe, local bytes go β remote memory, iconic behavior honestly β¨
π RETURN VALUE π
Returns 0 on success, or -1 on error. and if it errors out? errno will be set to indicate the failure reason, so pls actually check it and don't just ignore the girl crying in the corner π
π₯ NOTES π₯
bestie these are the real ones, read them, I'm begging π
- For a list of supported flags, see
ibv_post_send. - Unless inline data is specified, the local data buffer must have been registered before the write is issued, and the buffer must remain registered until the write completes. no early unregister, that's not slay, that's a crash π¨
- The remote buffer must always be registered. always always. no exceptions, periodt π
- Write operations may not be posted to an
rdma_cm_idor the corresponding queue pair until it has been connected. not connected? not today. π ββοΈ - The user-defined context associated with the write 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 like a boomerang, iykyk πͺπ
π SEE ALSO π
rdma_cm(7), rdma_connect(3), rdma_accept(3), ibv_post_send(3), rdma_post_writev(3), rdma_reg_write(3), rdma_reg_msgs(3)
okay that's the whole page, go register your buffers and stay hydrated ππ
mwah π β this was librdmacm, dated 2010-07-19, brought to you by the RDMA_POST_WRITE(3) girlies. she ate and left no crumbs πβ¨
π¦ 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