From a596fa56a6f7bb1e3983ecc46d6f0a1b0bb1ff0f Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Tue, 17 Sep 2013 11:13:15 +0200 Subject: [PATCH] hw: destruct scheduling contexts ref #589 --- base-hw/src/core/kernel/scheduler.h | 7 +++++++ base-hw/src/core/kernel/thread.h | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/base-hw/src/core/kernel/scheduler.h b/base-hw/src/core/kernel/scheduler.h index 0547d36070..749f95cb20 100644 --- a/base-hw/src/core/kernel/scheduler.h +++ b/base-hw/src/core/kernel/scheduler.h @@ -138,6 +138,13 @@ class Kernel::Double_list::Item * Constructor */ Item() : _next(0), _prev(0), _list(0) { } + + + /*************** + ** Accessors ** + ***************/ + + Double_list * list() { return _list; } }; template diff --git a/base-hw/src/core/kernel/thread.h b/base-hw/src/core/kernel/thread.h index daa5a7208f..d0d564d2d7 100644 --- a/base-hw/src/core/kernel/thread.h +++ b/base-hw/src/core/kernel/thread.h @@ -72,6 +72,14 @@ class Kernel::Execution_context : public Cpu_scheduler::Item * Continue execution */ virtual void proceed() = 0; + + /** + * Destructor + */ + virtual ~Execution_context() + { + if (list()) { cpu_scheduler()->remove(this); } + } }; class Kernel::Thread