module Ksymmap = Map.Make (String)
-type image0 = {
+type ksymmap = addr Ksymmap.t
+
+type image = {
dom : Libvirt.ro D.t option;
domname : string;
- arch : Virt_mem_utils.architecture;
+ arch : architecture;
mem : ([`Wordsize], [`Endian], [`HasMapping]) Virt_mem_mmap.t;
kernel_min : addr;
kernel_max : addr;
}
-type image1 =
- image0
- * addr Ksymmap.t
-
-type image2 =
- image0
- * addr Ksymmap.t
- * utsname option
-
-and utsname = {
- kernel_name : string;
- nodename : string;
- kernel_release : string;
- kernel_version : string;
- machine : string;
- domainname : string;
+type utsname = {
+ uts_kernel_name : string;
+ uts_nodename : string;
+ uts_kernel_release : string;
+ uts_kernel_version : string;
+ uts_machine : string;
+ uts_domainname : string;
+}
+
+type task = {
+ task_state : int64;
+ task_prio : int64;
+ task_normal_prio : int64;
+ task_static_prio : int64;
+ task_comm : string;
+ task_pid : int64;
+}
+
+type net_device = {
+ netdev_name : string;
+ netdev_dev_addr : string;
+}
+
+type kdata = {
+ ksyms : ksymmap option;
+ utsname : utsname option;
+ tasks : task list option;
+ net_devices : net_device list option;
+}
+
+exception ParseError of string * string * string
+
+type fieldsig = {
+ field_available : bool;
+ field_offset : int;
}
(* This is the maximum we can download in one go over the libvirt
in
loop 0;
- add_string mem str start
+ Virt_mem_mmap.add_string mem str start
let load_static_memory ~dom ~domname ~arch ~wordsize ~endian
~kernel_min ~kernel_max start size =
else if start +^ Int64.of_int size > kernel_max then
raise (LoadMemoryError (AddressOutOfRange,
"load_memory: start+size > kernel_max"))
- else if is_mapped_range mem start size then image
+ else if Virt_mem_mmap.is_mapped_range mem start size then image
else (
match dom with
| None ->