Separate rules for building bytecode & native code versions.
[virt-mem.git] / lib / virt_mem_types.ml
index f8d3f0f..ba50d00 100644 (file)
@@ -31,36 +31,29 @@ module Ksymmap = Map.Make (String)
 
 type ksymmap = addr Ksymmap.t
 
-type image = {
+type utsname = {
+  uts_kernel_name : string;
+  uts_nodename : string;
+  uts_kernel_release : string;
+  uts_kernel_version : string;
+  uts_machine : string;
+  uts_domainname : string;
+}
+
+type kimage = {
   dom : Libvirt.ro D.t option;
   domname : string;
   arch : architecture;
-  mem : ([`Wordsize], [`Endian], [`HasMapping]) Virt_mem_mmap.t;
   kernel_min : addr;
   kernel_max : addr;
-}
-
-type utsname = {
-  kernel_name : string;
-  nodename : string;
-  kernel_release : string;
-  kernel_version : string;
-  machine : string;
-  domainname : string;
-}
-
-type kdata = {
-  ksyms : ksymmap option;
+  mem : ([`Wordsize], [`Endian], [`HasMapping]) Virt_mem_mmap.t;
+  addrmap : Kernel.addrmap;
+  ksyms : ksymmap;
+  have_ksyms : bool;
+  have_kallsyms : bool;
   utsname : utsname option;
-  tasks : Virt_mem_mmap.addr option;
-  net_devices : Virt_mem_mmap.addr option;
-}
-
-exception ParseError of string * string * string
-
-type fieldsig = {
-  field_available : bool;
-  field_offset : int;
+  have_tasks : bool;
+  have_net_devices : bool;
 }
 
 (* This is the maximum we can download in one go over the libvirt
@@ -105,24 +98,28 @@ let load_static_memory ~dom ~domname ~arch ~wordsize ~endian
 
     let mem = _load_memory mem dom start size in
 
-    { dom = Some dom; domname = domname; mem = mem; arch = arch;
-      kernel_min = kernel_min; kernel_max = kernel_max }
+    { dom = Some dom; domname = domname; arch = arch;
+      kernel_min = kernel_min; kernel_max = kernel_max;
+      mem = mem; addrmap = Kernel.AddrMap.empty;
+      ksyms = Ksymmap.empty; have_ksyms = false; have_kallsyms = false;
+      utsname = None;
+      have_tasks = false; have_net_devices = false }
   )
 
 let load_memory ({ dom = dom; mem = mem; kernel_min = kernel_min;
-                  kernel_max = kernel_max } as image) start size =
+                  kernel_max = kernel_max } as kimage) start size =
   if start < kernel_min then
     raise (LoadMemoryError (AddressOutOfRange,
                            "load_memory: start < kernel_min"))
   else if start +^ Int64.of_int size > kernel_max then
     raise (LoadMemoryError (AddressOutOfRange,
                            "load_memory: start+size > kernel_max"))
-  else if Virt_mem_mmap.is_mapped_range mem start size then image
+  else if Virt_mem_mmap.is_mapped_range mem start size then kimage
   else (
     match dom with
     | None ->
        raise (LoadMemoryError (DomIsNull, "load_memory: dom = None"))
     | Some dom ->
        let mem = _load_memory mem dom start size in
-       { image with mem = mem }
+       { kimage with mem = mem }
   )