From 0b812480a8b81607802cdceb273b69680cd5082c Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Fri, 11 Mar 2022 13:41:49 -0800 Subject: Statically Allocated Scheduling --- include/sys/schedule.h | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/sys/schedule.h b/include/sys/schedule.h index 397ab2e..0205f54 100644 --- a/include/sys/schedule.h +++ b/include/sys/schedule.h @@ -30,24 +30,29 @@ struct Thread { unsigned short s_reserved; }; -struct ThreadRotBuffer { - unsigned int roffset; - unsigned int woffset; - struct Thread* queue[TQUEUE_MAX]; +struct ThreadEntry { + struct Thread* thread; + struct ThreadEntry* prev; + struct ThreadEntry* next; }; -struct ThreadQueues { - struct ThreadRotBuffer ready; - struct ThreadRotBuffer mwait; - struct ThreadRotBuffer swait; +struct ThreadEntryIterator { + struct ThreadEntry* entry; +}; + +struct ThreadQueue { + struct ThreadEntry entry[TQUEUE_MAX]; + struct ThreadEntryIterator read; + struct ThreadEntryIterator write; }; struct Scheduler { struct Thread* rthread; - struct ThreadQueues thread_queues[PRIORITIES]; + struct ThreadQueue ready[PRIORITIES]; + struct ThreadQueue mwait[PRIORITIES]; + struct ThreadQueue swait[PRIORITIES]; }; - void init_scheduler(void); void add_thread(void* pc, void* arg, unsigned char priority); void uart_scheduler(void); -- cgit v1.2.1