perf: Use NMIs for sampling HW and VM TFs
[akaros.git] / kern / include / monitor.h
1 #pragma once
2 #ifndef ROS_KERNEL
3 # error "This is a ROS kernel header; user programs should not #include it"
4 #endif
6 // Activate the kernel monitor,
7 // optionally providing a trap frame indicating the current state
8 // (NULL if none).
9 void monitor(struct hw_trapframe *hw_tf);
10 void emit_monitor_backtrace(int type, void *tf);
12 // Functions implementing monitor commands.
13 int mon_help(int argc, char **argv, struct hw_trapframe *hw_tf);
14 int mon_kerninfo(int argc, char **argv, struct hw_trapframe *hw_tf);
15 int mon_backtrace(int argc, char **argv, struct hw_trapframe *hw_tf);
16 int mon_ps(int argc, char **argv, struct hw_trapframe *hw_tf);
17 int mon_reboot(int argc, char **argv, struct hw_trapframe *hw_tf);
18 int mon_showmapping(int argc, char **argv, struct hw_trapframe *hw_tf);
19 int mon_sm(int argc, char **argv, struct hw_trapframe *hw_tf);
20 int mon_cpuinfo(int argc, char **argv, struct hw_trapframe *hw_tf);
21 int mon_nanwan(int argc, char **argv, struct hw_trapframe *hw_tf);
22 int mon_bin_ls(int argc, char **argv, struct hw_trapframe *hw_tf);
23 int mon_bin_run(int argc, char **argv, struct hw_trapframe *hw_tf);
24 int mon_manager(int argc, char **argv, struct hw_trapframe *hw_tf);
25 int mon_procinfo(int argc, char **argv, struct hw_trapframe *hw_tf);
26 int mon_pip(int argc, char **argv, struct hw_trapframe *hw_tf);
27 int mon_kill(int argc, char **argv, struct hw_trapframe *hw_tf);
28 int mon_exit(int argc, char **argv, struct hw_trapframe *hw_tf);
29 int mon_kfunc(int argc, char **argv, struct hw_trapframe *hw_tf);
30 int mon_notify(int argc, char **argv, struct hw_trapframe *hw_tf);
31 int mon_measure(int argc, char **argv, struct hw_trapframe *hw_tf);
32 int mon_trace(int argc, char **argv, struct hw_trapframe *hw_tf);
33 int mon_monitor(int argc, char **argv, struct hw_trapframe *hw_tf);
34 int mon_fs(int argc, char **argv, struct hw_trapframe *hw_tf);
35 int mon_shell(int argc, char **argv, struct hw_trapframe *hw_tf);
36 int mon_alarm(int argc, char **argv, struct hw_trapframe *hw_tf);
37 int mon_msr(int argc, char **argv, struct hw_trapframe *hw_tf);
38 int mon_db(int argc, char **argv, struct hw_trapframe *hw_tf);
39 int mon_px(int argc, char **argv, struct hw_trapframe *hw_tf);
40 int mon_kpfret(int argc, char **argv, struct hw_trapframe *hw_tf);
41 int mon_ks(int argc, char **argv, struct hw_trapframe *hw_tf);
42 int mon_gfp(int argc, char **argv, struct hw_trapframe *hw_tf);
43 int mon_coreinfo(int argc, char **argv, struct hw_trapframe *hw_tf);