RDMA_POST_UD_SEND(3)
β¨ RDMA_POST_UD_SEND β¨
okay bestie, sit down, hydrate, and let me tell you about rdma_post_ud_send π this one lives in the Librdmacm Programmer's Manual, and it's giving "I send datagrams and I do it flawlessly" energy, no cap π¦
πΈ NAME πΈ
rdma_post_ud_send β post a work request to send a datagram π
π SYNOPSIS π
#include <rdma/rdma_verbs.h>
int rdma_post_ud_send (struct rdma_cm_id *id, void *context, void *addr,
size_t length, struct ibv_mr *mr, int flags, struct ibv_ah *ah, uint32_t
remote_qpn);
like, that's the whole vibe right there β
π«Ά ARGUMENTS π«Ά
idβ a reference to a communication identifier where the message buffer will be posted. it's the main character of the operation, fr πcontextβ user-defined context associated with the request. it's your little note-to-self, and it comes back to you later (spoiler π)addrβ the address of the memory buffer to post. yes, the actual buffer, the real one πΈlengthβ the length of the memory buffer. how much of it, exactlymrβ optional registered memory region associated with the posted buffer. optional!! but read the NOTES, bestie, because optional β always safe πflagsβ optional flags used to control the send operation. for the full menu of what you can put here, seeibv_post_sendβ¨ahβ an address handle describing the address of the remote node. it's the little map to the other side πΊοΈremote_qpnβ the number of the destination queue pair. the destination's queue pair number, periodt
π« DESCRIPTION π«
so what it does is: it posts a work request to the send queue of the queue pair associated with the rdma_cm_id. then the contents of the posted buffer will be sent to the specified destination queue pair. that's it, that's the whole job, and it ate π
π₯
π RETURN VALUE π
Returns 0 on success, or -1 on error. and if an error happens, errno will be set to indicate the failure reason β so like, always check it, don't be out here guessing π
π NOTES π
- the user is responsible for ensuring that the destination queue pair has queued a receive request before issuing the send operations. this is a you job, not an it job, bestie π«Ά
- 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 β do not unregister early, that's the villain arc π - 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 it comes back π
π₯ SEE ALSO π₯
rdma_cm(7), rdma_connect(3), rdma_accept(3), rdma_reg_msgs(3), ibv_post_send(3), rdma_post_recv(3)
go read those next, they're all in the same friend group π
that's the page, and honestly? iconic. this one comes from librdmacm, dated 2010-07-19 β so yeah she's been serving datagrams since 2010 and still looks this good π stay registered, stay hydrated, and check your return values β¨π¦π
π¦ 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