NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |NOTES |SEE ALSO |AUTHOR |COLOPHON | |
IBV_FORK_INIT(3) Libibverbs Programmer’s ManualIBV_FORK_INIT(3)ibv_fork_init - initialize libibverbs to support fork()
#include <infiniband/verbs.h> int ibv_fork_init(void);
ibv_fork_init()initializes libibverbs’s data structures to handlefork()function calls correctly and avoid data corruption, whetherfork()is called explicitly or implicitly (such as insystem()). It is not necessary to use this function if all parent process threads are always blocked until all child processes end or change address spaces via anexec()operation.
ibv_fork_init()returns 0 on success, or the value of errno on failure (which indicates the failure reason). An error value of EINVAL indicates that there had been RDMA memory registration already and it is therefore not safe anymore to fork.
ibv_fork_init()works on Linux kernels supporting theMADV_DONTFORKflag formadvise()(2.6.17 and higher). Setting the environment variableRDMAV_FORK_SAFEorIBV_FORK_SAFE has the same effect as callingibv_fork_init(). Setting the environment variableRDMAV_HUGEPAGES_SAFEtells the library to check the underlying page size used by the kernel for memory regions. This is required if an application uses huge pages either directly or indirectly via a library such as libhugetlbfs. Callingibv_fork_init()will reduce performance due to an extra system call for every memory registration, and the additional memory allocated to track memory regions. The precise performance impact depends on the workload and usually will not be significant. SettingRDMAV_HUGEPAGES_SAFEadds further overhead to all memory registrations.
exec(3),fork(2),ibv_get_device_list(3),system(3),wait(2)
Dotan Barak ⟨dotanba@gmail.com⟩
This page is part of therdma-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 isnot part of the original manual page), send a mail to man-pages@man7.orglibibverbs 2006-10-31IBV_FORK_INIT(3)Pages that refer to this page:ibv_free_device_list(3), ibv_get_device_list(3), ibv_is_fork_initialized(3)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |