From 07a0c3c72798b4794e2dd92268f410ea2d709d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= <mkroening@posteo.net> Date: Wed, 15 Mar 2023 17:02:43 +0100 Subject: [PATCH] Adapt newlib to scheduler sharing rework --- src/scheduler/mod.rs | 12 ++++++++---- src/scheduler/task.rs | 24 ------------------------ 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/src/scheduler/mod.rs b/src/scheduler/mod.rs index bd6902675..a86d085a1 100644 --- a/src/scheduler/mod.rs +++ b/src/scheduler/mod.rs @@ -223,12 +223,14 @@ impl PerCoreScheduler { // Clone the current task. let tid = get_tid(); - let clone_task = Rc::new(RefCell::new(Task::new_like( + let clone_task = NewTask { tid, + func, + arg, + prio: current_task_borrowed.prio, core_id, - ¤t_task_borrowed, - ))); - clone_task.borrow_mut().create_stack_frame(func, arg); + stacks: TaskStacks::new(current_task_borrowed.stacks.get_user_stack_size()), + }; // Add it to the task lists. let wakeup = { @@ -250,11 +252,13 @@ impl PerCoreScheduler { input_locked.new_tasks.push_back(clone_task); true } else { + let clone_task = Rc::new(RefCell::new(Task::from(clone_task))); core_scheduler().ready_queue.push(clone_task); false } #[cfg(not(feature = "smp"))] if core_id == 0 { + let clone_task = Rc::new(RefCell::new(Task::from(clone_task))); core_scheduler().ready_queue.push(clone_task); false } else { diff --git a/src/scheduler/task.rs b/src/scheduler/task.rs index 651efc784..b12685496 100644 --- a/src/scheduler/task.rs +++ b/src/scheduler/task.rs @@ -487,30 +487,6 @@ impl Task { lwip_errno: 0, } } - - #[cfg(feature = "newlib")] - pub fn new_like(tid: TaskId, core_id: CoreId, task: &Task) -> Task { - debug!( - "Creating task {} on core {} like task {}", - tid, core_id, task.id - ); - - Task { - id: tid, - status: TaskStatus::Ready, - prio: task.prio, - last_stack_pointer: VirtAddr(0u64), - user_stack_pointer: VirtAddr(0u64), - last_fpu_state: arch::processor::FPUState::new(), - core_id, - stacks: TaskStacks::new(task.stacks.get_user_stack_size()), - next: None, - prev: None, - tls: None, - #[cfg(feature = "newlib")] - lwip_errno: 0, - } - } } /*impl Drop for Task { -- GitLab