-*- nroff -*-

IBV_SHARE_PD 3 2012-02-29 libibverbs "Libibverbs Programmer's Manual"
"NAME"
ibv_share_pd - share a protection domain (PD).
"SYNOPSIS"
 #include <infiniband/verbs.h>  "struct ibv_pd *ibv_share_pd(struct ibv_context " "*context" ", "  " struct ibv_shpd " "*shpd" ", uint64_t " "share_key"); 
"DESCRIPTION"
ibv_share_pd() shares the protection domain specified by a unique identifier shpd for the RDMA device context context. share_key is the 64 bit key used to generate the unique identifier shpd. ibv_pds created using ibv_share_pd() can be deallocated using ibv_dealloc_pd(). Libibverbs keeps track of each instance of the shared PD and removes the PD from RDMA device when the last instance of the shared PD is deallocated.
"RETURN VALUE"
ibv_share_pd() returns a pointer to the shared pd or NULL if the request fails.
"NOTES"
Even though the same PD is shared by multiple contexts of an RDMA device or processes, the life span of each resource created in an 'ibv_pd' linked to a context or process is limited by the life span of that instance of 'ibv_pd'. e.g. The life span of an MR mr1 created under ibv_pd pd1 (which is an instance of shared PD shPD1) will end whenever pd1 is deallocated, even though underlying shPD1 may continue to live on.

Sharing PD is not supported among 'ibv_context' created for different RDMA devices.

"SEE ALSO"
ibv_alloc_shpd (3), ibv_dealloc_pd (3)
"AUTHORS"

Arun Kaimalettu <gotoarunk at gmail dot com>