Integrated image/kdata into kimage structure. Removed dead-code.
[virt-mem.git] / lib / virt_mem_ksyms.ml
index 0c4daf7..8a38cae 100644 (file)
@@ -45,7 +45,7 @@ let common_ksyms = [
   "schedule";                          (* scheduler entry point *)
 ]
 
-let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) =
+let find_kernel_symbols debug ({ mem = mem; domname = domname } as kimage) =
   (* Searching for <NUL>string<NUL> *)
   let common_ksyms_nul = List.map (sprintf "\000%s\000") common_ksyms in
 
@@ -141,12 +141,12 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) =
   (* Vote for the most popular symbol table candidate and from this
    * generate a function to look up ksyms.
    *)
-  let ksymmap =
+  let ksyms, have_ksyms =
     let freqs = frequency ksymtabs in
     match freqs with
     | [] ->
        eprintf (f_"%s: cannot find start of kernel symbol table\n") domname;
-       None
+       Ksymmap.empty, false
 
     | (_, (ksymtab_addr, ksymtab_size)) :: _ ->
        if debug then
@@ -161,23 +161,23 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) =
               (Int64.to_int ksymtab_size)) in
 
        (* Construct kernel symbol map. *)
-       let ksymmap =
+       let ksyms =
          let bits = bits_of_wordsize (Virt_mem_mmap.get_wordsize mem) in
          let e = Virt_mem_mmap.get_endian mem in
-         let rec loop ksymmap bs =
+         let rec loop ksyms bs =
            bitmatch bs with
            | { value : bits : endian(e);
                name_ptr : bits : endian(e);
                bs : -1 : bitstring } ->
                let name = Virt_mem_mmap.get_string mem name_ptr in
-               let ksymmap = Ksymmap.add name value ksymmap in
-               loop ksymmap bs
+               let ksyms = Ksymmap.add name value ksyms in
+               loop ksyms bs
            | { _ } ->
-               ksymmap
+               ksyms
          in
          loop Ksymmap.empty ksymtab in
 
-       Some ksymmap
+       ksyms, true
   in
 
   if debug then (
@@ -186,4 +186,4 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) =
       (end_t -. start_t)
   );
 
-  (image, ksymmap)
+  { kimage with ksyms = ksyms; have_ksyms = have_ksyms }