From d495a1745c83a8186bf1c6c531177887dd245436 Mon Sep 17 00:00:00 2001 From: Tianhao Wang Date: Thu, 6 Jun 2024 02:08:21 +0200 Subject: proc: basic infra for multithreading including task and scheduler wrapper, context swap assembly, and some notes... The lifetime of task is tricky, I'll fix it later Signed-off-by: Tianhao Wang --- src/proc/sched.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/proc/sched.rs (limited to 'src/proc/sched.rs') diff --git a/src/proc/sched.rs b/src/proc/sched.rs new file mode 100644 index 0000000..8e86c7f --- /dev/null +++ b/src/proc/sched.rs @@ -0,0 +1,17 @@ +use crate::proc::task::*; +use alloc::collections::linked_list::LinkedList; +// TODO the lifetime here is pretty much broken. Fix this later +pub struct Scheduler<'a> { + run_list: LinkedList<&'a Task>, +} + +impl<'a> Scheduler<'a> { + #[inline] + pub fn pop_front(&mut self) -> Option<&Task> { + self.run_list.pop_front() + } + #[inline] + pub fn push_back(&mut self, t: &'a Task) { + self.run_list.push_back(t); + } +} -- cgit v1.2.3-70-g09d2