Allow inlining on time driver boundary

This commit is contained in:
Dániel Buga 2025-02-03 17:20:35 +01:00
parent c65b6db318
commit 37b180c61e
No known key found for this signature in database
2 changed files with 5 additions and 0 deletions

View File

@ -139,11 +139,13 @@ extern "Rust" {
} }
/// See [`Driver::now`] /// See [`Driver::now`]
#[inline]
pub fn now() -> u64 { pub fn now() -> u64 {
unsafe { _embassy_time_now() } unsafe { _embassy_time_now() }
} }
/// Schedule the given waker to be woken at `at`. /// Schedule the given waker to be woken at `at`.
#[inline]
pub fn schedule_wake(at: u64, waker: &Waker) { pub fn schedule_wake(at: u64, waker: &Waker) {
unsafe { _embassy_time_schedule_wake(at, waker) } unsafe { _embassy_time_schedule_wake(at, waker) }
} }
@ -157,11 +159,13 @@ macro_rules! time_driver_impl {
static $name: $t = $val; static $name: $t = $val;
#[no_mangle] #[no_mangle]
#[inline]
fn _embassy_time_now() -> u64 { fn _embassy_time_now() -> u64 {
<$t as $crate::Driver>::now(&$name) <$t as $crate::Driver>::now(&$name)
} }
#[no_mangle] #[no_mangle]
#[inline]
fn _embassy_time_schedule_wake(at: u64, waker: &core::task::Waker) { fn _embassy_time_schedule_wake(at: u64, waker: &core::task::Waker) {
<$t as $crate::Driver>::schedule_wake(&$name, at, waker); <$t as $crate::Driver>::schedule_wake(&$name, at, waker);
} }

View File

@ -17,6 +17,7 @@ impl Instant {
pub const MAX: Instant = Instant { ticks: u64::MAX }; pub const MAX: Instant = Instant { ticks: u64::MAX };
/// Returns an Instant representing the current time. /// Returns an Instant representing the current time.
#[inline]
pub fn now() -> Instant { pub fn now() -> Instant {
Instant { Instant {
ticks: embassy_time_driver::now(), ticks: embassy_time_driver::now(),