7#include <infiniband/verbs.h>
9#include "rdmapp/detail/noncopyable.h"
18 struct ibv_device **devices_;
23 :
public std::iterator<std::forward_iterator_tag, struct ibv_device *> {
26 struct ibv_device **devices_;
27 iterator(
struct ibv_device **devices,
size_t i);
30 struct ibv_device *&operator*();
38 struct ibv_device *at(
size_t i);
49 struct ibv_device *device_;
50 struct ibv_context *ctx_;
51 struct ibv_port_attr port_attr_;
52 struct ibv_device_attr_ex device_attr_ex_;
61 void open_device(
struct ibv_device *target, uint16_t
port_num);
100 uint16_t
lid()
const;
107 union ibv_gid
gid() const;
125 int gid_index()
const;
127 static std::string gid_hex_string(
union ibv_gid
const &
gid);
This class is an abstraction of a Completion Queue.
Definition cq.h:22
This class holds a list of devices available on the system.
Definition device.h:17
This class is an abstraction of an Infiniband device.
Definition device.h:48
union ibv_gid gid() const
Get the gid of the device.
Definition device.cc:137
bool is_fetch_and_add_supported() const
Checks if the device supports fetch and add.
Definition device.cc:147
bool is_compare_and_swap_supported() const
Checks if the device supports compare and swap.
Definition device.cc:143
uint16_t port_num() const
Get the device port number.
Definition device.cc:133
uint16_t lid() const
Get the lid of the device.
Definition device.cc:135
Definition noncopyable.h:5
This class is an abstraction of a Protection Domain.
Definition pd.h:20
This class is an abstraction of an Infiniband Queue Pair.
Definition qp.h:50
This class represents a Shared Receive Queue.
Definition srq.h:15