From dc77417396626e145fa5c73e3f502b2fb0e86baa Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Mon, 9 May 2022 17:54:06 +0200 Subject: [PATCH] lx_emul: add 'virt_range_start' to memory model Returns the start address of are memory region for given virtual address. --- repos/dde_linux/src/include/lx_kit/memory.h | 1 + repos/dde_linux/src/lib/lx_kit/memory.cc | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/repos/dde_linux/src/include/lx_kit/memory.h b/repos/dde_linux/src/include/lx_kit/memory.h index 8ce87d04d3..59946974db 100644 --- a/repos/dde_linux/src/include/lx_kit/memory.h +++ b/repos/dde_linux/src/include/lx_kit/memory.h @@ -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); }; diff --git a/repos/dde_linux/src/lib/lx_kit/memory.cc b/repos/dde_linux/src/lib/lx_kit/memory.cc index 0d3c7e9c5c..0d713b2a40 100644 --- a/repos/dde_linux/src/lib/lx_kit/memory.cc +++ b/repos/dde_linux/src/lib/lx_kit/memory.cc @@ -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))