[SMP] Cpu initialization cleanup
This commit is contained in:
@@ -7,9 +7,10 @@
|
||||
LIST(thread_t, ready_queue);
|
||||
|
||||
thread_t *scheduler_th;
|
||||
thread_t *last_thread = 0;
|
||||
#define get_last_thread() (last_thread)
|
||||
#define set_last_thread(new) (last_thread = (new))
|
||||
#define get_last_thread() (get_cpu()->last_thread)
|
||||
#define set_last_thread(new) (get_cpu()->last_thread = (new))
|
||||
|
||||
int scheduler_started = 0;
|
||||
|
||||
void scheduler_insert(thread_t *th)
|
||||
{
|
||||
@@ -66,7 +67,7 @@ void scheduler()
|
||||
switch_process(new->process);
|
||||
sse_restore(new->sse_registers);
|
||||
apic_timer(1000000);
|
||||
switch_thread(scheduler_th, new);
|
||||
switch_thread(get_cpu()->scheduler, new);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +76,7 @@ void schedule()
|
||||
// This function handles swithing to the next thread in the ready queue
|
||||
|
||||
thread_t *old = get_current_thread();
|
||||
if(old == scheduler_th)
|
||||
if(old == get_cpu()->scheduler)
|
||||
return;
|
||||
|
||||
if(old)
|
||||
@@ -84,11 +85,15 @@ void schedule()
|
||||
}
|
||||
|
||||
switch_process(0);
|
||||
switch_thread(old, scheduler_th);
|
||||
switch_thread(old, get_cpu()->scheduler);
|
||||
}
|
||||
|
||||
void scheduler_init()
|
||||
{
|
||||
LIST_HEAD_INIT(ready_queue);
|
||||
scheduler_th = new_thread(scheduler);
|
||||
if(!scheduler_started)
|
||||
{
|
||||
LIST_HEAD_INIT(ready_queue);
|
||||
scheduler_started = 1;
|
||||
}
|
||||
get_cpu()->scheduler = new_thread(scheduler);
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
#include <debug.h>
|
||||
#include <registers.h>
|
||||
|
||||
thread_t *current_thread = 0;
|
||||
|
||||
uint64_t tid = 1;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user