X-Git-Url: http://git.annexia.org/?p=virt-mem.git;a=blobdiff_plain;f=ps%2Fvirt_ps.ml;fp=ps%2Fvirt_ps.ml;h=07e5e76bba4b9fb37abf2dccd100077a7adce182;hp=ccdd972b7c751c013a7ee1a04c9b0958e52a1b6e;hb=fea04ba6838a7fb1f7f6df9ea5b9603603205f3d;hpb=f5d8613b2c636b0628336de8379e30f7db6c4b23 diff --git a/ps/virt_ps.ml b/ps/virt_ps.ml index ccdd972..07e5e76 100644 --- a/ps/virt_ps.ml +++ b/ps/virt_ps.ml @@ -23,25 +23,28 @@ open Virt_mem_gettext.Gettext 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 run debug _ = () let summary = s_"list processes in virtual machine" let description = s_"\