ibv_get_device_list()函数

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/

posted @ 2017-12-13 17:18  huststephen  阅读(1697)  评论(0编辑  收藏  举报