virt-ps working again.
[virt-mem.git] / ps / virt_ps.ml
index ccdd972..07e5e76 100644 (file)
@@ -23,25 +23,28 @@ open Virt_mem_gettext.Gettext
 open Virt_mem_utils
 open Virt_mem_types
 
 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. *)
 
   (* 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 (
   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
   ) tasks
-*)
-
-let run debug _ = ()
 
 let summary = s_"list processes in virtual machine"
 let description = s_"\
 
 let summary = s_"list processes in virtual machine"
 let description = s_"\