rdma_create_qp
分配队列对 (QP)。
语法
#include <rdma/rdma_cma.h>
int rdma_create_qp(struct rdma_cm_id *id, struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr);描述
rdma_create_qp 函数分配与指定 rdma_cm_id 标识相关联的队列对 (QP) ,并将其转换为发送和接收。
注意:
- 在运行 rdma_create_qp 函数之前,
rdma_cm_id标识必须与本地 RDMA 设备相关联,并且保护域必须用于同一设备。 - 分配给
rdma_cm_id标识的 QP 由librdmacm库通过其状态自动转换。 在分配 QP 后, QP 已准备好处理所接收数据的发布。 如果未连接 QP ,那么它已准备好发布发送数据。 - 如果未指定保护域,那么
- pd参数为 NULL ,那么将使用缺省保护域来创建rdma_cm_id标识。 每个 RDMA 设备分配一个缺省保护域。 初始 QP 属性是使用qp_init_attr参数指定的。ibv_qp_init_attr中的send_cq和recv_cq字段是可选的。 如果未指定发送或接收完成队列 (CQ) ,那么rdma_cm将为 QP 分配 CQ 以及相应的完成通道。 用户可以使用rdma_cm_id结构来访问由rdma_cm创建的完成通道和 CQ 数据。 创建的 QP 的实际功能和属性将通过qp_init_attr参数返回给用户。
参数
| 项 | 描述 |
|---|---|
| 标识 | 指定要创建的通信标识。 |
| PD | 指定 QP 的可选保护域。 |
| qp_初始化属性 | 指定初始 QP 属性。 |
返回值
rdma_destroy_event_channel函数成功时返回 0,错误时返回-1。 如果发生错误,那么 errno 指示失败的原因。