diff --git a/main.cc b/main.cc index 973b948..b03a96f 100644 --- a/main.cc +++ b/main.cc @@ -127,10 +127,9 @@ extern "C" int main() { DBG << "Main CPU " << static_cast(LAPIC::getID()) << endl << flush; - prepareContext(&test1_stack[sizeof(test1_stack)-1], test1, (void(*)(void*)) &(test_func1)); - prepareContext(&test2_stack[sizeof(test2_stack)-1], test2, (void(*)(void*)) &(test_func2)); + test1_thread.go(); + - context_launch(&test1); //Application{}.action(); while (true){ diff --git a/thread/thread.cc b/thread/thread.cc index 7761f68..90146bb 100644 --- a/thread/thread.cc +++ b/thread/thread.cc @@ -1,6 +1,7 @@ // vim: set noet ts=4 sw=4: #include "thread.h" +#include "../arch/context.h" // Alias to simplify stuff typedef void (*kickoff_t)(void*); @@ -10,14 +11,17 @@ void Thread::kickoff(Thread* object) { } Thread::Thread(void* tos) { + prepareContext(tos, context, (void(*)(void*)) &(kickoff), this); } void Thread::resume(Thread* next) { - + context_switch(&next->context, &context); } void Thread::go() { - + context_launch(&context); } -void Thread::action() {} +void Thread::action() { + while(1); +}