X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fvirt_mem_types.ml;h=ba50d00937bab5a6e1c63f978865f26ed299143b;hb=master;hp=2167314a95729c54831ff6582ec98e986b03b625;hpb=a1bfec65a26ad9a88a707e6b13add4f5b40efe87;p=virt-mem.git diff --git a/lib/virt_mem_types.ml b/lib/virt_mem_types.ml index 2167314..ba50d00 100644 --- a/lib/virt_mem_types.ml +++ b/lib/virt_mem_types.ml @@ -31,15 +31,6 @@ module Ksymmap = Map.Make (String) 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; @@ -49,36 +40,20 @@ type utsname = { 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_flags : int64; - netdev_operstate : int64; - netdev_mtu : int64; - netdev_perm_addr : string; - netdev_addr_len : int64; -} - -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 @@ -123,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 } )