| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| #ifndef SELFTESTS_VFIO_LIB_INCLUDE_LIBVFIO_IOVA_ALLOCATOR_H | |
| #define SELFTESTS_VFIO_LIB_INCLUDE_LIBVFIO_IOVA_ALLOCATOR_H | |
| #include <linux/list.h> | |
| #include <linux/types.h> | |
| #include <linux/iommufd.h> | |
| #include <libvfio/iommu.h> | |
| struct iova_allocator { | |
| struct iommu_iova_range *ranges; | |
| u32 nranges; | |
| u32 range_idx; | |
| u64 range_offset; | |
| }; | |
| struct iova_allocator *iova_allocator_init(struct iommu *iommu); | |
| void iova_allocator_cleanup(struct iova_allocator *allocator); | |
| iova_t iova_allocator_alloc(struct iova_allocator *allocator, size_t size); | |
| #endif /* SELFTESTS_VFIO_LIB_INCLUDE_LIBVFIO_IOVA_ALLOCATOR_H */ |