From e20a60570989a3a951e90d07fc6077042d0fc7ae Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Sun, 11 May 2025 22:05:07 +0200 Subject: [PATCH] ealanos: Fixes to hamstraaja. --- repos/ealanos/include/ealanos/memory/coreheap.h | 12 +++++++----- repos/ealanos/include/ealanos/memory/hamstraaja.h | 9 ++++----- repos/ealanos/include/ealanos/memory/superblock.h | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/repos/ealanos/include/ealanos/memory/coreheap.h b/repos/ealanos/include/ealanos/memory/coreheap.h index e9dbcd54a1..1cb17bfb06 100644 --- a/repos/ealanos/include/ealanos/memory/coreheap.h +++ b/repos/ealanos/include/ealanos/memory/coreheap.h @@ -60,7 +60,7 @@ class Ealan::Memory::Core_heap { return cap; }, [&](Ram_allocator::Alloc_error err) { - Genode::error("Failed to allocate phyiscal memory in domain ", domain_id, ":", err); + Genode::error("Failed to allocate phyiscal memory in domain ", domain_id, ":", err, " avail quota: ", _pd.avail_ram()); return Ram_dataspace_capability(); }); if (!ds_cap.valid()) { @@ -104,9 +104,6 @@ class Ealan::Memory::Core_heap public: Core_heap(Pd_session &pd, Region_map &rm) : _pd(pd), _rm(rm) { - Genode::log("Size of superblock array is ", sizeof(_superblocks)); - Genode::log("Individual superblock size is: ", sizeof(Sb)); - Genode::log("Size of individual ist of superblocks: ", sizeof(Ealan::util::MPSCQueue)); } ~Core_heap() @@ -131,7 +128,12 @@ class Ealan::Memory::Core_heap if (size > MAX) { /* directly allocate a hyperblock */ - Hyperblock *hb = _allocate_hyperblock(domain_id, size+sizeof(Hyperblock*) + sizeof(Ram_dataspace_capability)); + Hyperblock *hb = _allocate_hyperblock( + domain_id, size + sizeof(Hyperblock *) + sizeof(Ram_dataspace_capability)); + if (!hb) { + Genode::warning("Failed to allocate hyperblock of size ", size); + return nullptr; + } hb->_next = reinterpret_cast(magic_num); return reinterpret_cast(hb) + sizeof(Hyperblock *) + sizeof(Ram_dataspace_capability); } diff --git a/repos/ealanos/include/ealanos/memory/hamstraaja.h b/repos/ealanos/include/ealanos/memory/hamstraaja.h index 8b8ca5ea43..2f48601be4 100644 --- a/repos/ealanos/include/ealanos/memory/hamstraaja.h +++ b/repos/ealanos/include/ealanos/memory/hamstraaja.h @@ -63,8 +63,8 @@ class Ealan::Memory::Hamstraaja : public Genode::Allocator size_t num_cpus = Cip::cip()->habitat_affinity.total(); for (size_t cpu = 0; cpu < num_cpus; cpu++) { _core_heaps[cpu] = new (_backend) Core_heap(_pd, _rm); - Genode::log("Size of CoreHeap for size ", MAX * 2, " with ", MIN, " blocks is: ", sizeof(Core_heap)); - } + } + Genode::log("Hamstraaja initialized"); } ~Hamstraaja() @@ -98,8 +98,8 @@ class Ealan::Memory::Hamstraaja : public Genode::Allocator */ void *alloc(size_t size, unsigned domain_id) { - _quota_used += overhead(size) + size; - return _location_to_heap(_my_location()).aligned_alloc(size, 0, domain_id); + _quota_used += overhead(size) + size; + return _location_to_heap(_my_location()).aligned_alloc(size, domain_id, 0); } /** @@ -111,7 +111,6 @@ class Ealan::Memory::Hamstraaja : public Genode::Allocator void *alloc(size_t size) { _quota_used += overhead(size) + size; - //Genode::log("Allocating ", size, " bytes."); return _location_to_heap(_my_location()).alloc(size); } diff --git a/repos/ealanos/include/ealanos/memory/superblock.h b/repos/ealanos/include/ealanos/memory/superblock.h index 702d9145ea..3e7c229b55 100644 --- a/repos/ealanos/include/ealanos/memory/superblock.h +++ b/repos/ealanos/include/ealanos/memory/superblock.h @@ -93,13 +93,13 @@ class Ealan::Memory::Superblock : public Hyperblock if (_size_class > SIZE) { Genode::error("Size class ", _size_class, " is bigger than superblock size ", SIZE); } - /*Genode::log("Superblock SIZE=", SIZE, " BASE=", BASE, " this at ", this); + Genode::log("Superblock SIZE=", SIZE, " BASE=", BASE, " this at ", this); Genode::log("Block metadata size is ", sizeof(Block)); Genode::log("Size class of superblock is ", _size_class); Block *end = reinterpret_cast(reinterpret_cast(this) + SIZE); Genode::log("Superblock ends at ", end); Genode::log("Capacity is ", capacity()); - Genode::log("-------------------");*/ + Genode::log("-------------------"); } /**