sched: add support for scheduling functions to be executed later

This commit is contained in:
2023-06-14 17:35:10 +01:00
parent cdb9fef36c
commit 4a1c6cae69
7 changed files with 217 additions and 1 deletions

View File

@@ -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);