rt/rust/examples/float.rs

30 lines
549 B
Rust

#![no_main]
use core::sync::atomic::Ordering;
use atomic_float::AtomicF32;
static V: AtomicF32 = AtomicF32::new(0.0);
fn f(arg: u32) {
rt::task::drop_privilege();
let mut x = 0.0f32;
let a = arg as f32;
loop {
x += a;
V.store(x, Ordering::Relaxed);
rt::task::yield_();
}
}
fn timeout() {
rt::task::drop_privilege();
rt::task::sleep(100);
rt::trap();
}
rt::task!(f(1), 2 * rt::task::STACK_MIN, 1);
rt::task!(f(2), 2 * rt::task::STACK_MIN, 1);
rt::task!(timeout, rt::task::STACK_MIN, 0);