type ksymmap = addr Ksymmap.t
-type image = {
- 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 = {
uts_kernel_name : string;
uts_nodename : 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;
+type kimage = {
+ dom : Libvirt.ro D.t option;
+ domname : string;
+ arch : architecture;
+ kernel_min : addr;
+ kernel_max : addr;
+ mem : ([`Wordsize], [`Endian], [`HasMapping]) Virt_mem_mmap.t;
+ addrmap : Kernel.addrmap;
+ ksyms : ksymmap;
+ have_ksyms : bool;
+ have_kallsyms : bool;
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;
+ have_tasks : bool;
+ have_net_devices : bool;
}
(* This is the maximum we can download in one go over the libvirt
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 }
)