From 367e20fa0c6f15e60d943cf222d41414fffd2318 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Fri, 21 Jan 2022 13:01:58 -0700 Subject: Added scheduling logic --- src/globals.c | 1 + src/sys/schedule.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) (limited to 'src') diff --git a/src/globals.c b/src/globals.c index 99aa48f..1313bd9 100644 --- a/src/globals.c +++ b/src/globals.c @@ -19,6 +19,7 @@ __attribute__((section(".bss"))) unsigned long stimel; __attribute__((section(".bss"))) unsigned long stimeh; __attribute__((section(".bss"))) struct Drawer g_Drawer; __attribute__((section(".bss"))) struct Scheduler scheduler; +__attribute__((section(".bss"))) struct Thread usrloopthread; __attribute__((section(".bss"))) unsigned int gwidth; __attribute__((section(".bss"))) unsigned int gheight; __attribute__((section(".bss"))) unsigned int gpitch; diff --git a/src/sys/schedule.c b/src/sys/schedule.c index 0dc89e9..3aca0ff 100644 --- a/src/sys/schedule.c +++ b/src/sys/schedule.c @@ -1,5 +1,22 @@ +#include +#include + void init_scheduler(void) { // Set rthread to usrloopthread - an infinitely running thread so that the pointer will never be null + usrloopthread.pc = (void*)loop; + usrloopthread.sp = 0x0FCC; + usrloopthread.sp_base = 0x1000; + usrloopthread.mptr = 0; + usrloopthread.pid = -1; + usrloopthread.priority = -1; + usrloopthread.status = THREAD_READY; + scheduler.rthread = &usrloopthread; // Initialize Rotating Buffers } + +void loop(void) +{ + while(1) + asm volatile ("wfe"); +} -- cgit v1.2.1