Rebuild for all known kernels.
[virt-mem.git] / lib / virt_mem_utsname.ml
index 0ae8871..457e339 100644 (file)
@@ -37,23 +37,24 @@ let parse_utsname bits =
       machine : 65*8 : string;
       domainname : 65*8 : string } ->
       Some {
-       kernel_name = "Linux";
-       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
+       uts_kernel_name = "Linux";
+       uts_nodename = truncate_c_string nodename;
+       uts_kernel_release = truncate_c_string release;
+       uts_kernel_version = truncate_c_string version;
+       uts_machine = truncate_c_string machine;
+       uts_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; ksyms = ksyms }
+                         as kimage) =
   let utsname =
     (* In Linux 2.6.25, the symbol is init_uts_ns.
      * http://lxr.linux.no/linux/init/version.c
      *)
     try
-      let addr = Ksymmap.find "init_uts_ns" ksymmap in
+      let addr = Ksymmap.find "init_uts_ns" ksyms in
 
       let bs = Bitstring.bitstring_of_string (get_bytes mem addr (65*6+4)) in
       (bitmatch bs with
@@ -71,13 +72,15 @@ let find_utsname debug ({ domname = name; mem = mem } as image) ksymmap =
         * http://lxr.linux.no/linux-bk+v2.6.9/include/linux/utsname.h#L24
         *)
        try
-         let addr = Ksymmap.find "system_utsname" ksymmap in
+         let addr = Ksymmap.find "system_utsname" ksyms in
 
          let bits =
            Bitstring.bitstring_of_string (get_bytes mem addr (65*6)) in
          parse_utsname bits
-           with
-             Not_found ->
-               eprintf (f_"%s: could not find utsname in kernel image\n") name
+       with
+         Not_found ->
+           eprintf (f_"%s: could not find utsname in kernel image\n")
+             name;
+           None
   in
-  image, utsname
+  { kimage with utsname = utsname }