Lines Matching refs:allocator
25 struct iova_allocator *allocator; in iova_allocator_init() local
32 allocator = malloc(sizeof(*allocator)); in iova_allocator_init()
33 VFIO_ASSERT_NOT_NULL(allocator); in iova_allocator_init()
35 *allocator = (struct iova_allocator){ in iova_allocator_init()
42 return allocator; in iova_allocator_init()
45 void iova_allocator_cleanup(struct iova_allocator *allocator) in iova_allocator_cleanup() argument
47 free(allocator->ranges); in iova_allocator_cleanup()
48 free(allocator); in iova_allocator_cleanup()
51 iova_t iova_allocator_alloc(struct iova_allocator *allocator, size_t size) in iova_allocator_alloc() argument
60 VFIO_ASSERT_LT(allocator->range_idx, allocator->nranges, in iova_allocator_alloc()
63 range = &allocator->ranges[allocator->range_idx]; in iova_allocator_alloc()
64 iova = range->start + allocator->range_offset; in iova_allocator_alloc()
80 allocator->range_idx++; in iova_allocator_alloc()
81 allocator->range_offset = 0; in iova_allocator_alloc()
83 allocator->range_offset = last - range->start + 1; in iova_allocator_alloc()
89 allocator->range_idx++; in iova_allocator_alloc()
90 allocator->range_offset = 0; in iova_allocator_alloc()