rdma_post_recvv

将工作请求发布到发送队列以执行 RDMA 读操作。

语法

#include <rdma/rdma_cma.h>
int rdma_post_recvv (struct rdma_cm_id *id, void *context, struct ibv_sge *sgl, int nsge);      

描述

将工作请求发布到与 rdma_cm_id 标识关联的队列对的发送队列。 将远程内存区域的内容读入本地数据缓冲区。

: 必须确保已发布接收缓冲区。 在对等节点发布相应的发送消息之前,接收缓冲区必须足够大,以包含所有已发送的数据。 在使用 mr 参数通过指定注册来发布消息缓冲区之前,必须先注册该消息缓冲区。 必须注册缓冲区,直到接收操作完成为止。 在队列对与消息关联后,可以将消息发布到 rdma_cm_id 标识。 如果使用 rdma_create_id 标识分配了 rdma_cm_id 标识,那么在调用rdma_create_ep 操作或 rdma_create_qp 操作之后,队列对将绑定到 rdma_cm_id 标识。 通过使用工作完成 wr_id 标识,工作请求标识和工作请求标识字段返回与接收请求相关联的用户定义上下文。

参数

描述
上下文 指定与请求关联的用户定义的上下文。
标识 指定对在其中发布请求的通信标识的引用。
用户 指定存在的散点集数组条目数。
sgl 指定与读操作关联的目标缓冲区的散射收集列表。

返回值

成功时返回 0,错误时返回-1。 如果发生错误,那么将设置 errno 以指示失败原因。