open Virt_mem_types
open Virt_mem_mmap
-(* Truncate an OCaml string at the first ASCII NUL character, ie. as
- * if it were a C string.
- *)
-let truncate str =
- try
- let i = String.index str '\000' in
- String.sub str 0 i
- with
- Not_found -> str
-
let parse_utsname bits =
(* Expect the first (sysname) field to always be "Linux", which is
* also a good way to tell if we're synchronized to the right bit of
domainname : 65*8 : string } ->
Some {
kernel_name = "Linux";
- nodename = truncate nodename;
- kernel_release = truncate release;
- kernel_version = truncate version;
- machine = truncate machine;
- domainname = truncate domainname
+ nodename = truncate_c_string nodename;
+ kernel_release = truncate_c_string release;
+ kernel_version = truncate_c_string version;
+ machine = truncate_c_string machine;
+ domainname = truncate_c_string domainname
}
| { _ } ->
None
-let find_utsname debug ({ domname = name; mem = mem } as image, ksymmap) =
+let find_utsname debug ({ domname = name; mem = mem } as image) ksymmap =
let utsname =
(* In Linux 2.6.25, the symbol is init_uts_ns.
* http://lxr.linux.no/linux/init/version.c
Not_found ->
eprintf (f_"%s: could not find utsname in kernel image\n") name
in
- (image, ksymmap, utsname)
+ image, utsname