IBV_OPEN_DEVICE(3), IBV_CLOSE_DEVICE(3)

作成日:2014.05.10
修正日:2015.09.10

NAME

ibv_open_device, ibv_close_device - RDMA デバイスコンテキストをオープン・クローズする。

SYNOPSIS

#include <infiniband/verbs.h>

struct ibv_context *ibv_open_device(struct ibv_device *device);

int ibv_close_device(struct ibv_context *context);

DESCRIPTION

ibv_open_device() は、device で指定された RDMA デバイスをオープンし、RDMA デバイスのコンテキストを作成する。

deviceibv_get_device_list() の戻り値として返される RDMA デバイス情報へのポインタの配列の(NULL でない)要素を指定する。

ibv_close_device() は、context で指定された RDMA デバイスコンテキストをクローズする。

RETURN VALUE

ibv_open_device() は成功すると割り当てられた RDMA デバイスコンテキストへのポインタを返す。 失敗すると NULL を返す。

ibv_close_device() は成功すると 0 を返す。 失敗すると -1 を返す。

NOTES

ibv_close_device() を使っても context を使って割り当てられたリソースは回収されない。 リソースのリークを回避するためには、context をクローズする前に、ユーザが関連する全てのリソースを解放する必要がある。

ibv_open_device() を実行するには、特別なアクセス権限(root とか)が必要な HCA がある。 そのため ibv_get_device_list() は実行可能だが、ibv_open_device() で失敗するということが起きる。

Linux の場合、ibv_open_device() は内部で /dev/infiniband/uverbsX をオープンする。 しかし HCA によっては、この /dev/infiniband/uverbsX にパーミッションが出ていないことがある。

crw-rw---- 1 root root 231, 192 Aug 25 11:19 /dev/infiniband/uverbs0
crw-rw---- 1 root root 231, 193 Aug 25 11:19 /dev/infiniband/uverbs1

この疑似デバイスのパーミッションを root 権限によって変更すると、一般ユーザーの権限で ibv_open_device() が実行可能になる場合もある。

# chmod a+rw /dev/infiniband/uverbs*

SEE ALSO

InfiniBand Verbs API Referenceibv_get_device_list(3)ibv_query_device(3)ibv_query_port(3)ibv_query_gid(3)ibv_query_pkey(3)

AUTHORS

原文 Dotan Barak <dotanba@gmail.com> 原文にない加筆がある。

コメント

コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp