|
|
|
@ -1,6 +1,7 @@
|
|
|
|
// vim: set noet ts=4 sw=4:
|
|
|
|
// vim: set noet ts=4 sw=4:
|
|
|
|
|
|
|
|
|
|
|
|
#include "thread.h"
|
|
|
|
#include "thread.h"
|
|
|
|
|
|
|
|
#include "../arch/context.h"
|
|
|
|
|
|
|
|
|
|
|
|
// Alias to simplify stuff
|
|
|
|
// Alias to simplify stuff
|
|
|
|
typedef void (*kickoff_t)(void*);
|
|
|
|
typedef void (*kickoff_t)(void*);
|
|
|
|
@ -10,14 +11,17 @@ void Thread::kickoff(Thread* object) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Thread::Thread(void* tos) {
|
|
|
|
Thread::Thread(void* tos) {
|
|
|
|
|
|
|
|
prepareContext(tos, context, (void(*)(void*)) &(kickoff), this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Thread::resume(Thread* next) {
|
|
|
|
void Thread::resume(Thread* next) {
|
|
|
|
|
|
|
|
context_switch(&next->context, &context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Thread::go() {
|
|
|
|
void Thread::go() {
|
|
|
|
|
|
|
|
context_launch(&context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Thread::action() {}
|
|
|
|
void Thread::action() {
|
|
|
|
|
|
|
|
while(1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|