remove kickoffusermode
This commit is contained in:
@@ -86,7 +86,7 @@ extern "C" int main() {
|
|||||||
// DBG << "module at: " << hex << p << endl;
|
// DBG << "module at: " << hex << p << endl;
|
||||||
// g.vault().scheduler.ready(new Thread(false, p));
|
// g.vault().scheduler.ready(new Thread(false, p));
|
||||||
//}
|
//}
|
||||||
g.vault().scheduler.ready(new Thread(false, (void*)((uintptr_t)Multiboot::getModule(0)->getStartAddress()+4096)));
|
g.vault().scheduler.ready(new Thread(false, (void*)0x4001000));
|
||||||
|
|
||||||
//for (uint32_t i = 0; i < NUM_APPS; ++i) {
|
//for (uint32_t i = 0; i < NUM_APPS; ++i) {
|
||||||
// g.vault().scheduler.ready(&(apps[i]));
|
// g.vault().scheduler.ready(&(apps[i]));
|
||||||
|
|||||||
@@ -19,20 +19,12 @@ void Thread::kickoff(uintptr_t param1, uintptr_t param2, uintptr_t param3) {
|
|||||||
Guard::leave();
|
Guard::leave();
|
||||||
|
|
||||||
if(!thread->isKernel)
|
if(!thread->isKernel)
|
||||||
Core::Ring::switchToUsermode(thread->StackPointer.user, reinterpret_cast<void*>(kickoffUsermode), thread);
|
Core::Ring::switchToUsermode(thread->StackPointer.user, thread->start, 0);
|
||||||
else
|
else
|
||||||
if(thread->start == nullptr)
|
if(thread->start == nullptr)
|
||||||
thread->action();
|
thread->action();
|
||||||
else
|
else
|
||||||
((void(*)())thread->start)();
|
((void(*)())thread->start)();
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Thread::kickoffUsermode (Thread *object){
|
|
||||||
if(object->start == nullptr)
|
|
||||||
object->action();
|
|
||||||
else
|
|
||||||
((void(*)())object->start)();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern four_lvl_paging_t paging_tree;
|
extern four_lvl_paging_t paging_tree;
|
||||||
|
|||||||
Reference in New Issue
Block a user