检查内核栈使用情况
在开发过程中,为了检测爆栈或者需要监测内核栈使用情况的时候,可以使用以下代码计算当前的内核栈使用情况。
fn check_stack_usage(){
// 获取当前栈指针
let rsp = rsp() as usize;
// 由于栈是高地址往底地址生长,所以通过底地址对齐得到的值是free
let free = rsp & (KernelStack::ALIGN - 1);
let usage = KernelStack::SIZE - free;
kdebug!("current rsp {rsp:x} stack use {usage} free {free}");
}