formatting

This commit is contained in:
jacob 2025-07-09 14:43:51 -05:00
parent 4dab156b5f
commit e878a2c96f

View File

@ -403,7 +403,7 @@ void sys_wake_all(void *addr)
struct arena_temp scratch = scratch_begin_no_conflict(); struct arena_temp scratch = scratch_begin_no_conflict();
{ {
/* Separate waiters by queue kind */ /* Separate waiters by queue kind */
i32 queue_counts[NUM_JOB_QUEUE_KINDS] = ZI; i32 queue_waiter_counts[NUM_JOB_QUEUE_KINDS] = ZI;
struct fiber **queue_waiter_arrays[NUM_JOB_QUEUE_KINDS] = ZI; struct fiber **queue_waiter_arrays[NUM_JOB_QUEUE_KINDS] = ZI;
for (i32 i = 0; i < (i32)countof(queue_waiter_arrays); ++i) { for (i32 i = 0; i < (i32)countof(queue_waiter_arrays); ++i) {
/* NOTE: Each array is conservatively sized as the number of all waiters in the list */ /* NOTE: Each array is conservatively sized as the number of all waiters in the list */
@ -411,20 +411,20 @@ void sys_wake_all(void *addr)
} }
for (struct fiber *waiter = fiber_from_id(wait_list->first_waiter); waiter; waiter = fiber_from_id(waiter->next_addr_waiter)) { for (struct fiber *waiter = fiber_from_id(wait_list->first_waiter); waiter; waiter = fiber_from_id(waiter->next_addr_waiter)) {
enum job_queue_kind queue_kind = job_queue_kind_from_priority(waiter->job_priority); enum job_queue_kind queue_kind = job_queue_kind_from_priority(waiter->job_priority);
i32 index = queue_counts[queue_kind]++; i32 index = queue_waiter_counts[queue_kind]++;
struct fiber **array = queue_waiter_arrays[queue_kind]; struct fiber **array = queue_waiter_arrays[queue_kind];
array[index] = waiter; array[index] = waiter;
} }
/* Push jobs */ /* Push jobs */
for (i32 queue_kind = 0; queue_kind < (i32)countof(queue_counts); ++queue_kind) { for (i32 queue_kind = 0; queue_kind < (i32)countof(queue_waiter_counts); ++queue_kind) {
i32 num_jobs = queue_counts[queue_kind]; i32 queue_num_waiters = queue_waiter_counts[queue_kind];
if (num_jobs > 0) { if (queue_num_waiters > 0) {
struct job_queue *queue = &G.job_queues[queue_kind]; struct job_queue *queue = &G.job_queues[queue_kind];
struct fiber **queue_waiters = queue_waiter_arrays[queue_kind]; struct fiber **queue_waiters = queue_waiter_arrays[queue_kind];
while (atomic_i32_fetch_test_set(&queue->lock, 0, 1) != 0) ix_pause(); while (atomic_i32_fetch_test_set(&queue->lock, 0, 1) != 0) ix_pause();
{ {
/* TODO: More efficient batch job list allocation */ /* TODO: More efficient batch job list allocation */
for (i32 i = 0; i < num_jobs; ++i) { for (i32 i = 0; i < queue_num_waiters; ++i) {
struct fiber *waiter = queue_waiters[i]; struct fiber *waiter = queue_waiters[i];
struct job_info *info = NULL; struct job_info *info = NULL;
if (queue->first_free) { if (queue->first_free) {