39 lines
No EOL
809 B
Rust
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
|
|
} |