ksud: Add cli interface for nuke_ext4_sysfs

This commit is contained in:
weishu
2025-11-17 21:44:08 +08:00
committed by ShirkNeko
parent 1d1ce396d3
commit 94fa1e360a
3 changed files with 36 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ const KSU_IOCTL_GET_FEATURE: u32 = 0xc0004b0d; // _IOC(_IOC_READ|_IOC_WRITE, 'K'
const KSU_IOCTL_SET_FEATURE: u32 = 0x40004b0e; // _IOC(_IOC_WRITE, 'K', 14, 0)
const KSU_IOCTL_GET_WRAPPER_FD: u32 = 0x40004b0f; // _IOC(_IOC_WRITE, 'K', 15, 0)
const KSU_IOCTL_MANAGE_MARK: u32 = 0xc0004b10; // _IOC(_IOC_READ|_IOC_WRITE, 'K', 16, 0)
const KSU_IOCTL_NUKE_EXT4_SYSFS: u32 = 0xc0004b11; // _IOC(_IOC_READ|_IOC_WRITE, 'K', 17, 0)
#[repr(C)]
#[derive(Clone, Copy, Default)]
@@ -73,6 +74,12 @@ struct ManageMarkCmd {
result: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct NukeExt4SysfsCmd {
pub arg: u64,
}
// Mark operation constants
const KSU_MARK_GET: u32 = 1;
const KSU_MARK_MARK: u32 = 2;
@@ -294,3 +301,12 @@ pub fn mark_refresh() -> std::io::Result<()> {
ksuctl(KSU_IOCTL_MANAGE_MARK, &mut cmd as *mut _)?;
Ok(())
}
pub fn nuke_ext4_sysfs(mnt: &str) -> anyhow::Result<()> {
let c_mnt = std::ffi::CString::new(mnt)?;
let mut ioctl_cmd = NukeExt4SysfsCmd {
arg: c_mnt.as_ptr() as u64,
};
ksuctl(KSU_IOCTL_NUKE_EXT4_SYSFS, &mut ioctl_cmd as *mut _)?;
Ok(())
}