lx_emul: add 'virt_range_start' to memory model

Returns the start address of are memory region for given virtual
address.
This commit is contained in:
Sebastian Sumpf 2022-05-09 17:54:06 +02:00 committed by Christian Helmuth
parent 151a5e2d7f
commit dc77417396
2 changed files with 14 additions and 0 deletions

View File

@ -102,6 +102,7 @@ class Lx_kit::Mem_allocator
void * alloc(size_t size, size_t align);
addr_t dma_addr(void * addr);
addr_t virt_addr(void * dma_addr);
addr_t virt_region_start(void * virt_addr);
size_t size(const void * ptr);
bool free(const void * ptr);
};

View File

@ -133,6 +133,19 @@ Genode::addr_t Lx_kit::Mem_allocator::virt_addr(void * dma_addr)
}
Genode::addr_t Lx_kit::Mem_allocator::virt_region_start(void * virt_addr)
{
addr_t ret = 0UL;
_virt_to_dma.apply(Buffer_info::Query_addr(virt_addr),
[&] (Buffer_info const & info) {
ret = info.buffer.virt_addr();
});
return ret;
}
bool Lx_kit::Mem_allocator::free(const void * ptr)
{
if (!_mem.valid_addr((addr_t)ptr))