and no_init_file () = init_file := NoInitFile
and set_init_file filename = init_file := InitFile filename
and set_end_time time = end_time := Some ((!parse_date_time) time)
+ and display_version () =
+ printf "virt-top %s ocaml-libvirt %s\n"
+ Virt_top_version.version Libvirt_version.version;
+ exit 0
in
let argspec = Arg.align [
"-1", Arg.Unit set_pcpu_mode,
" " ^ s_ "Secure (\"kiosk\") mode";
"--script", Arg.Set script_mode,
" " ^ s_ "Run from a script (no user interface)";
+ "--version", Arg.Unit display_version,
+ " " ^ s_ "Display version number and exit";
] in
let anon_fun str =
raise (Arg.Bad (sprintf (f_ "%s: unknown parameter") str)) in
[ "Hostname"; "Time"; "Arch"; "Physical CPUs";
"Count"; "Running"; "Blocked"; "Paused"; "Shutdown";
"Shutoff"; "Crashed"; "Active"; "Inactive";
- "%CPU"; "Total memory (KB)"; "Total guest memory (KB)";
+ "%CPU";
+ "Total hardware memory (KB)";
+ "Total memory (KB)"; "Total guest memory (KB)";
"Total CPU time (ns)" ] @
(* These fields are repeated for each domain: *)
[ "Domain ID"; "Domain name"; ] @
string_of_int paused; string_of_int shutdown; string_of_int shutoff;
string_of_int crashed; string_of_int active; string_of_int inactive;
sprintf "%2.1f" percent_cpu;
+ Int64.to_string node_info.C.memory;
Int64.to_string total_memory; Int64.to_string total_domU_memory;
Int64.to_string (Int64.of_float total_cpu_time)
] in
(* Banner at the top of the screen. *)
let banner =
- sprintf (f_ "virt-top %s (libvirt %d.%d.%d) by Red Hat")
- Libvirt_version.version libvirt_major libvirt_minor libvirt_release in
+ sprintf (f_ "virt-top %s ocaml-libvirt %s libvirt %d.%d.%d by Red Hat")
+ Virt_top_version.version
+ Libvirt_version.version
+ libvirt_major libvirt_minor libvirt_release in
let banner = pad cols banner in
attron A.reverse;
mvaddstr 0 0 banner;