all: split reusable components into workspace crates
This commit is contained in:
parent
2a079ed800
commit
657e7ce2f7
225 changed files with 7422 additions and 17602 deletions
|
|
@ -1,40 +0,0 @@
|
|||
use {
|
||||
crate::{compositor::config_dir, config::have_config_so},
|
||||
c::sched_setscheduler,
|
||||
std::{
|
||||
env, mem,
|
||||
sync::atomic::{AtomicBool, Ordering::Relaxed},
|
||||
},
|
||||
uapi::c::{self, SCHED_RESET_ON_FORK, SCHED_RR, sched_param},
|
||||
};
|
||||
|
||||
static DID_ELEVATE_SCHEDULER: AtomicBool = AtomicBool::new(false);
|
||||
|
||||
pub const JAY_NO_REALTIME: &str = "JAY_NO_REALTIME";
|
||||
|
||||
pub fn elevate_scheduler() {
|
||||
if env::var(JAY_NO_REALTIME).as_deref().unwrap_or_default() == "1" {
|
||||
return;
|
||||
}
|
||||
if have_config_so(config_dir().as_deref()) && dont_allow_realtime_config_so() {
|
||||
return;
|
||||
}
|
||||
let mut param = unsafe { mem::zeroed::<sched_param>() };
|
||||
param.sched_priority = 1;
|
||||
let res = unsafe { sched_setscheduler(0, SCHED_RR | SCHED_RESET_ON_FORK, ¶m) };
|
||||
if res == 0 {
|
||||
DID_ELEVATE_SCHEDULER.store(true, Relaxed);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn did_elevate_scheduler() -> bool {
|
||||
DID_ELEVATE_SCHEDULER.load(Relaxed)
|
||||
}
|
||||
|
||||
fn dont_allow_realtime_config_so() -> bool {
|
||||
option_env!(jay_allow_realtime_config_so!()).unwrap_or_default() != "1"
|
||||
}
|
||||
|
||||
pub fn dont_allow_config_so() -> bool {
|
||||
did_elevate_scheduler() && dont_allow_realtime_config_so()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue