52 lines
1.5 KiB
Markdown
52 lines
1.5 KiB
Markdown
[](https://pages.pvv.ntnu.no/Projects/rtkit-client-rs/main/docs/rtkit_client_rs/)
|
|
|
|
# rtkit-client-rs
|
|
|
|
Small implementation of the rtkit dbus interface in rust.
|
|
|
|
This interface lets you request real-time scheduling for one or more threads.
|
|
|
|
## Usage
|
|
|
|
```rust
|
|
use nix::unistd::gettid;
|
|
use std::thread;
|
|
|
|
use rtkit_client_rs::{set_current_thread_nice_level, set_current_thread_priority};
|
|
|
|
fn main() {
|
|
println!("Main tid: {}", gettid());
|
|
thread::spawn(important_thread).join().unwrap();
|
|
}
|
|
|
|
fn important_thread() {
|
|
println!("Important thread tid: {}", gettid());
|
|
|
|
let requested_priority = 40;
|
|
let actual_priority = set_current_thread_priority(Some(requested_priority.try_into().unwrap()));
|
|
match actual_priority {
|
|
Ok(actual_priority) => println!(
|
|
"Requested priority: {requested_priority}, Actual priority: {}",
|
|
actual_priority.value(),
|
|
),
|
|
Err(err) => {
|
|
eprintln!("Failed to set priority: {}", err);
|
|
}
|
|
}
|
|
|
|
let requested_nice_level = -10;
|
|
let actual_nice_level = set_current_thread_nice_level(Some(
|
|
requested_nice_level.try_into().unwrap(),
|
|
));
|
|
match actual_nice_level {
|
|
Ok(actual_nice_level) => println!(
|
|
"Requested nice level: {requested_nice_level}, Actual nice level: {}",
|
|
actual_nice_level.value(),
|
|
),
|
|
Err(err) => {
|
|
eprintln!("Failed to set nice level: {}", err);
|
|
}
|
|
}
|
|
}
|
|
```
|