git.annexia.org
/
virt-mem.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rebuild task_struct & net_device against latest kerneldb.
[virt-mem.git]
/
lib
/
virt_mem_utils.ml
diff --git
a/lib/virt_mem_utils.ml
b/lib/virt_mem_utils.ml
index
8eb312a
..
a1eab8f
100644
(file)
--- a/
lib/virt_mem_utils.ml
+++ b/
lib/virt_mem_utils.ml
@@
-1,3
+1,4
@@
+(** Common and utility functions. *)
(* Memory info command for virtual domains.
(C) Copyright 2008 Richard W.M. Jones, Red Hat Inc.
http://libvirt.org/
(* Memory info command for virtual domains.
(C) Copyright 2008 Richard W.M. Jones, Red Hat Inc.
http://libvirt.org/
@@
-78,9
+79,8
@@
let bits_of_wordsize = function
let bytes_of_wordsize = function
| W32 -> 4 | W64 -> 8
let bytes_of_wordsize = function
| W32 -> 4 | W64 -> 8
-(* Returns (count, value) in order of highest frequency occurring in the
- * list.
- *)
+(** Returns (count, value) in order of highest frequency occurring in the
+ list. *)
let frequency xs =
let xs = List.sort compare xs in
let rec loop = function
let frequency xs =
let xs = List.sort compare xs in
let rec loop = function
@@
-96,6
+96,7
@@
let frequency xs =
let xs = loop xs in
List.rev (List.sort compare xs)
let xs = loop xs in
List.rev (List.sort compare xs)
+(** Like the Unix uniq(1) command. *)
let rec uniq ?(cmp = Pervasives.compare) = function
| [] -> []
| [x] -> [x]
let rec uniq ?(cmp = Pervasives.compare) = function
| [] -> []
| [x] -> [x]
@@
-104,25
+105,35
@@
let rec uniq ?(cmp = Pervasives.compare) = function
| x :: y :: xs ->
x :: uniq (y :: xs)
| x :: y :: xs ->
x :: uniq (y :: xs)
+(** Like the Unix pipeline 'sort|uniq'. *)
let sort_uniq ?cmp xs =
let xs = ExtList.List.sort ?cmp xs in
let xs = uniq ?cmp xs in
xs
let sort_uniq ?cmp xs =
let xs = ExtList.List.sort ?cmp xs in
let xs = uniq ?cmp xs in
xs
-(* Pad a string to a fixed width (from virt-top, but don't truncate). *)
+(*
*
Pad a string to a fixed width (from virt-top, but don't truncate). *)
let pad width str =
let n = String.length str in
if n >= width then str
else (* if n < width then *) str ^ String.make (width-n) ' '
let pad width str =
let n = String.length str in
if n >= width then str
else (* if n < width then *) str ^ String.make (width-n) ' '
-(*
General binary tree type. Data 'a is stored in the leaves and 'b
- * i
s stored in the nodes
.
+(*
Truncate an OCaml string at the first ASCII NUL character, ie. as
+ * i
f it were a C string
.
*)
*)
+let truncate_c_string str =
+ try
+ let i = String.index str '\000' in
+ String.sub str 0 i
+ with
+ Not_found -> str
+
+(** General binary tree type. Data 'a is stored in the leaves and 'b
+ is stored in the nodes. *)
type ('a,'b) binary_tree =
| Leaf of 'a
| Node of ('a,'b) binary_tree * 'b * ('a,'b) binary_tree
type ('a,'b) binary_tree =
| Leaf of 'a
| Node of ('a,'b) binary_tree * 'b * ('a,'b) binary_tree
-(*
This prints
out the binary tree in graphviz dot format. *)
+(*
* Print
out the binary tree in graphviz dot format. *)
let print_binary_tree leaf_printer node_printer tree =
(* Assign a unique, fixed label to each node. *)
let label =
let print_binary_tree leaf_printer node_printer tree =
(* Assign a unique, fixed label to each node. *)
let label =