Change to using internal format for kernel structures.
[virt-mem.git] / ps / virt_ps.ml
index 4c995d8..fe538a9 100644 (file)
@@ -21,13 +21,28 @@ open Printf
 
 open Virt_mem_gettext.Gettext
 open Virt_mem_utils
-open Virt_mem_mmap
+open Virt_mem_types
 
-let run debug images = ()
+open Kernel_task_struct
+
+let run debug { domname = domname; mem = mem } { tasks = tasks } =
+  let tasks = Option.get tasks in
+
+  (* Sort tasks by PID. *)
+  let cmp { task_pid = p1 } { task_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
+  ) tasks
 
 let summary = s_"list processes in virtual machine"
 let description = s_"\
 virt-ps prints a process listing for virtual machines running under
 libvirt."
 
-let () = Virt_mem.register "ps" summary description true run
+let () =
+  Virt_mem.register "ps" summary description ~needs_tasks:true ~run