295: docs: do not use Instant::now in #[init] r=korken89 a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
This commit is contained in:
bors[bot] 2020-01-24 15:14:58 +00:00 committed by GitHub
commit 03ac76a0a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 0 deletions

View file

@ -20,6 +20,7 @@ const APP: () = {
cx.core.DWT.enable_cycle_counter(); cx.core.DWT.enable_cycle_counter();
// semantically, the monotonic timer is frozen at time "zero" during `init` // semantically, the monotonic timer is frozen at time "zero" during `init`
// NOTE do *not* call `Instant::now` in this context; it will return a nonsense value
let now = cx.start; // the start time of the system let now = cx.start; // the start time of the system
hprintln!("init @ {:?}", now).unwrap(); hprintln!("init @ {:?}", now).unwrap();

View file

@ -30,6 +30,10 @@ pub struct Instant {
impl Instant { impl Instant {
/// Returns an instant corresponding to "now" /// Returns an instant corresponding to "now"
///
/// *HEADS UP* this function can, and will, return nonsensical values if called within `init`.
/// Only use it in `idle` and tasks. In `init`, use the `init::Context.start` field, or the
/// `CYCCNT::zero` function, instead of this function
pub fn now() -> Self { pub fn now() -> Self {
Instant { Instant {
inner: DWT::get_cycle_count() as i32, inner: DWT::get_cycle_count() as i32,