RDMA_POST_RECVV(3)

πŸ’Œ RDMA_POST_RECVV(3) β€” the librdmacm programmer's manual page, but make it cute

okay bestie, gather round, because today we're learning how to post a work request to receive incoming messages πŸ’– this is rdma_post_recvv from the Librdmacm Programmer's Manual and she is so iconic, no cap.


✨ NAME ✨

rdma_post_recvv β€” post a work request to receive incoming messages. like, you're literally telling the universe "hey, i'm ready to receive, send me something bestie" 🫢


🌸 SYNOPSIS 🌸

#include <rdma/rdma_verbs.h>

int rdma_post_recvv (struct rdma_cm_id *id, void *context, struct
ibv_sge *sgl, int nsge);

look at her. five lines of pure potential. πŸŽ€


πŸ¦‹ ARGUMENTS πŸ¦‹

  • id β€” a reference to a communication identifier where the message buffer(s) will be posted. think of it as the address of the hangout spot where your buffers are gonna chill πŸ’…
  • context β€” the user-defined context associated with the request. it's yours, you get to define it, it's giving personalization ✨
  • sgl β€” a scatter-gather list of memory buffers posted as a single request. multiple buffers, one request, we love efficiency in this house πŸ‘‘
  • nsge β€” the number of scatter-gather entries in the sgl array. count them. count them carefully. πŸ”’

πŸ’œ DESCRIPTION πŸ’œ

Posts a single work request to the receive queue of the queue pair associated with the rdma_cm_id. so you're sliding one (1) work request onto the receive queue of that queue pair, okay?

The posted buffers will be queued to receive an incoming message sent by the remote peer. so they're sitting there, waiting, patient little buffers, ready for whatever the remote peer decides to send over 🌈


⭐ RETURN VALUE ⭐

  • Returns 0 on success πŸŽ‰
  • Returns -1 on error 😭

If an error occurs, errno will be set to indicate the failure reason. so check your errno, bestie, she's telling you everything.


πŸ”₯ NOTES πŸ”₯

okay this is the part where you actually pay attention, this is the vibe check portion of the page.

The user is responsible for ensuring that the receive is posted, and the total buffer space is large enough to contain all sent data before the peer posts the corresponding send message. that's on you. nobody else is gonna post that receive for you. not the kernel, not the peer, not me. you. 🫡

The message buffers must have been registered before being posted, and the buffers must remain registered until the receive completes. registered before, registered throughout, no deregistering mid-receive, that's the rule fr fr.

Messages may be posted to an rdma_cm_id only after a queue pair has been associated with it. no queue pair, no posting. it's giving "you can't sit with us" πŸ’€

A queue pair is bound to an rdma_cm_id after calling rdma_create_ep or rdma_create_qp, if the rdma_cm_id is allocated using rdma_create_id. so that's the pipeline: rdma_create_id β†’ rdma_create_ep or rdma_create_qp β†’ then you may post. in that order. periodt.

The user-defined context associated with the receive request will be returned to the user through the work completion wr_id, work request identifier, field. so that context you passed in? she comes back to you. through wr_id. it's a whole circle of life situation 🧚


🌈 SEE ALSO 🌈

iykyk, go read them all, they're all part of the same friend group πŸ’•


and that's the page!! brought to you by librdmacm, dated 2010-07-19 β€” yes she's been serving this documentation since 2010 and she has not aged a day πŸ‘‘βœ¨ mwah, go post some receives bestie πŸ’…

πŸ“¦ where this page comes from