sched: add support for scheduling functions to be executed later
This commit is contained in:
@@ -9,6 +9,7 @@ extern kern_status_t setup_kernel_task(void);
|
||||
extern kern_status_t setup_idle_task(void);
|
||||
extern kern_status_t task_object_type_init(void);
|
||||
extern kern_status_t thread_object_type_init(void);
|
||||
extern kern_status_t global_wq_init(void);
|
||||
|
||||
static cycles_t __default_quantum = 0;
|
||||
|
||||
@@ -45,6 +46,8 @@ kern_status_t sched_init(void)
|
||||
this_cpu->c_rq.rq_idle = idle_thread;
|
||||
put_cpu(this_cpu);
|
||||
|
||||
global_wq_init();
|
||||
|
||||
start_charge_period();
|
||||
|
||||
return status;
|
||||
@@ -165,7 +168,11 @@ struct runqueue *select_rq_for_thread(struct thread *thr)
|
||||
|
||||
void schedule_thread_on_cpu(struct thread *thr)
|
||||
{
|
||||
struct runqueue *rq = select_rq_for_thread(thr);
|
||||
struct runqueue *rq = thr->tr_rq;
|
||||
if (!rq) {
|
||||
rq = select_rq_for_thread(thr);
|
||||
}
|
||||
|
||||
if (rq) {
|
||||
unsigned long flags;
|
||||
rq_lock(rq, &flags);
|
||||
|
||||
Reference in New Issue
Block a user