ibv_get_device_list(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | NOTES | STATIC LINKING | SEE ALSO | AUTHOR | COLOPHON

IBV_GET...ICE_LIST(3) Libibverbs Programmer’s ManualIBV_GET...ICE_LIST(3)

NAME         top

       ibv_get_device_list, ibv_free_device_list - get and release list
       of available RDMA devices

SYNOPSIS         top

              #include <infiniband/verbs.h>

              struct ibv_device **ibv_get_device_list(int *num_devices);

              void ibv_free_device_list(struct ibv_device **list);

DESCRIPTION         top

       ibv_get_device_list() returns a NULL-terminated array of RDMA
       devices currently available.  The argument num_devices is
       optional; if not NULL, it is set to the number of devices returned
       in the array.

       ibv_free_device_list() frees the array of devices list returned by
       ibv_get_device_list().

RETURN VALUE         top

       ibv_get_device_list() returns the array of available RDMA devices,
       or sets errno and returns NULL if the request fails.  If no
       devices are found then num_devices is set to 0, and non-NULL is
       returned.

       ibv_free_device_list() returns no value.

ERRORS         top

       EPERM  Permission denied.

       ENOSYS No kernel support for RDMA.

       ENOMEM Insufficient memory to complete the operation.

NOTES         top

       Client code should open all the devices it intends to use with
       ibv_open_device() before calling ibv_free_device_list().  Once it
       frees the array with ibv_free_device_list(), it will be able to
       use only the open devices; pointers to unopened devices will no
       longer be valid.

       Setting the environment variable IBV_SHOW_WARNINGS will cause
       warnings to be emitted to stderr if a kernel verbs device is
       discovered, but no corresponding userspace driver can be found for
       it.

STATIC LINKING         top

       If libibverbs is statically linked to the application then all
       provider drivers must also be statically linked.  The library will
       not load dynamic providers when static linking is used.

       To link the providers set the RDMA_STATIC_PROVIDERS define to the
       comma separated list of desired providers when compiling the
       application.  The special keyword `all' will statically link all
       supported libibverbs providers.

       This is intended to be used along with pkg-config(1) to setup the
       proper flags for libibverbs linking.

       If this is not done then ibv_get_device_list will always return an
       empty list.

       Using only dynamic linking for libibverbs applications is strongly
       recommended.

SEE ALSO         top

       ibv_fork_init(3), ibv_get_device_guid(3), ibv_get_device_name(3),
       ibv_get_device_index(3), ibv_open_device(3)

AUTHOR         top

       Dotan Barak ⟨dotanba@gmail.com⟩

COLOPHON         top

       This page is part of the rdma-core (RDMA Core Userspace Libraries
       and Daemons) project.  Information about the project can be found
       at ⟨https://github.com/linux-rdma/rdma-core⟩.  If you have a bug
       report for this manual page, send it to
       linux-rdma@vger.kernel.org.  This page was obtained from the
       project's upstream Git repository
       ⟨https://github.com/linux-rdma/rdma-core.git⟩ on 2025-08-11.  (At
       that time, the date of the most recent commit that was found in
       the repository was 2025-08-04.)  If you discover any rendering
       problems in this HTML version of the page, or you believe there is
       a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to
       man-pages@man7.org

libibverbs                      2006-10-31          IBV_GET...ICE_LIST(3)

Pages that refer to this page: ibv_fork_init(3)ibv_get_device_guid(3)ibv_get_device_index(3)ibv_get_device_name(3)ibv_open_device(3)