make scheduler timeslice configurable
This commit is contained in:
+27
-2
@@ -108,6 +108,14 @@ impl AppConfig for Config {
|
||||
.help("Cycle time (us, append \"s\" or \"ms\" for coarser time)")
|
||||
.takes_value(true),
|
||||
)
|
||||
.arg(
|
||||
clap::Arg::with_name("sched")
|
||||
.long("sched")
|
||||
.short("S")
|
||||
.value_name("MILLIS")
|
||||
.help("Scheduler switch time (ms, append \"u\", \"s\" or \"ms\" for other unit)")
|
||||
.takes_value(true),
|
||||
)
|
||||
}
|
||||
|
||||
fn configure(mut self, clap: &ArgMatches) -> anyhow::Result<Self> {
|
||||
@@ -126,11 +134,28 @@ impl AppConfig for Config {
|
||||
} else if t.ends_with("s") {
|
||||
(&t[..(t.len()-1)], 1000_000)
|
||||
} else {
|
||||
(t, 1)
|
||||
(t, 1) // us default
|
||||
};
|
||||
|
||||
self.cycle_time = Duration::from_micros(t.parse::<u64>().expect("parse -C value") * mul);
|
||||
println!("ct = {:?}", self.cycle_time);
|
||||
}
|
||||
|
||||
if let Some(t) = clap.value_of("sched") {
|
||||
let (t, mul) = if t.ends_with("us") {
|
||||
(&t[..(t.len()-2)], 1)
|
||||
} else if t.ends_with("ms") {
|
||||
(&t[..(t.len()-2)], 1000)
|
||||
} else if t.ends_with("m") {
|
||||
(&t[..(t.len()-1)], 1000)
|
||||
} else if t.ends_with("u") {
|
||||
(&t[..(t.len()-1)], 1)
|
||||
} else if t.ends_with("s") {
|
||||
(&t[..(t.len()-1)], 1000_000)
|
||||
} else {
|
||||
(t, 1000) // ms default
|
||||
};
|
||||
|
||||
self.switch_time = Duration::from_micros(t.parse::<u64>().expect("parse -S value") * mul);
|
||||
}
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user