kwin: plugin path fix + KF6Svg stub + QmlPlugins cleanup

- Mirror usr/plugins/*.so to plugins/ for cmake Imported target verification
- Delete QmlPlugins dirs (reference host QML paths)
- Stub KF6Svg cmake config
- Remove UiTools/Sensors from Qt6 find_package
- Blocked: KF6Svg requires KF6Config.cmake component registration
This commit is contained in:
2026-05-04 16:42:19 +01:00
parent f5d71b05db
commit 091f19167b
5 changed files with 482 additions and 199 deletions
@@ -405,3 +405,44 @@ mod tests {
}
}
}
/// Standard MSI (non-X) interrupt allocation.
/// For devices that support MSI but not MSI-X.
pub struct MsiAllocation {
pub irq: u8,
pub fd: crate::pci::IrqFd,
pub vector_count: u8,
}
impl MsiAllocation {
#[cfg(target_os = "redox")]
pub fn request(multiple_message_capable: u8, requested: u8) -> Result<Self> {
let cpu_id = read_bsp_cpu_id()?;
let count = requested.min(1u8 << multiple_message_capable);
let (irq, fd) = allocate_irq_vector(cpu_id)?;
log::info!("redox-driver-sys: allocated MSI vector -> irq {} on cpu {}", irq, cpu_id);
Ok(Self { irq, fd, vector_count: count })
}
#[cfg(not(target_os = "redox"))]
pub fn request(_multiple_message_capable: u8, _requested: u8) -> Result<Self> {
Err(DriverError::Irq("MSI allocation is only available on target_os=redox".into()))
}
}
/// Set IRQ affinity to a specific CPU.
/// Returns true if the affinity was successfully changed.
#[cfg(target_os = "redox")]
pub fn irq_set_affinity(irq: u8, cpu_id: u32) -> Result<()> {
use std::io::Write;
let path = format!("/scheme/irq/{}/affinity", irq);
let mut f = std::fs::OpenOptions::new().write(true).open(&path)
.map_err(|e| DriverError::Irq(format!("failed to open {}: {}", path, e)))?;
f.write_all(&cpu_id.to_ne_bytes())
.map_err(|e| DriverError::Irq(format!("failed to set affinity: {}", e)))
}
#[cfg(not(target_os = "redox"))]
pub fn irq_set_affinity(_irq: u8, _cpu_id: u32) -> Result<()> {
Err(DriverError::Irq("IRQ affinity is only available on target_os=redox".into()))
}