[kernel] Clean up threads' kernel stacks on exit

Add a destructor to threads in order to deallocate their kernel stacks.
This commit is contained in:
2020-07-30 19:32:31 -07:00
parent 3f137805bc
commit 4ffd4949ca
2 changed files with 8 additions and 0 deletions

View File

@@ -37,6 +37,11 @@ thread::thread(process &parent, uint8_t pri, uintptr_t rsp0) :
set_state(state::ready); set_state(state::ready);
} }
thread::~thread()
{
kutil::kfree(reinterpret_cast<void*>(m_tcb.kernel_stack));
}
thread * thread *
thread::from_tcb(TCB *tcb) thread::from_tcb(TCB *tcb)
{ {

View File

@@ -48,6 +48,9 @@ public:
/// Get the pointer to the thread object containing this TCB /// Get the pointer to the thread object containing this TCB
static thread * from_tcb(TCB *tcb); static thread * from_tcb(TCB *tcb);
/// Destructor
virtual ~thread();
/// Get the `ready` state of the thread. /// Get the `ready` state of the thread.
/// \returns True if the thread is ready to execute. /// \returns True if the thread is ready to execute.
inline bool ready() const { return has_state(state::ready); } inline bool ready() const { return has_state(state::ready); }