diff --git a/kernel-src/include/bitmap.h b/kernel-src/include/bitmap.h index 9af8d78e..8f93e6f9 100644 --- a/kernel-src/include/bitmap.h +++ b/kernel-src/include/bitmap.h @@ -10,7 +10,7 @@ typedef struct { int bitmap_init(bitmap_t *bitmap, size_t size); void bitmap_set(bitmap_t *bitmap, long idx, int v); -long bitmap_find_first_set(bitmap_t *bitmap, long start_offset); +long bitmap_find_first_set(bitmap_t *bitmap); #endif diff --git a/kernel-src/include/x86-64/arch/cpu.h b/kernel-src/include/x86-64/arch/cpu.h index 57adf5e8..1fbadd2d 100644 --- a/kernel-src/include/x86-64/arch/cpu.h +++ b/kernel-src/include/x86-64/arch/cpu.h @@ -55,7 +55,6 @@ typedef struct cpu_t { sched_run_queue_t idle_queue; spinlock_t sched_lock; - long calendar_ticks; timerentry_t calendar_tick_timer_entry; // architecture specific, does not need to be exposed diff --git a/kernel-src/lib/bitmap.c b/kernel-src/lib/bitmap.c index 58455f61..1de9b365 100644 --- a/kernel-src/lib/bitmap.c +++ b/kernel-src/lib/bitmap.c @@ -22,13 +22,12 @@ void bitmap_set(bitmap_t *bitmap, long idx, int v) { bitmap->data[idx / sizeof(*bitmap->data)] &= ~bit; } -// TODO fix start offset search -long bitmap_find_first_set(bitmap_t *bitmap, long start_offset) { +long bitmap_find_first_set(bitmap_t *bitmap) { size_t loop_size = ROUND_UP(bitmap->size, sizeof(*bitmap->data)) / sizeof(*bitmap->data); long offset = -1; - for (size_t i = start_offset; i < loop_size; ++i) { + for (size_t i = 0; i < loop_size; ++i) { if (bitmap->data[i] == 0) continue; diff --git a/kernel-src/sys/scheduler/queue.c b/kernel-src/sys/scheduler/queue.c index ee53dd8a..4ce983fa 100644 --- a/kernel-src/sys/scheduler/queue.c +++ b/kernel-src/sys/scheduler/queue.c @@ -32,7 +32,7 @@ static void insert_in_run_queue(sched_run_queue_t *run_queue, thread_t *thread) } static thread_t *pop_from_run_queue(sched_run_queue_t *run_queue) { - long idx = bitmap_find_first_set(&run_queue->thread_bitmap, 0); + long idx = bitmap_find_first_set(&run_queue->thread_bitmap); if (idx == -1) return NULL; diff --git a/kernel-src/sys/scheduler/scheduler.c b/kernel-src/sys/scheduler/scheduler.c index b7da9772..c78e06a1 100644 --- a/kernel-src/sys/scheduler/scheduler.c +++ b/kernel-src/sys/scheduler/scheduler.c @@ -363,7 +363,7 @@ void sched_ap_entry() { __assert(current_cpu()->reschedule_isr); timer_insert(current_cpu()->timer, ¤t_cpu()->schedtimerentry, reschedule_timer_dpc, NULL, QUANTUM_US, true); - timer_insert(current_cpu()->timer, ¤t_cpu()->calendar_tick_timer_entry, sched_calendar_tick, NULL, 1000, true); + timer_insert(current_cpu()->timer, ¤t_cpu()->calendar_tick_timer_entry, sched_calendar_tick, NULL, 10000, true); timer_resume(current_cpu()->timer); sched_stop_current_thread(); }