diff --git a/src/kernel/objects/thread.cpp b/src/kernel/objects/thread.cpp index a31266a..0a5c1d4 100644 --- a/src/kernel/objects/thread.cpp +++ b/src/kernel/objects/thread.cpp @@ -37,6 +37,11 @@ thread::thread(process &parent, uint8_t pri, uintptr_t rsp0) : set_state(state::ready); } +thread::~thread() +{ + kutil::kfree(reinterpret_cast(m_tcb.kernel_stack)); +} + thread * thread::from_tcb(TCB *tcb) { diff --git a/src/kernel/objects/thread.h b/src/kernel/objects/thread.h index 201527f..b2b909c 100644 --- a/src/kernel/objects/thread.h +++ b/src/kernel/objects/thread.h @@ -48,6 +48,9 @@ public: /// Get the pointer to the thread object containing this TCB static thread * from_tcb(TCB *tcb); + /// Destructor + virtual ~thread(); + /// Get the `ready` state of the thread. /// \returns True if the thread is ready to execute. inline bool ready() const { return has_state(state::ready); }