【verbs】ibv_get_cq_event|ibv_ack_cq_events()
目录
ibv_get_cq_event
概要
描述
返回值
提示
ibv_ack_cq_events
描述
参数
返回值
例子
常见问题
ibv_get_cq_event
ibv_get_cq_event,ibv_ack_cq_events-获取和确认完成队列(CQ)事件
(注意调用ibv_get_cq_event之前需要调用ibv_req_notify_cq才能得到event,见:【vbers】ibv_req_notify_cq()_bandaoyu的note-CSDN博客)
概要
#include <infiniband / verbs.h>
int ibv_get_cq_event(struct ibv_comp_channel * channel, struct ibv_cq ** cq,void ** cq_context);
void ibv_ack_cq_events(struct ibv_cq * cq,unsigned int nevents);
描述
ibv_get_cq_event()等待事件通道channel中的下一个完成事件。用获取事件的CQ填充参数cq,并用CQ的上下文填充cq_context。
ibv_ack_cq_events()确认 cq上的nevents事件CQ。
返回值
ibv_get_cq_event()成功返回0,错误返回-1。
ibv_ack_cq_events()不返回任何值。
提示
ibv_get_cq_events()返回的所有完成事件必须使用ibv_ack_cq_events()进行确认。
为了避免竞争,销毁CQ将等待所有完成事件得到确认;这保证了在成功与成功之间一对一的对应关系。
在数据路径中调用ibv_ack_cq_events()可能相对昂贵,因为它必须使用互斥量。因此,最好是通过对需要确认的事件数量进行计数并在对ibv_ack_cq_events()的一次调用中同时确认几个完成事件来分摊此成本。
ibv_ack_cq_events
原文original:ibv_ack_cq_events() - RDMAmojo RDMAmojo
描述
ibv_ack_cq_events()确认完成事件(acknowledge Completion events.)。
为了防止竞争,使用ibv_get_cq_event()读取的所有完成事件 必须使用ibv_ack_cq_events()确认。
在数据路径中调用ibv_ack_cq_events()可能相对昂贵,因为它使用互斥对象。因此,最好通过对需要确认的事件进行计数,然后再调用ibv_ack_cq_events()一次性确认多个完成事件来分摊成本。
参数
Name | Direction | Description |
---|---|---|
cq | in | 从ibv_create_cq()返回的CQ |
nevents | in |
要确认的完成事件数。(Number of Completion events to acknowledge) |
返回值
无 (此功能始终成功)。
例子
read完成事件并确认它:
|
常见问题
为什么无论如何需要调用ibv_ack_cq_events()?
使用此verb 函数是为了防止内部竞争。
如果我不确认所有完成事件会怎样?
如果一个人不确认他使用ibv_get_cq_event()读取的所有完成事件,则销毁获得事件的CQ将永远被阻塞。此行为是为了防止出现 对 已被破坏的资源 进行确认(的情况)。
如果我读取一个完成事件,但在确认事件之前我的进程被有意地终止(例如,通过调用exit())或无意地终止(例如,段错误),将会发生什么情况?
即使有任何未确认的完成事件,当进程终止时,无论原因如何,所有资源都将被清除。
我应该一个接一个地确认完成事件,还是一次确认几个完成事件?
确认完成事件需要使用互斥对象,因此强烈建议一次确认多个完成事件(尤其是在数据路径中)。
【verbs】ibv_get_cq_event|ibv_ack_cq_events()相关推荐
- 【verbs】ibv_get_async_event()
原文:ibv_get_async_event() - RDMAmojo RDMAmojo 描述 ibv_get_async_event() 读取 RDMA 设备上下文context的下一个异步事件. ...
- 【verbs】ibv_create_comp_channel()
原文:ibv_create_comp_channel() - RDMAmojo RDMAmojo 描述 ibv_create_comp_channel() 为 RDMA 设备上下文创建完成事件通道. ...
- 【verbs】ibv_req_notify_cq()
ibv_req_notify_cq() - RDMAmojo RDMAmojo 描述 ibv_req_notify_cq() 在完成队列 (CQ) 上请求Completion Notification ...
- 【RDMA】12. RDMA之Verbs|OFED
目录 verbs源码 相关名词解释 Verbs API是什么 设计Verbs API的原因 Verbs API所包含的内容 使用Verbs API编写RDMA应用程序 官方示例程序 参考文献 [RDM ...
- 【RDMA】RDMA编程 和相关资料
目录 RDMA的学习环境搭建 RDMA与socket的类比 RDMA编程流程 RDMA编程2 RDMA学习路线总结 简介--什么是rdma 编程环境 推荐编程库 编程参考手册 相关资料和代码参考 rd ...
- 【RDMA】RDMA 编程实例(rdma_cm API)
目录 RDMA编程基础 说明 1. RDMA的学习环境搭建 2. RDMA与socket的类比 3. RDMA服务器的代码流程 main() { } 实例 用法 Makefile 服务端server. ...
- 【推荐】LSI(latent semantic indexing) 完美教程
[推荐]LSI(latent semantic indexing) 完美教程 "instead of lecturing about SVD I want to show you how t ...
- 【写作】Texlive和Texmaker学习
前言 最近要看一些论文做一下笔记,所以准备使用一下比较流行的Texlive和Texmaker写一下.其实CSDN的Markdown也是不错滴. 首先国际惯例,贴几个地址: Texlive镜像下载地址: ...
- 【RDMA】19. RDMA之iWARP Soft-iWARP
[RDMA]RDMA 学习资料总目录_bandaoyu的博客-CSDN博客SavirRDMA 分享1. RDMA概述https://blog.csdn.net/bandaoyu/article/det ...
最新文章
- ASN.1 Editor
- 涨点小姿势 奥迪TFSI前面数字是什么
- 小牛带你nginx反向代理中神奇的斜线
- kubectl apply -f_广州车展捷豹路虎参展阵容 全新F-PACE 路虎卫士90
- 使用中断后不停止_乔丹体育公司构成侵权,为何又不判令彻底停止使用“乔丹”注册商标?法院解释来了...
- Bootstrap3 带提示的进度条
- 什么是Maven以及Maven的优点有哪些?
- 7款很棒的 HTML5 视频播放器
- OpenStack互操作性认证 为何有UnitedStack?
- 提高Office2010等高版的启动速度文章链接收集-Office2010打开慢速度怎么办?
- admixture软件_使用ADMIXTURE进行群体结构分析
- 移动应用商店比较分析
- XP/WIN7系统中删除已结束进程托盘图标的方法
- nexus上传Jar包Anti cross-site request forgery token mismatch
- 箫演奏技巧符号大全图解
- 桌面上出现两个计算机图标,电脑桌面图标出现成双显示要怎么解决
- php上传带进度条_PHP+Ajax无刷新带进度条图片上传示例
- 黑镜狗再现!波士顿动力「大黄狗」上岗SpaceX,勘察火箭爆炸现场
- 【基础】信息时代与计算机
- c语言中max代表什么,什么是C中的DBL_MAX?