mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-12-19 14:25:18 +01:00
Even more cleanup
This commit is contained in:
parent
5c3cedf69a
commit
858320cbfc
6 changed files with 7 additions and 123 deletions
|
|
@ -15,65 +15,6 @@ pub use cortex_m::{
|
|||
peripheral::{scb::SystemHandler, DWT, NVIC, SCB, SYST},
|
||||
Peripherals,
|
||||
};
|
||||
pub use heapless::sorted_linked_list::SortedLinkedList;
|
||||
pub use heapless::spsc::Queue;
|
||||
pub use heapless::BinaryHeap;
|
||||
pub use heapless::Vec;
|
||||
pub use rtic_monotonic as monotonic;
|
||||
|
||||
pub mod idle_executor {
|
||||
use core::{
|
||||
future::Future,
|
||||
pin::Pin,
|
||||
task::{Context, Poll, RawWaker, RawWakerVTable, Waker},
|
||||
};
|
||||
|
||||
fn no_op(_: *const ()) {}
|
||||
fn no_op_clone(_: *const ()) -> RawWaker {
|
||||
noop_raw_waker()
|
||||
}
|
||||
|
||||
static IDLE_WAKER_TABLE: RawWakerVTable = RawWakerVTable::new(no_op_clone, no_op, no_op, no_op);
|
||||
|
||||
#[inline]
|
||||
fn noop_raw_waker() -> RawWaker {
|
||||
RawWaker::new(core::ptr::null(), &IDLE_WAKER_TABLE)
|
||||
}
|
||||
|
||||
pub struct IdleExecutor<T>
|
||||
where
|
||||
T: Future,
|
||||
{
|
||||
idle: T,
|
||||
}
|
||||
|
||||
impl<T> IdleExecutor<T>
|
||||
where
|
||||
T: Future,
|
||||
{
|
||||
#[inline(always)]
|
||||
pub fn new(idle: T) -> Self {
|
||||
Self { idle }
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn run(&mut self) -> ! {
|
||||
let w = unsafe { Waker::from_raw(noop_raw_waker()) };
|
||||
let mut ctxt = Context::from_waker(&w);
|
||||
loop {
|
||||
match unsafe { Pin::new_unchecked(&mut self.idle) }.poll(&mut ctxt) {
|
||||
Poll::Pending => {
|
||||
// All ok!
|
||||
}
|
||||
Poll::Ready(_) => {
|
||||
// The idle executor will never return
|
||||
unreachable!()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub mod executor {
|
||||
use core::{
|
||||
|
|
@ -143,10 +84,6 @@ pub mod executor {
|
|||
}
|
||||
}
|
||||
|
||||
pub type SCFQ<const N: usize> = Queue<u8, N>;
|
||||
pub type SCRQ<T, const N: usize> = Queue<(T, u8), N>;
|
||||
pub type ASYNCRQ<T, const N: usize> = Queue<T, N>;
|
||||
|
||||
/// Mask is used to store interrupt masks on systems without a BASEPRI register (M0, M0+, M23).
|
||||
/// It needs to be large enough to cover all the relevant interrupts in use.
|
||||
/// For M0/M0+ there are only 32 interrupts so we only need one u32 value.
|
||||
|
|
@ -290,13 +227,6 @@ where
|
|||
{
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn assert_monotonic<T>()
|
||||
where
|
||||
T: monotonic::Monotonic,
|
||||
{
|
||||
}
|
||||
|
||||
/// Lock implementation using BASEPRI and global Critical Section (CS)
|
||||
///
|
||||
/// # Safety
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue