Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

ibv_fork_init (3)

Name

ibv_fork_init - initialize libibverbs to support fork()

Synopsis

#include <infiniband/verbs.h>

int ibv_fork_init(void);

Description

Libibverbs Programmer's Manual                                IBV_FORK_INIT(3)



NAME
       ibv_fork_init - initialize libibverbs to support fork()

SYNOPSIS
       #include <infiniband/verbs.h>

       int ibv_fork_init(void);

DESCRIPTION
       ibv_fork_init()  initializes  libibverbs's  data  structures  to handle
       fork() function calls correctly  and  avoid  data  corruption,  whether
       fork() is called explicitly or implicitly (such as in system()).

       It  is not necessary to use this function if all parent process threads
       are always blocked until all child processes end or change address spa-
       ces via an exec() operation.

RETURN VALUE
       ibv_fork_init()  returns 0 on success, or the value of errno on failure
       (which indicates the failure reason).


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE     |
       +---------------+-----------------------+
       |Availability   | network/open-fabrics  |
       +---------------+-----------------------+
       |Stability      | Pass-through volatile |
       +---------------+-----------------------+

NOTES
       ibv_fork_init() works on Linux  kernels  supporting  the  MADV_DONTFORK
       flag for madvise() (2.6.17 and higher).

       Setting  the  environment variable RDMAV_FORK_SAFE or IBV_FORK_SAFE has
       the same effect as calling ibv_fork_init().

       Setting the environment variable RDMAV_HUGEPAGES_SAFE tells 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.

       Calling  ibv_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.

       Setting RDMAV_HUGEPAGES_SAFE adds further overhead to all memory regis-
       trations.

       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source   was   downloaded   from    ['https://www.openfabrics.org/down-
       loads/ibutils/ibutils-1.5.7-0.2.gbd7e502.tar.gz', 'https://www.openfab-
       rics.org/downloads/libibverbs/libibverbs-1.1.8.tar.gz',
       'https://www.openfabrics.org/downloads/libmlx4/libmlx4-1.0.6.tar.gz',
       'https://www.openfabrics.org/downloads/libsdp/lib-
       sdp-1.1.108-0.15.gd7fdb72.tar.gz',   'https://www.openfabrics.org/down-
       loads/management/infiniband-diags-1.6.5.tar.gz',  'https://www.openfab-
       rics.org/downloads/management/libibmad-1.3.12.tar.gz',
       'https://www.openfabrics.org/downloads/management/libibu-
       mad-1.3.10.2.tar.gz',    'https://www.openfabrics.org/downloads/manage-
       ment/opensm-3.3.19.tar.gz',          'https://www.openfabrics.org/down-
       loads/perftest/perftest-1.3.0-0.42.gf350d3d.tar.gz', 'https://www.open-
       fabrics.org/downloads/qperf/qperf-0.4.9.tar.gz',  'https://www.openfab-
       rics.org/downloads/rdmacm/librdmacm-1.0.21.tar.gz',  'https://www.open-
       fabrics.org/downloads/rds-tools/rds-tools-2.0.4.tar.gz'].

       Further information about this software can be found on the open source
       community website at http://www.openfabrics.org/.

SEE ALSO
       fork(2), wait(2), system(3), exec(3), ibv_get_device_list(3)

AUTHORS
       Dotan Barak <dotanba@gmail.com>




libibverbs                        2006-10-31                  IBV_FORK_INIT(3)