Skip to content

Commit b68eb13

Browse files
committed
Add num tasks in scheduler
1 parent c8d25d9 commit b68eb13

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

src/cfs.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,8 @@ impl<T> BaseScheduler for CFScheduler<T> {
187187
false
188188
}
189189
}
190+
191+
fn num_tasks(&self) -> usize {
192+
self.ready_queue.len()
193+
}
190194
}

src/fifo.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,15 @@ impl<T> Deref for FifoTask<T> {
5656
/// It internally uses a linked list as the ready queue.
5757
pub struct FifoScheduler<T> {
5858
ready_queue: List<Arc<FifoTask<T>>>,
59+
num_tasks: usize,
5960
}
6061

6162
impl<T> FifoScheduler<T> {
6263
/// Creates a new empty [`FifoScheduler`].
6364
pub const fn new() -> Self {
6465
Self {
6566
ready_queue: List::new(),
67+
num_tasks: 0,
6668
}
6769
}
6870
/// get the name of scheduler
@@ -78,17 +80,21 @@ impl<T> BaseScheduler for FifoScheduler<T> {
7880

7981
fn add_task(&mut self, task: Self::SchedItem) {
8082
self.ready_queue.push_back(task);
83+
self.num_tasks += 1;
8184
}
8285

8386
fn remove_task(&mut self, task: &Self::SchedItem) -> Option<Self::SchedItem> {
87+
self.num_tasks -= 1;
8488
unsafe { self.ready_queue.remove(task) }
8589
}
8690

8791
fn pick_next_task(&mut self) -> Option<Self::SchedItem> {
92+
self.num_tasks -= 1;
8893
self.ready_queue.pop_front()
8994
}
9095

9196
fn put_prev_task(&mut self, prev: Self::SchedItem, _preempt: bool) {
97+
self.num_tasks += 1;
9298
self.ready_queue.push_back(prev);
9399
}
94100

@@ -99,4 +105,8 @@ impl<T> BaseScheduler for FifoScheduler<T> {
99105
fn set_priority(&mut self, _task: &Self::SchedItem, _prio: isize) -> bool {
100106
false
101107
}
108+
109+
fn num_tasks(&self) -> usize {
110+
self.num_tasks
111+
}
102112
}

src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ pub trait BaseScheduler {
6363
/// `current` is the current running task.
6464
fn task_tick(&mut self, current: &Self::SchedItem) -> bool;
6565

66-
/// set priority for a task
66+
/// Set priority for a task.
6767
fn set_priority(&mut self, task: &Self::SchedItem, prio: isize) -> bool;
68+
69+
/// Returns the number of tasks in the scheduler.
70+
fn num_tasks(&self) -> usize;
6871
}

src/round_robin.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,8 @@ impl<T, const S: usize> BaseScheduler for RRScheduler<T, S> {
110110
fn set_priority(&mut self, _task: &Self::SchedItem, _prio: isize) -> bool {
111111
false
112112
}
113+
114+
fn num_tasks(&self) -> usize {
115+
self.ready_queue.len()
116+
}
113117
}

0 commit comments

Comments
 (0)