/
githubmirror
/
rdma-core
Обзор
Документация
Войти
/
githubmirror
/
rdma-core
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
libibverbs/cmd_dmah.c
48 строк
1 KB
Yishai Hadas
verbs: Add ibv_cmd_alloc/free commands for DMA handle
23 июл 2025, 10:22
23 июл 2025, 10:22
d9af497
Код
Авторство
О чём код?
// SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB /* * Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved */ #include <infiniband/cmd_write.h> int ibv_cmd_alloc_dmah(struct ibv_context *ctx, struct verbs_dmah *dmah, struct ibv_dmah_init_attr *attr) { DECLARE_COMMAND_BUFFER(cmdb, UVERBS_OBJECT_DMAH, UVERBS_METHOD_DMAH_ALLOC, 4); struct ib_uverbs_attr *handle; int ret; handle = fill_attr_out_obj(cmdb, UVERBS_ATTR_ALLOC_DMAH_HANDLE); if (attr->comp_mask & IBV_DMAH_INIT_ATTR_MASK_CPU_ID) fill_attr_in_uint32(cmdb, UVERBS_ATTR_ALLOC_DMAH_CPU_ID, attr->cpu_id); if (attr->comp_mask & IBV_DMAH_INIT_ATTR_MASK_TPH_MEM_TYPE) fill_attr_in_enum(cmdb, UVERBS_ATTR_ALLOC_DMAH_TPH_MEM_TYPE, attr->tph_mem_type, NULL, 0); if (attr->comp_mask & IBV_DMAH_INIT_ATTR_MASK_PH) fill_attr_in(cmdb, UVERBS_ATTR_ALLOC_DMAH_PH, &attr->ph, sizeof(attr->ph)); ret = execute_ioctl(ctx, cmdb); if (ret) return errno; dmah->handle = read_attr_obj(UVERBS_ATTR_ALLOC_DMAH_HANDLE, handle); dmah->dmah.context = ctx; return 0; } int ibv_cmd_free_dmah(struct verbs_dmah *dmah) { DECLARE_COMMAND_BUFFER(cmdb, UVERBS_OBJECT_DMAH, UVERBS_METHOD_DMAH_FREE, 1); int ret; fill_attr_in_obj(cmdb, UVERBS_ATTR_FREE_DMA_HANDLE, dmah->handle); ret = execute_ioctl(dmah->dmah.context, cmdb); if (verbs_is_destroy_err(&ret)) return ret; return 0; }