Skip to content

Commit 6574d01

Browse files
committed
refactor(kernel): move expect_waitable_context to a new module named state
1 parent bc578d5 commit 6574d01

File tree

4 files changed

+17
-15
lines changed

4 files changed

+17
-15
lines changed

src/constance/src/kernel.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ mod error;
1212
mod event_group;
1313
mod hunk;
1414
mod interrupt;
15+
mod state;
1516
mod task;
1617
mod utils;
1718
mod wait;

src/constance/src/kernel/event_group.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use core::{
66
};
77

88
use super::{
9-
task, utils,
9+
state, task, utils,
1010
wait::{WaitPayload, WaitQueue},
1111
BadIdError, GetEventGroupError, Id, Kernel, Port, UpdateEventGroupError, WaitEventGroupError,
1212
};
@@ -141,7 +141,7 @@ impl<System: Kernel> EventGroup<System> {
141141
flags: EventGroupWaitFlags,
142142
) -> Result<EventGroupBits, WaitEventGroupError> {
143143
let lock = utils::lock_cpu::<System>()?;
144-
task::expect_waitable_context::<System>()?;
144+
state::expect_waitable_context::<System>()?;
145145
let event_group_cb = self.event_group_cb()?;
146146

147147
wait(event_group_cb, lock, bits, flags)

src/constance/src/kernel/state.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use super::{BadContextError, Kernel};
2+
3+
/// If the current context is not waitable, return `Err(BadContext)`.
4+
pub(super) fn expect_waitable_context<System: Kernel>() -> Result<(), BadContextError> {
5+
if System::is_interrupt_context() {
6+
Err(BadContextError::BadContext)
7+
} else {
8+
// TODO: priority boost
9+
Ok(())
10+
}
11+
}

src/constance/src/kernel/task.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use core::{cell::UnsafeCell, fmt, hash, marker::PhantomData, sync::atomic::Order
33
use num_traits::ToPrimitive;
44

55
use super::{
6-
hunk::Hunk, utils, wait, ActivateTaskError, BadContextError, BadIdError, ExitTaskError,
6+
hunk::Hunk, state, utils, wait, ActivateTaskError, BadIdError, ExitTaskError,
77
GetCurrentTaskError, Id, InterruptTaskError, Kernel, KernelCfg1, ParkError, Port, UnparkError,
88
UnparkExactError, WaitError,
99
};
@@ -584,7 +584,7 @@ pub(super) fn choose_next_running_task<System: Kernel>(
584584
pub(super) fn wait_until_woken_up<System: Kernel>(
585585
mut lock: utils::CpuLockGuardBorrowMut<'_, System>,
586586
) {
587-
debug_assert_eq!(expect_waitable_context::<System>(), Ok(()));
587+
debug_assert_eq!(state::expect_waitable_context::<System>(), Ok(()));
588588

589589
// Transition the current task to Waiting
590590
let running_task = System::state().running_task().unwrap();
@@ -614,7 +614,7 @@ pub(super) fn wait_until_woken_up<System: Kernel>(
614614
/// Implements [`Kernel::park`].
615615
pub(super) fn park_current_task<System: Kernel>() -> Result<(), ParkError> {
616616
let mut lock = utils::lock_cpu::<System>()?;
617-
expect_waitable_context::<System>()?;
617+
state::expect_waitable_context::<System>()?;
618618

619619
let running_task = System::state().running_task().unwrap();
620620

@@ -662,13 +662,3 @@ fn unpark_exact<System: Kernel>(
662662
}
663663
}
664664
}
665-
666-
/// If the current context is not waitable, return `Err(BadContext)`.
667-
pub(super) fn expect_waitable_context<System: Kernel>() -> Result<(), BadContextError> {
668-
if System::is_interrupt_context() {
669-
Err(BadContextError::BadContext)
670-
} else {
671-
// TODO: priority boost
672-
Ok(())
673-
}
674-
}

0 commit comments

Comments
 (0)