| --- |
| date: 2025-5-8 |
| footer: libibverbs |
| header: "Libibverbs Programmer's Manual" |
| layout: page |
| license: 'Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md' |
| section: 3 |
| title: ibv_alloc_dmah |
| --- |
| |
| # NAME |
| |
| ibv_alloc_dmah - allocate a dma handle |
| |
| int ibv_dealloc_dmah - deallocate a dma handle |
| |
| # SYNOPSIS |
| |
| ```c |
| #include <infiniband/verbs.h> |
| |
| struct ibv_dmah *ibv_alloc_dmah(struct ibv_context *context, struct ibv_dmah_init_attr *attr); |
| |
| int ibv_dealloc_dmah(struct ibv_dmah *dmah); |
| |
| ``` |
| |
| # DESCRIPTION |
| |
| **ibv_alloc_dmah()** allocates an *ibv_dmah* object that is associated with the given |
| *context* and the input *attr* parameter. |
| |
| The allocated handle can be later used for optimizing DMA and RDMA operations associated |
| with a registered memory region. |
| |
| Once the *ibv_dmah* usage has been ended *ibv_dealloc_dmah()* should be called. |
| |
| This call will release resources that were earlier allocated using the **ibv_alloc_dmah()** API. |
| |
| # ARGUMENTS |
| |
| ## attr |
| |
| ```c |
| |
| enum ibv_tph_mem_type { |
| IBV_TPH_MEM_TYPE_VM, /* volatile memory */ |
| IBV_TPH_MEM_TYPE_PM, /* persistent memory */ |
| }; |
| |
| enum ibv_dmah_init_attr_mask { |
| IBV_DMAH_INIT_ATTR_MASK_CPU_ID = 1 << 0, |
| IBV_DMAH_INIT_ATTR_MASK_PH = 1 << 1, |
| IBV_DMAH_INIT_ATTR_MASK_TPH_MEM_TYPE = 1 << 2, |
| }; |
| |
| struct ibv_dmah_init_attr { |
| uint32_t comp_mask; /* From ibv_dmah_init_attr_mask */ |
| uint32_t cpu_id; |
| uint8_t ph; |
| uint8_t tph_mem_type; /* From enum ibv_tph_mem_type */ |
| }; |
| ``` |
| *comp_mask* |
| : Bitmask specifying what fields in the structure are valid. |
| |
| *cpu_id* |
| : The cpu id that the dma handle refers to. |
| |
| *ph* |
| : Processing hints, used to aid in optimizing the handling of transactions over PCIe. |
| |
| *tph_mem_type* |
| : The target memory type, one among *enum ibv_tph_mem_type*. |
| |
| # RETURN VALUE |
| |
| **ibv_alloc_dmah()** returns a pointer to the allocated dma handle object, or NULL if the request fails. |
| |
| **ibv_dealloc_dmah()** returns 0 upon success, otherwise the errno value. |
| |
| # SEE ALSO |
| |
| **ibv_reg_mr_ex**(3) |
| |
| # AUTHOR |
| |
| Yishai Hadas <yishaih@nvidia.com> |