diff options
Diffstat (limited to 'src/mock.rs')
-rw-r--r-- | src/mock.rs | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/src/mock.rs b/src/mock.rs deleted file mode 100644 index fc6fcf1..0000000 --- a/src/mock.rs +++ /dev/null @@ -1,65 +0,0 @@ -use iocuddle::*; -use rand::Rng; -pub mod perf; - -pub trait KernelModule { - fn start_trace(&mut self, _pid: u64) {} - fn stop_trace(&mut self, _pid: u64) {} - fn read_consumption(&mut self, pid: u64) -> u64; -} - -#[derive(Default)] -pub struct MockModule; - -impl KernelModule for MockModule { - fn start_trace(&mut self, pid: u64) { - // println!("starting trace of {pid}"); - } - - fn stop_trace(&mut self, pid: u64) { - // println!("stopping trace of {pid}"); - } - - fn read_consumption(&mut self, _pid: u64) -> u64 { - // rand::rng().random() - 14 - } -} - -#[derive(Debug)] -pub struct KernelDriver { - file: std::fs::File, -} - -impl Default for KernelDriver { - fn default() -> Self { - KernelDriver::new("/dev/rust-pow").unwrap() - } -} -impl KernelDriver { - fn new(path: impl AsRef<std::path::Path>) -> Result<Self, std::io::Error> { - let file = std::fs::File::open(path)?; - Ok(Self { file }) - } -} - -const PERF_MON: Group = Group::new(b'|'); -const START_TRACE: Ioctl<Write, &u64> = unsafe { PERF_MON.write(0x80) }; -const STOP_TRACE: Ioctl<Write, &u64> = unsafe { PERF_MON.write(0x81) }; -const READ_POWER: Ioctl<WriteRead, &u64> = unsafe { PERF_MON.write_read(0x82) }; - -impl KernelModule for KernelDriver { - fn start_trace(&mut self, pid: u64) { - START_TRACE.ioctl(&mut self.file, &pid).unwrap(); - } - - fn stop_trace(&mut self, pid: u64) { - STOP_TRACE.ioctl(&mut self.file, &pid).unwrap(); - } - - fn read_consumption(&mut self, pid: u64) -> u64 { - let mut arg = pid; - READ_POWER.ioctl(&mut self.file, &mut arg).unwrap(); - arg - } -} |