strat9_kernel/shell/commands/sys/
frame_meta.rs1use crate::{memory, shell::ShellError, shell_println};
4use alloc::string::String;
5use x86_64::PhysAddr;
6
7pub fn cmd_frame_meta(args: &[String]) -> Result<(), ShellError> {
9 if args.len() < 2 {
10 shell_println!("Usage: frame-meta <phys_hex>");
11 return Ok(());
12 }
13
14 let raw = args[1].as_str();
15 let hex = raw
16 .strip_prefix("0x")
17 .or_else(|| raw.strip_prefix("0X"))
18 .unwrap_or(raw);
19 let addr = u64::from_str_radix(hex, 16).map_err(|_| ShellError::InvalidArguments)?;
20
21 let (gen, guard, vtab) = memory::frame_meta_debug_snapshot(PhysAddr::new(addr));
22 shell_println!(
23 "frame phys={:#x} generation={} guard={:#x} vtable_bits={:#x}",
24 addr,
25 gen,
26 guard,
27 vtab
28 );
29 Ok(())
30}