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