Skip to content
Snippets Groups Projects
Commit 07a0c3c7 authored by Martin Kröning's avatar Martin Kröning :crab:
Browse files

Adapt newlib to scheduler sharing rework

parent e9a51456
No related branches found
No related tags found
No related merge requests found
......@@ -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,
&current_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 {
......
......@@ -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 {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment