From d079ef51ae6dff66a432862adad819db60becc9a Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 2 Aug 2012 17:10:46 +0200 Subject: [PATCH] Adapt GDB monitor and Noux to CPU session changes --- base-foc/include/foc_cpu_session/client.h | 7 +++++-- base/include/cpu_session/cpu_session.h | 4 ++-- ports/src/app/gdb_monitor/cpu_session_component.cc | 10 ++++++++-- ports/src/app/gdb_monitor/cpu_session_component.h | 3 ++- ports/src/noux/cpu_session_component.h | 7 +++++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/base-foc/include/foc_cpu_session/client.h b/base-foc/include/foc_cpu_session/client.h index 5f15a9a23..7c6078e67 100644 --- a/base-foc/include/foc_cpu_session/client.h +++ b/base-foc/include/foc_cpu_session/client.h @@ -25,8 +25,11 @@ namespace Genode { explicit Foc_cpu_session_client(Cpu_session_capability session) : Rpc_client(static_cap_cast(session)) { } - Thread_capability create_thread(Name const &name) { - return call(name); } + Thread_capability create_thread(Name const &name, addr_t utcb = 0) { + return call(name, utcb); } + + Ram_dataspace_capability utcb(Thread_capability thread) { + return call(thread); } void kill_thread(Thread_capability thread) { call(thread); } diff --git a/base/include/cpu_session/cpu_session.h b/base/include/cpu_session/cpu_session.h index add9964b6..d3d596b17 100644 --- a/base/include/cpu_session/cpu_session.h +++ b/base/include/cpu_session/cpu_session.h @@ -37,6 +37,7 @@ #include #include #include +#include namespace Genode { @@ -72,8 +73,7 @@ namespace Genode { /** * Get dataspace of the UTCB that is used by the specified thread */ - virtual Ram_dataspace_capability - utcb(Thread_capability thread) = 0; + virtual Ram_dataspace_capability utcb(Thread_capability thread) = 0; /** * Kill an existing thread diff --git a/ports/src/app/gdb_monitor/cpu_session_component.cc b/ports/src/app/gdb_monitor/cpu_session_component.cc index a28240f54..1e2976c28 100644 --- a/ports/src/app/gdb_monitor/cpu_session_component.cc +++ b/ports/src/app/gdb_monitor/cpu_session_component.cc @@ -63,10 +63,10 @@ Thread_capability Cpu_session_component::thread_cap(unsigned long lwpid) } -Thread_capability Cpu_session_component::create_thread(Cpu_session::Name const &name) +Thread_capability Cpu_session_component::create_thread(Cpu_session::Name const &name, addr_t utcb) { Thread_capability thread_cap = - _parent_cpu_session.create_thread(name.string()); + _parent_cpu_session.create_thread(name.string(), utcb); if (thread_cap.valid()) { Thread_info *thread_info = new (env()->heap()) Thread_info(thread_cap, new_lwpid++); @@ -77,6 +77,12 @@ Thread_capability Cpu_session_component::create_thread(Cpu_session::Name const & } +Ram_dataspace_capability Cpu_session_component::utcb(Thread_capability thread) +{ + return _parent_cpu_session.utcb(thread); +} + + void Cpu_session_component::kill_thread(Thread_capability thread_cap) { Thread_info *thread_info = _thread_info(thread_cap); diff --git a/ports/src/app/gdb_monitor/cpu_session_component.h b/ports/src/app/gdb_monitor/cpu_session_component.h index fcdda191d..fb810ce3e 100644 --- a/ports/src/app/gdb_monitor/cpu_session_component.h +++ b/ports/src/app/gdb_monitor/cpu_session_component.h @@ -54,7 +54,8 @@ class Cpu_session_component : public Rpc_object ** CPU session interface ** ***************************/ - Thread_capability create_thread(Name const &); + Thread_capability create_thread(Name const &, addr_t); + Ram_dataspace_capability utcb(Thread_capability thread); void kill_thread(Thread_capability); Thread_capability first(); Thread_capability next(Thread_capability); diff --git a/ports/src/noux/cpu_session_component.h b/ports/src/noux/cpu_session_component.h index b9300d096..963ba5ab9 100644 --- a/ports/src/noux/cpu_session_component.h +++ b/ports/src/noux/cpu_session_component.h @@ -70,7 +70,7 @@ namespace Noux { ** Cpu_session interface ** ***************************/ - Thread_capability create_thread(Name const &name) + Thread_capability create_thread(Name const &name, addr_t utcb) { /* * Prevent any attempt to create more than the main @@ -81,12 +81,15 @@ namespace Noux { while (1); return Thread_capability(); } - _main_thread = _cpu.create_thread(name); + _main_thread = _cpu.create_thread(name, utcb); PINF("created main thread"); return _main_thread; } + Ram_dataspace_capability utcb(Thread_capability thread) { + return _cpu.utcb(thread); } + void kill_thread(Thread_capability thread) { _cpu.kill_thread(thread); }