rcore-tutorial/user/src/bin/test3_stride2.rs
2021-11-19 19:07:59 +08:00

39 lines
No EOL
809 B
Rust

#![no_std]
#![no_main]
#[macro_use]
extern crate user_lib;
use user_lib::{get_time, set_priority};
fn spin_delay() {
let mut j = true;
for _ in 0..10 {
j = !j;
}
}
// to get enough accuracy, MAX_TIME (the running time of each process) should > 1000 mseconds.
const MAX_TIME: isize = 1000;
fn count_during(prio: isize) -> isize {
let start_time = get_time();
let mut acc = 0;
set_priority(prio);
loop {
spin_delay();
acc += 1;
if acc % 400 == 0 {
let time = get_time() - start_time;
if time > MAX_TIME {
return acc;
}
}
}
}
#[no_mangle]
pub fn main() -> usize {
let prio = 7;
let count = count_during(prio);
println!("priority = {}, exitcode = {}", prio, count);
0
}