From 94ece697e19e0e09e86b02fd685fb1b7c736733c Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 14 Jan 2025 14:38:31 +0100 Subject: [PATCH] fixup "core: don't rely on Core_env in platform.cc" (base-hw: account caps for utcb) --- repos/base-hw/src/core/platform_thread.cc | 11 ----------- repos/base-hw/src/core/platform_thread.h | 9 ++++++++- repos/base/src/core/cpu_session_component.cc | 2 +- repos/base/src/core/include/cpu_thread_component.h | 3 ++- repos/libports/recipes/pkg/test-pthread/runtime | 2 +- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/repos/base-hw/src/core/platform_thread.cc b/repos/base-hw/src/core/platform_thread.cc index 76f229f8d9..686cf89879 100644 --- a/repos/base-hw/src/core/platform_thread.cc +++ b/repos/base-hw/src/core/platform_thread.cc @@ -29,17 +29,6 @@ using namespace Core; -Ram_dataspace_capability Platform_thread::Utcb::_allocate(Ram_allocator &ram) -{ - try { - return ram.alloc(sizeof(Native_utcb), CACHED); - } catch (...) { - error("failed to allocate UTCB"); - throw Out_of_ram(); - } -} - - addr_t Platform_thread::Utcb::_attach(Region_map &core_rm) { Region_map::Attr attr { }; diff --git a/repos/base-hw/src/core/platform_thread.h b/repos/base-hw/src/core/platform_thread.h index cc7bfb4e05..83fe4269b1 100644 --- a/repos/base-hw/src/core/platform_thread.h +++ b/repos/base-hw/src/core/platform_thread.h @@ -69,7 +69,14 @@ class Core::Platform_thread : Noncopyable addr_t const core_addr; /* UTCB address within core/kernel */ addr_t const phys_addr; - Ram_dataspace_capability _allocate(Ram_allocator &); + /* + * \throw Out_of_ram + * \throw Out_of_caps + */ + Ram_dataspace_capability _allocate(Ram_allocator &ram) + { + return ram.alloc(sizeof(Native_utcb), CACHED); + } addr_t _attach(Region_map &); diff --git a/repos/base/src/core/cpu_session_component.cc b/repos/base/src/core/cpu_session_component.cc index df5b07562c..edcb431d79 100644 --- a/repos/base/src/core/cpu_session_component.cc +++ b/repos/base/src/core/cpu_session_component.cc @@ -63,7 +63,7 @@ Cpu_session_component::create_thread(Capability pd_cap, Cpu_thread_component &thread = *new (&_thread_alloc) Cpu_thread_component( cap(), *this, _thread_ep, _local_rm, _pager_ep, - *pd, platform_pd, pd_threads, _trace_control_area, + *pd, _ram_alloc, platform_pd, pd_threads, _trace_control_area, _trace_sources, weight, _weight_to_quota(weight.value), _thread_affinity(affinity), _label, name, _priority, utcb); diff --git a/repos/base/src/core/include/cpu_thread_component.h b/repos/base/src/core/include/cpu_thread_component.h index 37280c3354..1850e32175 100644 --- a/repos/base/src/core/include/cpu_thread_component.h +++ b/repos/base/src/core/include/cpu_thread_component.h @@ -144,6 +144,7 @@ class Core::Cpu_thread_component : public Rpc_object, Region_map &core_rm, Pager_entrypoint &pager_ep, Pd_session_component &pd, + Ram_allocator &cpu_ram, Platform_pd &platform_pd, Pd_threads &pd_threads, Trace::Control_area &trace_control_area, @@ -161,7 +162,7 @@ class Core::Cpu_thread_component : public Rpc_object, _weight(weight), _session_label(label), _name(name), _pd_element(pd_threads, *this), - _platform_thread(platform_pd, ep, pd, core_rm, quota, name.string(), + _platform_thread(platform_pd, ep, cpu_ram, core_rm, quota, name.string(), priority, location, utcb), _trace_control_slot(trace_control_area), _trace_sources(trace_sources), diff --git a/repos/libports/recipes/pkg/test-pthread/runtime b/repos/libports/recipes/pkg/test-pthread/runtime index 1c2a9a8283..1e3ba85f3c 100644 --- a/repos/libports/recipes/pkg/test-pthread/runtime +++ b/repos/libports/recipes/pkg/test-pthread/runtime @@ -27,7 +27,7 @@ - +