From f3efbe50bbec485116d60e276a8b8c107796cedf Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Mon, 6 Jul 2020 16:09:44 +0200 Subject: [PATCH] base: remove deprecated cancel_blocking() support for threads. Fixes #3806 --- .../src/core/include/platform_thread.h | 5 --- repos/base-fiasco/src/core/platform_thread.cc | 11 ------ repos/base-fiasco/src/core/thread_start.cc | 8 ----- .../src/core/include/platform_thread.h | 5 --- repos/base-foc/src/core/platform_thread.cc | 6 ---- repos/base-foc/src/core/thread_start.cc | 8 ----- repos/base-foc/src/lib/base/thread_start.cc | 6 ---- .../base-hw/src/core/kernel/core_interface.h | 24 +------------ repos/base-hw/src/core/kernel/thread.cc | 7 ---- repos/base-hw/src/core/kernel/thread.h | 1 - repos/base-hw/src/core/platform_thread.h | 6 ---- repos/base-hw/src/core/thread_start.cc | 6 ---- repos/base-hw/src/lib/base/thread_start.cc | 6 ---- .../src/core/include/platform_thread.h | 5 --- repos/base-linux/src/core/platform_thread.cc | 6 ---- repos/base-linux/src/core/thread_linux.cc | 3 -- repos/base-linux/src/lib/base/thread_linux.cc | 6 ---- .../base-linux/src/lib/lx_hybrid/lx_hybrid.cc | 8 ----- repos/base-nova/include/cpu_thread/client.h | 3 -- repos/base-nova/src/core/include/pager.h | 6 ---- .../src/core/include/platform_thread.h | 5 --- repos/base-nova/src/core/pager.cc | 15 -------- repos/base-nova/src/core/platform_thread.cc | 8 ----- repos/base-nova/src/core/thread_start.cc | 9 ----- repos/base-nova/src/lib/base/thread_start.cc | 9 ----- .../src/core/include/platform_thread.h | 5 --- repos/base-okl4/src/core/platform_thread.cc | 21 ------------ repos/base-okl4/src/core/thread_start.cc | 8 ----- .../src/core/include/platform_thread.h | 5 --- .../src/core/platform_thread.cc | 34 ------------------- repos/base-pistachio/src/core/thread_start.cc | 8 ----- .../src/core/include/platform_thread.h | 5 --- repos/base-sel4/src/core/platform_thread.cc | 6 ---- repos/base-sel4/src/core/thread_start.cc | 6 ---- repos/base/include/base/rpc_server.h | 7 ---- repos/base/include/base/thread.h | 8 ----- repos/base/include/cpu_thread/client.h | 3 -- repos/base/include/cpu_thread/cpu_thread.h | 11 +----- repos/base/lib/symbols/ld | 1 - repos/base/src/core/cpu_thread_component.cc | 6 ---- .../src/core/include/cpu_thread_component.h | 1 - repos/base/src/lib/base/thread_start.cc | 6 ---- repos/gems/lib/symbols/cpu_sampler_platform | 3 -- .../cpu_sampler/cpu_thread_component.cc | 6 ---- .../server/cpu_sampler/cpu_thread_component.h | 1 - repos/ports/lib/symbols/gdbserver_platform | 3 -- repos/ports/run/gdb_monitor.run | 3 +- .../app/gdb_monitor/cpu_thread_component.cc | 6 ---- .../app/gdb_monitor/cpu_thread_component.h | 1 - 49 files changed, 3 insertions(+), 343 deletions(-) diff --git a/repos/base-fiasco/src/core/include/platform_thread.h b/repos/base-fiasco/src/core/include/platform_thread.h index 30bd38894d..c2313cda5e 100644 --- a/repos/base-fiasco/src/core/include/platform_thread.h +++ b/repos/base-fiasco/src/core/include/platform_thread.h @@ -102,11 +102,6 @@ namespace Genode { */ void resume(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * This thread is about to be bound * diff --git a/repos/base-fiasco/src/core/platform_thread.cc b/repos/base-fiasco/src/core/platform_thread.cc index 6e57981b7c..242dbc959d 100644 --- a/repos/base-fiasco/src/core/platform_thread.cc +++ b/repos/base-fiasco/src/core/platform_thread.cc @@ -142,17 +142,6 @@ Thread_state Platform_thread::state() } -void Platform_thread::cancel_blocking() -{ - l4_umword_t dummy; - l4_threadid_t invalid = L4_INVALID_ID; - - l4_inter_task_ex_regs(_l4_thread_id, ~0UL, ~0UL, - &invalid, &invalid, &invalid, - &dummy, &dummy, &dummy, 0, l4_utcb_get()); -} - - Platform_thread::Platform_thread(size_t, const char *name, unsigned, Affinity::Location, addr_t) : _l4_thread_id(L4_INVALID_ID), _name(name) { } diff --git a/repos/base-fiasco/src/core/thread_start.cc b/repos/base-fiasco/src/core/thread_start.cc index 13ee042645..29ccc8d1f9 100644 --- a/repos/base-fiasco/src/core/thread_start.cc +++ b/repos/base-fiasco/src/core/thread_start.cc @@ -49,14 +49,6 @@ void Thread::start() } -void Thread::cancel_blocking() -{ - /* - * Within core, we never need to unblock threads - */ -} - - void Thread::_deinit_platform_thread() { /* destruct platform thread */ diff --git a/repos/base-foc/src/core/include/platform_thread.h b/repos/base-foc/src/core/include/platform_thread.h index 35f7231432..d61ef129bb 100644 --- a/repos/base-foc/src/core/include/platform_thread.h +++ b/repos/base-foc/src/core/include/platform_thread.h @@ -116,11 +116,6 @@ namespace Genode { */ void resume(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * This thread is about to be bound * diff --git a/repos/base-foc/src/core/platform_thread.cc b/repos/base-foc/src/core/platform_thread.cc index 1fbe88c605..000a677b2f 100644 --- a/repos/base-foc/src/core/platform_thread.cc +++ b/repos/base-foc/src/core/platform_thread.cc @@ -219,12 +219,6 @@ Foc_thread_state Platform_thread::state() } -void Platform_thread::cancel_blocking() -{ - l4_irq_trigger(_irq.local.data()->kcap()); -} - - void Platform_thread::affinity(Affinity::Location location) { _location = location; diff --git a/repos/base-foc/src/core/thread_start.cc b/repos/base-foc/src/core/thread_start.cc index 802d0b9923..c32e5631e0 100644 --- a/repos/base-foc/src/core/thread_start.cc +++ b/repos/base-foc/src/core/thread_start.cc @@ -110,11 +110,3 @@ void Thread::start() new (platform().core_mem_alloc()) Core_trace_source(Trace::sources(), *this, pt); } - - -void Thread::cancel_blocking() -{ - /* - * Within core, we never need to unblock threads - */ -} diff --git a/repos/base-foc/src/lib/base/thread_start.cc b/repos/base-foc/src/lib/base/thread_start.cc index 911b64ecb7..5015153361 100644 --- a/repos/base-foc/src/lib/base/thread_start.cc +++ b/repos/base-foc/src/lib/base/thread_start.cc @@ -102,9 +102,3 @@ void Thread::start() Cpu_thread_client cpu_thread(_thread_cap); cpu_thread.start((addr_t)_thread_start, _stack->top()); } - - -void Thread::cancel_blocking() -{ - Cpu_thread_client(_thread_cap).cancel_blocking(); -} diff --git a/repos/base-hw/src/core/kernel/core_interface.h b/repos/base-hw/src/core/kernel/core_interface.h index 557ccf835d..c069958555 100644 --- a/repos/base-hw/src/core/kernel/core_interface.h +++ b/repos/base-hw/src/core/kernel/core_interface.h @@ -59,8 +59,7 @@ namespace Kernel constexpr Call_arg call_id_ack_irq() { return 120; } constexpr Call_arg call_id_new_obj() { return 121; } constexpr Call_arg call_id_delete_obj() { return 122; } - constexpr Call_arg call_id_cancel_thread_blocking() { return 123; } - constexpr Call_arg call_id_new_core_thread() { return 124; } + constexpr Call_arg call_id_new_core_thread() { return 123; } /** * Invalidate TLB entries for the `pd` in region `addr`, `sz` @@ -140,27 +139,6 @@ namespace Kernel } - /** - * Cancel blocking of a thread if it is in a cancelable blocking state - * - * \param thread pointer to thread kernel object - * - * Does cleanly cancel a cancelable blocking thread state (IPC, signalling, - * stopped). The thread whose blocking was cancelled goes back to the - * 'active' thread state. If needed, it receives a syscall return value - * that reflects the cancellation. This syscall doesn't affect the pause - * state of the thread (see the 'pause_thread' syscall) which means that - * the thread may still be not allowed for scheduling. The syscall is - * core-restricted and may target any thread. It is actually used to - * limit the time a parent waits for a server when closing a session - * of one of its children. - */ - inline void cancel_thread_blocking(Thread & thread) - { - call(call_id_cancel_thread_blocking(), (Call_arg)&thread); - } - - /** * Set or unset the handler of an event that can be triggered by a thread * diff --git a/repos/base-hw/src/core/kernel/thread.cc b/repos/base-hw/src/core/kernel/thread.cc index 32aa476f0e..32d403992e 100644 --- a/repos/base-hw/src/core/kernel/thread.cc +++ b/repos/base-hw/src/core/kernel/thread.cc @@ -346,12 +346,6 @@ bool Thread::_restart() } -void Thread::_call_cancel_thread_blocking() -{ - reinterpret_cast(user_arg_1())->_cancel_blocking(); -} - - void Thread::_cancel_blocking() { switch (_state) { @@ -768,7 +762,6 @@ void Thread::_call() case call_id_delete_thread(): _call_delete_thread(); return; case call_id_start_thread(): _call_start_thread(); return; case call_id_resume_thread(): _call_resume_thread(); return; - case call_id_cancel_thread_blocking(): _call_cancel_thread_blocking(); return; case call_id_thread_pager(): _call_pager(); return; case call_id_invalidate_tlb(): _call_invalidate_tlb(); return; case call_id_new_pd(): diff --git a/repos/base-hw/src/core/kernel/thread.h b/repos/base-hw/src/core/kernel/thread.h index 5554067be3..5f2f1218b9 100644 --- a/repos/base-hw/src/core/kernel/thread.h +++ b/repos/base-hw/src/core/kernel/thread.h @@ -220,7 +220,6 @@ class Kernel::Thread : private Kernel::Object, public Cpu_job, private Timeout void _call_stop_thread(); void _call_pause_thread(); void _call_resume_thread(); - void _call_cancel_thread_blocking(); void _call_restart_thread(); void _call_yield_thread(); void _call_delete_thread(); diff --git a/repos/base-hw/src/core/platform_thread.h b/repos/base-hw/src/core/platform_thread.h index 921cef46dd..e5fd4abb22 100644 --- a/repos/base-hw/src/core/platform_thread.h +++ b/repos/base-hw/src/core/platform_thread.h @@ -162,12 +162,6 @@ namespace Genode { */ void resume() { Kernel::resume_thread(*_kobj); } - /** - * Cancel currently blocking operation - */ - void cancel_blocking() { - Kernel::cancel_thread_blocking(*_kobj); } - /** * Set CPU quota of the thread to 'quota' */ diff --git a/repos/base-hw/src/core/thread_start.cc b/repos/base-hw/src/core/thread_start.cc index ffe974987e..e62ad8e732 100644 --- a/repos/base-hw/src/core/thread_start.cc +++ b/repos/base-hw/src/core/thread_start.cc @@ -77,12 +77,6 @@ void Thread::start() } -void Thread::cancel_blocking() -{ - native_thread().platform_thread->cancel_blocking(); -} - - void Thread::_deinit_platform_thread() { /* destruct platform thread */ diff --git a/repos/base-hw/src/lib/base/thread_start.cc b/repos/base-hw/src/lib/base/thread_start.cc index fa92ea9b5c..5eb38ded9a 100644 --- a/repos/base-hw/src/lib/base/thread_start.cc +++ b/repos/base-hw/src/lib/base/thread_start.cc @@ -100,9 +100,3 @@ void Thread::start() /* start thread with its initial IP and aligned SP */ Cpu_thread_client(_thread_cap).start((addr_t)_thread_start, _stack->top()); } - - -void Thread::cancel_blocking() -{ - Cpu_thread_client(_thread_cap).cancel_blocking(); -} diff --git a/repos/base-linux/src/core/include/platform_thread.h b/repos/base-linux/src/core/include/platform_thread.h index 4bb7d9de94..40e3600479 100644 --- a/repos/base-linux/src/core/include/platform_thread.h +++ b/repos/base-linux/src/core/include/platform_thread.h @@ -80,11 +80,6 @@ namespace Genode { ~Platform_thread(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * Pause this thread */ diff --git a/repos/base-linux/src/core/platform_thread.cc b/repos/base-linux/src/core/platform_thread.cc index efdaf02719..219ea4d20b 100644 --- a/repos/base-linux/src/core/platform_thread.cc +++ b/repos/base-linux/src/core/platform_thread.cc @@ -89,12 +89,6 @@ Platform_thread::~Platform_thread() } -void Platform_thread::cancel_blocking() -{ - lx_tgkill(_pid, _tid, LX_SIGUSR1); -} - - void Platform_thread::pause() { warning(__func__, "not implemented"); diff --git a/repos/base-linux/src/core/thread_linux.cc b/repos/base-linux/src/core/thread_linux.cc index 0b36d43b21..64ff953cb7 100644 --- a/repos/base-linux/src/core/thread_linux.cc +++ b/repos/base-linux/src/core/thread_linux.cc @@ -69,6 +69,3 @@ void Thread::start() native_thread().tid = lx_create_thread(Thread::_thread_start, stack_top(), this); native_thread().pid = lx_getpid(); } - - -void Thread::cancel_blocking() { } diff --git a/repos/base-linux/src/lib/base/thread_linux.cc b/repos/base-linux/src/lib/base/thread_linux.cc index e6f9c49395..4007e2ea64 100644 --- a/repos/base-linux/src/lib/base/thread_linux.cc +++ b/repos/base-linux/src/lib/base/thread_linux.cc @@ -166,9 +166,3 @@ void Thread::start() /* wait until the 'thread_start' function got entered */ startup_lock().block(); } - - -void Thread::cancel_blocking() -{ - Cpu_thread_client(_thread_cap).cancel_blocking(); -} diff --git a/repos/base-linux/src/lib/lx_hybrid/lx_hybrid.cc b/repos/base-linux/src/lib/lx_hybrid/lx_hybrid.cc index 7d8a7f4dbc..d42673ebec 100644 --- a/repos/base-linux/src/lib/lx_hybrid/lx_hybrid.cc +++ b/repos/base-linux/src/lib/lx_hybrid/lx_hybrid.cc @@ -531,14 +531,6 @@ Thread::Thread(Env &env, Name const &name, size_t stack_size) : Thread(env, name, stack_size, Location(), Weight(), env.cpu()) { } -void Thread::cancel_blocking() -{ - /* - * XXX implement interaction with CPU session - */ -} - - Thread::~Thread() { bool const needs_join = (pthread_cancel(native_thread().meta_data->pt) == 0); diff --git a/repos/base-nova/include/cpu_thread/client.h b/repos/base-nova/include/cpu_thread/client.h index ac8c957f49..7f0444d557 100644 --- a/repos/base-nova/include/cpu_thread/client.h +++ b/repos/base-nova/include/cpu_thread/client.h @@ -51,9 +51,6 @@ struct Genode::Cpu_thread_client : Rpc_client void resume() override { call(); } - void cancel_blocking() override { - call(); } - Thread_state state() override { return call(); } diff --git a/repos/base-nova/src/core/include/pager.h b/repos/base-nova/src/core/include/pager.h index 4167bc21bf..77f6045385 100644 --- a/repos/base-nova/src/core/include/pager.h +++ b/repos/base-nova/src/core/include/pager.h @@ -256,12 +256,6 @@ namespace Genode { return true; } - /** - * Cancel blocking in a lock so that recall exception can take - * place. - */ - void client_cancel_blocking(); - uint8_t client_recall(bool get_state_and_block); void client_set_ec(addr_t ec) { _state.sel_client_ec = ec; } diff --git a/repos/base-nova/src/core/include/platform_thread.h b/repos/base-nova/src/core/include/platform_thread.h index ea267c6780..1a7afbed0b 100644 --- a/repos/base-nova/src/core/include/platform_thread.h +++ b/repos/base-nova/src/core/include/platform_thread.h @@ -123,11 +123,6 @@ namespace Genode { */ void resume(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * Override thread state with 's' * diff --git a/repos/base-nova/src/core/pager.cc b/repos/base-nova/src/core/pager.cc index 429017ed75..7c608cc491 100644 --- a/repos/base-nova/src/core/pager.cc +++ b/repos/base-nova/src/core/pager.cc @@ -450,21 +450,6 @@ void Pager_object::wake_up() } -void Pager_object::client_cancel_blocking() -{ - uint8_t res = sm_ctrl(exc_pt_sel_client() + SM_SEL_EC, SEMAPHORE_UP); - if (res != NOVA_OK) - warning("canceling blocked client failed (thread sm)"); - - if (!_state.has_signal_sm()) - return; - - res = sm_ctrl(exc_pt_sel_client() + PT_SEL_STARTUP, SEMAPHORE_UP); - if (res != NOVA_OK) - warning("canceling blocked client failed (signal sm)"); -} - - uint8_t Pager_object::client_recall(bool get_state_and_block) { Mutex::Guard _state_lock_guard(_state_lock); diff --git a/repos/base-nova/src/core/platform_thread.cc b/repos/base-nova/src/core/platform_thread.cc index 2dae9dfada..fb0061afa2 100644 --- a/repos/base-nova/src/core/platform_thread.cc +++ b/repos/base-nova/src/core/platform_thread.cc @@ -278,14 +278,6 @@ void Platform_thread::state(Thread_state s) } -void Platform_thread::cancel_blocking() -{ - if (!_pager) return; - - _pager->client_cancel_blocking(); -} - - void Platform_thread::single_step(bool on) { if (!_pager) return; diff --git a/repos/base-nova/src/core/thread_start.cc b/repos/base-nova/src/core/thread_start.cc index 1818177e5f..a9aa95dfdf 100644 --- a/repos/base-nova/src/core/thread_start.cc +++ b/repos/base-nova/src/core/thread_start.cc @@ -150,12 +150,3 @@ void Thread::start() new (platform().core_mem_alloc()) Core_trace_source(Trace::sources(), *this); } - - -void Thread::cancel_blocking() -{ - using namespace Nova; - - if (sm_ctrl(native_thread().exc_pt_sel + SM_SEL_EC, SEMAPHORE_UP)) - nova_die(); -} diff --git a/repos/base-nova/src/lib/base/thread_start.cc b/repos/base-nova/src/lib/base/thread_start.cc index eb41a4179e..2a3acdbf13 100644 --- a/repos/base-nova/src/lib/base/thread_start.cc +++ b/repos/base-nova/src/lib/base/thread_start.cc @@ -198,12 +198,3 @@ void Thread::start() /* request creation of SC to let thread run*/ cpu_thread.resume(); } - - -void Thread::cancel_blocking() -{ - using namespace Nova; - - if (sm_ctrl(native_thread().exc_pt_sel + SM_SEL_EC, SEMAPHORE_UP)) - nova_die(); -} diff --git a/repos/base-okl4/src/core/include/platform_thread.h b/repos/base-okl4/src/core/include/platform_thread.h index 72a45c176e..8e54f1b032 100644 --- a/repos/base-okl4/src/core/include/platform_thread.h +++ b/repos/base-okl4/src/core/include/platform_thread.h @@ -99,11 +99,6 @@ namespace Genode { */ void resume(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * This thread is about to be bound * diff --git a/repos/base-okl4/src/core/platform_thread.cc b/repos/base-okl4/src/core/platform_thread.cc index 25b2d30aba..90e69e0aff 100644 --- a/repos/base-okl4/src/core/platform_thread.cc +++ b/repos/base-okl4/src/core/platform_thread.cc @@ -143,27 +143,6 @@ void Platform_thread::unbind() } -void Platform_thread::cancel_blocking() -{ - L4_Word_t dummy; - L4_ThreadId_t dummy_tid; - - /* - * For more details, please refer to the corresponding implementation in - * the 'base-pistachio' repository. - */ - - /* reset value for the thread's user-defined handle */ - enum { USER_DEFINED_HANDLE_ZERO = 0 }; - - L4_ExchangeRegisters(_l4_thread_id, - L4_ExReg_Resume | L4_ExReg_AbortOperation | L4_ExReg_user, - 0, 0, 0, USER_DEFINED_HANDLE_ZERO, L4_nilthread, - &dummy, &dummy, &dummy, &dummy, &dummy, - &dummy_tid); -} - - unsigned long Platform_thread::pager_object_badge() const { return native_thread_id().raw; diff --git a/repos/base-okl4/src/core/thread_start.cc b/repos/base-okl4/src/core/thread_start.cc index dd2ebbc65a..f3e03d1e5f 100644 --- a/repos/base-okl4/src/core/thread_start.cc +++ b/repos/base-okl4/src/core/thread_start.cc @@ -46,14 +46,6 @@ void Thread::start() } -void Thread::cancel_blocking() -{ - /* - * Within core, we never need to unblock threads - */ -} - - void Thread::_deinit_platform_thread() { /* destruct platform thread */ diff --git a/repos/base-pistachio/src/core/include/platform_thread.h b/repos/base-pistachio/src/core/include/platform_thread.h index fcfcaa2844..47dd48bd7f 100644 --- a/repos/base-pistachio/src/core/include/platform_thread.h +++ b/repos/base-pistachio/src/core/include/platform_thread.h @@ -115,11 +115,6 @@ namespace Genode { */ void resume(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * This thread is about to be bound * diff --git a/repos/base-pistachio/src/core/platform_thread.cc b/repos/base-pistachio/src/core/platform_thread.cc index 8f33a7d6c7..8e73f57a15 100644 --- a/repos/base-pistachio/src/core/platform_thread.cc +++ b/repos/base-pistachio/src/core/platform_thread.cc @@ -189,40 +189,6 @@ Thread_state Platform_thread::state() } -void Platform_thread::cancel_blocking() -{ - L4_Word_t dummy; - L4_ThreadId_t dummy_tid; - - /* - * XXX: This implementation is not safe because it only cancels - * a currently executed blocking operation but it has no - * effect when the thread is executing user code and going - * to block soon. To solve this issue, we would need signalling - * semantics, which means that we flag the thread to being - * canceled the next time it enters the kernel. - */ - - /* control flags for 'L4_ExchangeRegisters' */ - enum { - CANCEL_SEND = 1 << 2, - CANCEL_RECV = 1 << 1, - CANCEL_IPC = CANCEL_SEND | CANCEL_RECV, - USER_DEFINED_HANDLE = 1 << 6, - RESUME = 1 << 8, - }; - - /* reset value for the thread's user-defined handle */ - enum { USER_DEFINED_HANDLE_ZERO = 0 }; - - L4_ExchangeRegisters(_l4_thread_id, - CANCEL_IPC | RESUME | USER_DEFINED_HANDLE, - 0, 0, 0, USER_DEFINED_HANDLE_ZERO, L4_nilthread, - &dummy, &dummy, &dummy, &dummy, &dummy, - &dummy_tid); -} - - Platform_thread::~Platform_thread() { /* diff --git a/repos/base-pistachio/src/core/thread_start.cc b/repos/base-pistachio/src/core/thread_start.cc index 13ee042645..29ccc8d1f9 100644 --- a/repos/base-pistachio/src/core/thread_start.cc +++ b/repos/base-pistachio/src/core/thread_start.cc @@ -49,14 +49,6 @@ void Thread::start() } -void Thread::cancel_blocking() -{ - /* - * Within core, we never need to unblock threads - */ -} - - void Thread::_deinit_platform_thread() { /* destruct platform thread */ diff --git a/repos/base-sel4/src/core/include/platform_thread.h b/repos/base-sel4/src/core/include/platform_thread.h index e686d4164f..28bbc797f3 100644 --- a/repos/base-sel4/src/core/include/platform_thread.h +++ b/repos/base-sel4/src/core/include/platform_thread.h @@ -119,11 +119,6 @@ class Genode::Platform_thread : public List::Element */ void resume(); - /** - * Cancel currently blocking operation - */ - void cancel_blocking(); - /** * Override thread state with 's' * diff --git a/repos/base-sel4/src/core/platform_thread.cc b/repos/base-sel4/src/core/platform_thread.cc index b9cd77d15f..1226d5dfa7 100644 --- a/repos/base-sel4/src/core/platform_thread.cc +++ b/repos/base-sel4/src/core/platform_thread.cc @@ -205,12 +205,6 @@ void Platform_thread::state(Thread_state) } -void Platform_thread::cancel_blocking() -{ - seL4_Signal(_info.lock_sel.value()); -} - - bool Platform_thread::install_mapping(Mapping const &mapping) { return _pd->install_mapping(mapping, name()); diff --git a/repos/base-sel4/src/core/thread_start.cc b/repos/base-sel4/src/core/thread_start.cc index 570320be55..ba09822c7c 100644 --- a/repos/base-sel4/src/core/thread_start.cc +++ b/repos/base-sel4/src/core/thread_start.cc @@ -143,12 +143,6 @@ void Thread::start() } -void Thread::cancel_blocking() -{ - warning(__func__, " not implemented"); -} - - Native_utcb *Thread::utcb() { if (!_stack) diff --git a/repos/base/include/base/rpc_server.h b/repos/base/include/base/rpc_server.h index cc48bb4f8a..4e6707aedf 100644 --- a/repos/base/include/base/rpc_server.h +++ b/repos/base/include/base/rpc_server.h @@ -492,13 +492,6 @@ class Genode::Rpc_entrypoint : Thread, public Object_pool * This method is solely needed on Linux. */ bool is_myself() const; - - /** - * Required outside of core. E.g. launchpad needs it to forcefully kill - * a client which blocks on a session opening request where the service - * is not up yet. - */ - void cancel_blocking() { Thread::cancel_blocking(); } }; diff --git a/repos/base/include/base/thread.h b/repos/base/include/base/thread.h index 67e11baefd..25f66f3ef8 100644 --- a/repos/base/include/base/thread.h +++ b/repos/base/include/base/thread.h @@ -330,14 +330,6 @@ class Genode::Thread */ Thread_capability cap() const { return _thread_cap; } - /** - * Cancel currently blocking operation - * - * \deprecated - * \noapi - */ - void cancel_blocking(); - /** * Return kernel-specific thread meta data */ diff --git a/repos/base/include/cpu_thread/client.h b/repos/base/include/cpu_thread/client.h index f92287d864..c3f66c6c55 100644 --- a/repos/base/include/cpu_thread/client.h +++ b/repos/base/include/cpu_thread/client.h @@ -37,9 +37,6 @@ struct Genode::Cpu_thread_client : Rpc_client void resume() override { call(); } - void cancel_blocking() override { - call(); } - Thread_state state() override { return call(); } diff --git a/repos/base/include/cpu_thread/cpu_thread.h b/repos/base/include/cpu_thread/cpu_thread.h index 43c6a2e9f0..f6a589d1c2 100644 --- a/repos/base/include/cpu_thread/cpu_thread.h +++ b/repos/base/include/cpu_thread/cpu_thread.h @@ -55,14 +55,6 @@ struct Genode::Cpu_thread : Interface */ virtual void resume() = 0; - /** - * Cancel a currently blocking operation - * - * \deprecated - * \noapi - */ - virtual void cancel_blocking() = 0; - /** * Get the current thread state * @@ -144,7 +136,6 @@ struct Genode::Cpu_thread : Interface GENODE_RPC(Rpc_start, void, start, addr_t, addr_t); GENODE_RPC(Rpc_pause, void, pause); GENODE_RPC(Rpc_resume, void, resume); - GENODE_RPC(Rpc_cancel_blocking, void, cancel_blocking); GENODE_RPC_THROW(Rpc_get_state, Thread_state, state, GENODE_TYPE_LIST(State_access_failed)); GENODE_RPC_THROW(Rpc_set_state, void, state, @@ -158,7 +149,7 @@ struct Genode::Cpu_thread : Interface GENODE_RPC(Rpc_trace_policy, Dataspace_capability, trace_policy); GENODE_RPC_INTERFACE(Rpc_utcb, Rpc_start, Rpc_pause, Rpc_resume, - Rpc_cancel_blocking, Rpc_set_state, Rpc_get_state, + Rpc_set_state, Rpc_get_state, Rpc_exception_sigh, Rpc_single_step, Rpc_affinity, Rpc_trace_control_index, Rpc_trace_buffer, Rpc_trace_policy); diff --git a/repos/base/lib/symbols/ld b/repos/base/lib/symbols/ld index 9ca20d5819..8c85178f2e 100644 --- a/repos/base/lib/symbols/ld +++ b/repos/base/lib/symbols/ld @@ -295,7 +295,6 @@ _ZN6Genode6SignalD2Ev T _ZN6Genode6SignalaSERKS0_ T _ZN6Genode6Thread10stack_sizeEm T _ZN6Genode6Thread13native_threadEv T -_ZN6Genode6Thread15cancel_blockingEv T _ZN6Genode6Thread18stack_virtual_sizeEv T _ZN6Genode6Thread20free_secondary_stackEPv T _ZN6Genode6Thread21alloc_secondary_stackEPKcm T diff --git a/repos/base/src/core/cpu_thread_component.cc b/repos/base/src/core/cpu_thread_component.cc index bea6bc4a37..fdd21b198d 100644 --- a/repos/base/src/core/cpu_thread_component.cc +++ b/repos/base/src/core/cpu_thread_component.cc @@ -63,12 +63,6 @@ void Cpu_thread_component::resume() } -void Cpu_thread_component::cancel_blocking() -{ - _platform_thread.cancel_blocking(); -} - - Thread_state Cpu_thread_component::state() { return _platform_thread.state(); diff --git a/repos/base/src/core/include/cpu_thread_component.h b/repos/base/src/core/include/cpu_thread_component.h index 20a051003f..e1b9652a5e 100644 --- a/repos/base/src/core/include/cpu_thread_component.h +++ b/repos/base/src/core/include/cpu_thread_component.h @@ -224,7 +224,6 @@ class Genode::Cpu_thread_component : public Rpc_object, void pause() override; void resume() override; void single_step(bool) override; - void cancel_blocking() override; Thread_state state() override; void state(Thread_state const &) override; void exception_sigh(Signal_context_capability) override; diff --git a/repos/base/src/lib/base/thread_start.cc b/repos/base/src/lib/base/thread_start.cc index 63ccd88375..cdc4f1fe6a 100644 --- a/repos/base/src/lib/base/thread_start.cc +++ b/repos/base/src/lib/base/thread_start.cc @@ -80,9 +80,3 @@ void Thread::start() /* start execution at initial instruction pointer and stack pointer */ Cpu_thread_client(_thread_cap).start((addr_t)_thread_start, _stack->top()); } - - -void Thread::cancel_blocking() -{ - Cpu_thread_client(_thread_cap).cancel_blocking(); -} diff --git a/repos/gems/lib/symbols/cpu_sampler_platform b/repos/gems/lib/symbols/cpu_sampler_platform index d318ebd40c..64200dc0d1 100644 --- a/repos/gems/lib/symbols/cpu_sampler_platform +++ b/repos/gems/lib/symbols/cpu_sampler_platform @@ -32,9 +32,6 @@ _ZN11Cpu_sampler21Cpu_session_component19_cleanup_native_cpuEv T _ZN6Genode13Avl_node_baseC2Ev U _ZN6Genode14Rpc_entrypoint7_manageEPNS_15Rpc_object_baseE U _ZN6Genode14Rpc_entrypoint9_dissolveEPNS_15Rpc_object_baseE U -_ZN6Genode15Cancelable_lock4lockEv U -_ZN6Genode15Cancelable_lock6unlockEv U -_ZN6Genode15Cancelable_lockC2ENS0_5StateE U _ZN6Genode17Native_capability4_decEv U _ZN6Genode17Native_capability4_incEv U _ZN6Genode17Native_capabilityC1Ev U diff --git a/repos/gems/src/server/cpu_sampler/cpu_thread_component.cc b/repos/gems/src/server/cpu_sampler/cpu_thread_component.cc index 804026fb74..cfc82e4ba9 100644 --- a/repos/gems/src/server/cpu_sampler/cpu_thread_component.cc +++ b/repos/gems/src/server/cpu_sampler/cpu_thread_component.cc @@ -166,12 +166,6 @@ void Cpu_sampler::Cpu_thread_component::single_step(bool enable) } -void Cpu_sampler::Cpu_thread_component::cancel_blocking() -{ - _parent_cpu_thread.cancel_blocking(); -} - - Thread_state Cpu_sampler::Cpu_thread_component::state() { return _parent_cpu_thread.state(); diff --git a/repos/gems/src/server/cpu_sampler/cpu_thread_component.h b/repos/gems/src/server/cpu_sampler/cpu_thread_component.h index 112b7128f8..873bef97c6 100644 --- a/repos/gems/src/server/cpu_sampler/cpu_thread_component.h +++ b/repos/gems/src/server/cpu_sampler/cpu_thread_component.h @@ -84,7 +84,6 @@ class Cpu_sampler::Cpu_thread_component : public Rpc_object void pause() override; void resume() override; void single_step(bool) override; - void cancel_blocking() override; Thread_state state() override; void state(Thread_state const &) override; void exception_sigh(Signal_context_capability) override; diff --git a/repos/ports/lib/symbols/gdbserver_platform b/repos/ports/lib/symbols/gdbserver_platform index 75843442be..1ca7b4f66f 100644 --- a/repos/ports/lib/symbols/gdbserver_platform +++ b/repos/ports/lib/symbols/gdbserver_platform @@ -99,9 +99,6 @@ _ZN11Gdb_monitor21Cpu_session_component9thread_epEv U _ZN6Genode13Avl_node_baseC2Ev U _ZN6Genode14Rpc_entrypoint7_manageEPNS_15Rpc_object_baseE U _ZN6Genode14Rpc_entrypoint9_dissolveEPNS_15Rpc_object_baseE U -_ZN6Genode15Cancelable_lock4lockEv U -_ZN6Genode15Cancelable_lock6unlockEv U -_ZN6Genode15Cancelable_lockC2ENS0_5StateE U _ZN6Genode17Native_capability4_decEv U _ZN6Genode17Native_capability4_incEv U _ZN6Genode17Native_capabilityC1Ev U diff --git a/repos/ports/run/gdb_monitor.run b/repos/ports/run/gdb_monitor.run index bb0d6b28a6..1463ab5a41 100644 --- a/repos/ports/run/gdb_monitor.run +++ b/repos/ports/run/gdb_monitor.run @@ -292,8 +292,7 @@ if {![have_spec arm]} { send "bt\n" run_genode_until {\(gdb\)} 20 $gdb_id - if {![regexp {Genode::Cancelable_lock::lock} $output] || - ![regexp {Genode::Signal_receiver::block_for_signal} $output] || + if {![regexp {Genode::Signal_receiver::block_for_signal} $output] || ![regexp {Genode::Entrypoint::_wait_and_dispatch_one_io_signal} $output] || ![regexp {Libc::Kernel::run} $output] } { diff --git a/repos/ports/src/app/gdb_monitor/cpu_thread_component.cc b/repos/ports/src/app/gdb_monitor/cpu_thread_component.cc index 477d963cd6..5e378109e8 100644 --- a/repos/ports/src/app/gdb_monitor/cpu_thread_component.cc +++ b/repos/ports/src/app/gdb_monitor/cpu_thread_component.cc @@ -253,12 +253,6 @@ void Cpu_thread_component::single_step(bool enable) } -void Cpu_thread_component::cancel_blocking() -{ - _parent_cpu_thread.cancel_blocking(); -} - - void Cpu_thread_component::state(Thread_state const &state) { _parent_cpu_thread.state(state); diff --git a/repos/ports/src/app/gdb_monitor/cpu_thread_component.h b/repos/ports/src/app/gdb_monitor/cpu_thread_component.h index edf13c42d8..8a8b0c6380 100644 --- a/repos/ports/src/app/gdb_monitor/cpu_thread_component.h +++ b/repos/ports/src/app/gdb_monitor/cpu_thread_component.h @@ -131,7 +131,6 @@ class Gdb_monitor::Cpu_thread_component : public Rpc_object, void pause() override; void resume() override; void single_step(bool) override; - void cancel_blocking() override; Thread_state state() override; void state(Thread_state const &) override; void exception_sigh(Signal_context_capability) override;