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. Flink源码学习笔记(2) 基于Yarn的自动伸缩容实现

    1.背景介绍 随着实时计算技术在之家内部的逐步推广,Flink 任务数及计算量都在持续增长,集群规模的也在逐步增大,本着降本提效的理念,我们研发了 Flink 任务伸缩容功能: 提供自动伸缩容功能,可 ...

  2. HTML 基础1

    HTML 超文本标记语言 文件后缀html,htm 标签成对出现:开始标签--结束标签 元素内容位于开始标签--结束标签之间(可以有空内容) 空元素<a/> 大小写不敏感 元素,属性 &l ...

  3. 使用VScode编写Markdown的一些使用技巧

  4. js-reduce方法源码

    // 数组中的reduce方法源码复写 //先说明一下reduce原理:总的一句,reduce方法主要是把数组遍历, //然后把数组的每个元素传入回调函数中,回调函数怎么处理,就会的到什么样的效果 A ...

  5. HBuilderX频繁关闭,导致启动不了?

    根据官方给出的指南(http://ask.dcloud.net.cn/article/35583),在我的电脑打开%appdata%下面的会有HBuilderX目录,把这个目录删除或改名就可以启动了:

  6. AT2164 [AGC006C] Rabbit Exercise

    首先我们可以考虑一下 \(x\) 关于 \(y\) 的对称点的坐标,不难发现就是 \(x + 2 \times (y - x)\),那么期望的增量就会增加 \(2 \times (y - x)\).不 ...

  7. ubuntu 修改文件及文件夹的权限

    转载请注明来源:https://www.cnblogs.com/hookjc/ 打开终端进入你需要修改的目录然后执行下面这条命令chmod 777 * -R全部子目录及文件权限改为 777 来源:py ...

  8. git 下载及更新

    转载请注明来源:https://www.cnblogs.com/hookjc/ 在完成了创建之后,GitHub会提示你如何向这个Repository上传代码.  首次上传: Git 本地上传 添加新文 ...

  9. MySQL索引类型一览 让MySQL高效运行起来(转)

    转自:http://www.php100.com/html/webkaifa/database/Mysql/2010/0409/4279.html 索引是快速搜索的关键.MySQL索引的建立对于MyS ...

  10. File常用的方法

    import java.io.File; import java.io.IOException; /* 创建: createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在 ...