rt/rust/examples/float.rs

32 lines
606 B
Rust

use core::sync::atomic::Ordering;
use atomic_float::AtomicF32;
static V: AtomicF32 = AtomicF32::new(0.0);
fn f(arg: u32) {
rt::task::drop_privilege();
rt::task::enable_fp();
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::stop();
}
fn main() {
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, 2);
rt::start();
}