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