struct ibv_device** ibv_get_device_list(int *num_devices);

描述

函数用来返回一个当前可用的RDMA设备数组。

注意

  • 数组以NULL结尾;
  • RDMA设备数组可以经由ibv_free_device_list()函数释放。

参数(int * num_devices)

  • int 指针类型
  • 若返回结果不为NULL,参数指向的值为返回数组中可用RDMA设备数

返回值(struct ibv_device**)

  • 返回成功时:ibv_device指向可用的RDMA设备数组,num_devices设置为对应的设备数
  • 返回失败时:ibv_device指向NULL,如果请求失败,设置errno值

  可能的errno值有:

  • EPERM:权限拒绝
  • ENOMEM:内存不足以完成操作
  • ENOSYS:没有内核支持RDMA

例子

1、不带参数的获取设备列表

struct ibv_device **dev_list;

dev_list = ibv_get_device_list(NULL);
if (!dev_list)
exit(1);

2、带参数的获取设备列表

struct ibv_device **dev_list;
int num_devices; dev_list = ibv_get_device_list(&num_devices);
if (!dev_list)
exit(1);

FAQs

1、调用ibv_get_device_list()函数,它返回NULL,意味着什么?

答:这是一个基础的verb,一般不会失败,可以检查一下 ib_uverbs 模块是否被加载

2、调用ibv_get_device_list()函数,返回空的list,意味着什么?

答:驱动没有找到任何的RDMA设备

  • 如果你的机器存在RDMA设备,可以用lspci检查
  • 使用 lsmod 检查支持RDMA设备的底层驱动模块是否加载
  • 使用 dmesg /var/log/message 检查是否有报错

参考链接:http://www.rdmamojo.com/2012/05/31/ibv_get_device_list/

ibv_get_device_list()函数的更多相关文章

  1. ibv_get_device_name()函数

    const char *ibv_get_device_name(struct ibv_device *device); 描述 函数用来获取一个与RDMA设备相关联的名字 注意 这个名字在一台特定的机器 ...

  2. ibv_open_device()函数

    struct ibv_context *ibv_open_device(struct ibv_device *device); 描述 函数会创建一个RDMA设备相关的context:可以通过ibv_c ...

  3. ibv_get_device_guid()函数

    uint64_t ibv_get_device_guid(struct ibv_device *device); 描述 函数返回RDMA 设备的 GUID(The Global Unique IDen ...

  4. ibv_close_device()函数

    int ibv_close_device(struct ibv_context *context); 描述 函数用来关闭一个RDMA设备context: 注意: 函数不能用来释放与该Context关联 ...

  5. ibv_free_device_list()函数

    void ibv_free_device_list(struct ibv_device **list); 描述 函数用来释放当前可用的RDMA设备数组. 注意 数组一旦释放,指向设备的指针将不能再由i ...

  6. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  7. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  8. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  9. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

随机推荐

  1. 3 Ways to Learn Whether a Windows Program is 64-bit or 32-bit

    More than 90% of Windows 8.1 installations are 64-bit and, as a result, more and more people use 64- ...

  2. JVM之栈、堆、方法区(三)

    一.CPU和内存的交互 今天除夕,祝大家新年快乐,其实,我们知道的,我们的CPU跟内存会有非常频繁的交互,因为如果这个频繁的交互是交给我们的磁盘的话,那么随着我们的CPU运转速度越来越快,那么我们的磁 ...

  3. ql/sql 循环语句、异常处理、事务处理!

    一.ql sql 循环语句? /*1.loop循环 语法: 声明循环变量 loop 判断循环条件 ,如果循环条件不成立,跳出循if 条件表达式 then exit; end if; 语句块; 改变循环 ...

  4. ApacheCN PHP 译文集 20211101 更新

    PHP 入门指南 零.序言 一.PHP 入门 二.数组和循环 三.函数和类 四.数据操作 五.构建 PHP Web 应用 六.搭建 PHP 框架 七.认证与用户管理 八.建立联系人管理系统 使用 PH ...

  5. 「JOI 2015 Final」城墙

    「JOI 2015 Final」城墙 复杂度默认\(m=n\) 暴力 对于点\((i,j)\),记录\(ld[i][j]=min(向下延伸的长度,向右延伸的长度)\),\(rd[i][j]=min(向 ...

  6. Android的基本资源引用(字符串、颜色、尺寸、数组)【转】

    感谢大佬:https://blog.csdn.net/wenge1477/article/details/81295763 Android的基本资源引用(字符串.颜色.尺寸.数组)[转] 一.Andr ...

  7. scons: 使用 SCons 轻松建造程序

    转载请注明来源:https://www.cnblogs.com/hookjc/ 在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称为 Makefile 的配置文件可以自 ...

  8. Xcode全系列下载地址

    Xcode全系列下载地址,不断更新dmg 格式 下载链接:http://pan.baidu.com/s/1mgyxLP2

  9. Scala中实现break与continue

    Scala是函数式编程语言,因此没有直接的break与continue关键字,要实现break与continue效果,需要绕一下. 需要导入包: import util.control.Breaks. ...

  10. atc工具模拟网络

    通过Facebook开源的atc工具,进行模拟不同的网络情况,如图: 目前不支持python3 相关网址: ATC http://facebook.github.io/augmented-traffi ...