diff --git a/kernel/thread/thread.cc b/kernel/thread/thread.cc index b53c678..b9a56fb 100644 --- a/kernel/thread/thread.cc +++ b/kernel/thread/thread.cc @@ -20,6 +20,10 @@ void Thread::kickoff(uintptr_t param1, uintptr_t param2, uintptr_t param3) { thread->action(); } +void Thread::kickoffUsermode (Thread *object){ + (void) object; +} + Thread::Thread() : queue_link(nullptr), id(idCounter++), kill_flag(false) { void *tos = reinterpret_cast(reserved_stack_space + STACK_SIZE); prepareContext(tos, context, kickoff, reinterpret_cast(this), 0, diff --git a/kernel/thread/thread.h b/kernel/thread/thread.h index 8149670..8b3e465 100644 --- a/kernel/thread/thread.h +++ b/kernel/thread/thread.h @@ -35,6 +35,11 @@ class Thread { */ alignas(16) char reserved_stack_space[STACK_SIZE]; + struct{ + void* user; + void* isr; + } StackPointer; + protected: /*! \brief Context of the thread, used for saving and restoring the register * values when context switching. @@ -59,6 +64,8 @@ class Thread { */ static void kickoff(uintptr_t param1, uintptr_t param2, uintptr_t param3); + static void kickoffUsermode (Thread *object); + public: /*! \brief Unique thread id */ const size_t id;