open Virt_mem_utils
open Virt_mem_types
-open Kernel_task_struct
+open Kernel
-let run debug { domname = domname; mem = mem } { tasks = tasks } =
- let tasks = Option.get tasks in
+let run debug { addrmap = addrmap } =
+ (* Grab all the task_struct structures. *)
+ let tasks = AddrMap.fold (
+ fun _ v tasks ->
+ match v with
+ | _, Some (_, _, Task_struct task) -> task :: tasks
+ | _ -> tasks
+ ) addrmap [] in
(* Sort tasks by PID. *)
- let cmp { task_pid = p1 } { task_pid = p2 } = compare p1 p2 in
+ let cmp { task_struct_pid = p1 } { task_struct_pid = p2 } = compare p1 p2 in
let tasks = List.sort cmp tasks in
printf " PID STAT COMMAND\n";
List.iter (
- fun task ->
- printf "%5Ld %s\n" task.task_pid task.task_comm
+ fun { task_struct_pid = pid; task_struct_comm = comm } ->
+ let comm = truncate_c_string comm in
+ printf "%5Ld %s\n" pid comm
) tasks
let summary = s_"list processes in virtual machine"