RDMA_CREATE_ID(3)
β¨ RDMA_CREATE_ID β¨
okay bestie, welcome to the rdma_create_id page from the Librdmacm Programmer's Manual π this one is literally the birth of an RDMA conversation, so let's get into it.
πΈ NAME πΈ
rdma_create_id β Allocate a communication identifier.
π SYNOPSIS π
#include <rdma/rdma_cma.h>
int rdma_create_id (struct rdma_event_channel *channel, struct
rdma_cm_id **id, void *context, enum rdma_port_space ps);
π ARGUMENTS π
channelβ the communication channel that events associated with the allocatedrdma_cm_idwill be reported on. plot twist: this one may beNULLπidβ a reference where the allocated communication identifier gets returned. this is where your shiny new id shows up, bestie β¨contextβ user specified context associated with therdma_cm_id. it's yours, you bring it, you keep it π«Άpsβ RDMA port space. the whole vibe of the connection lives here, more on that below π
π¦ DESCRIPTION π¦
Creates an identifier that is used to track communication information. that's it, that's the whole job. it's giving "tiny but crucial" π«
β 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, if you get -1, go check errno β she's always got the tea π΅
π NOTES π
rdma_cm_id's are conceptually equivalent to a socket for RDMA communication. iconic behavior, honestly. but here's the difference, and it matters:
- RDMA communication requires explicitly binding to a specified RDMA device before communication can occur.
- Most operations are asynchronous in nature. no cap.
Asynchronous communication events on an rdma_cm_id are reported through the associated event channel. π£
And now the plot twist π β if the channel parameter is NULL, the rdma_cm_id will be placed into synchronous operation. While operating synchronously, calls that result in an event will block until the operation completes. The event will be returned to the user through the rdma_cm_id structure, and be available for access until another rdma_cm call is made. so like, hold onto it while you can, it won't wait around for you π
β οΈ Users must release therdma_cm_idby callingrdma_destroy_id. don't leave her hanging, that's a leak bestie π
π PORT SPACE π
Details of the services provided by the different port spaces are outlined below. pick your fighter π
RDMA_PS_TCP
Provides reliable, connection-oriented QP communication. Unlike TCP, the RDMA port space provides message, not stream, based communication. so if you were expecting a lil stream situationβ¦ not here, queen π
RDMA_PS_UDP
Provides unreliable, connectionless QP communication. Supports both datagram and multicast communication. chaotic but in a fun way π
RDMA_PS_IB
Provides for any IB services (UD, UC, RC, XRC, etc.). the "everything bagel" of port spaces, fr fr π₯―
π SEE ALSO π
rdma_cm(7), rdma_create_event_channel(3), rdma_destroy_id(3), rdma_get_devices(3), rdma_bind_addr(3), rdma_resolve_addr(3), rdma_connect(3), rdma_listen(3), rdma_set_option(3)
okay that's the whole page, you ate that π
this was brought to you by librdmacm, dated 2010-07-19, and the page itself is RDMA_CREATE_ID(3) β go forth and create some ids, bestie π¦β¨π
π¦ 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