X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fkernel.mli;h=e4f4148501455924237115be8493b923f9007f62;hb=48a85384daa4089f6d310293ab3f8d713740f962;hp=c9f13f286f08dae33374e3fda152720939306a49;hpb=0ab39a448da6dd9bca3c2730f1221fad0718ac36;p=virt-mem.git diff --git a/lib/kernel.mli b/lib/kernel.mli index c9f13f2..e4f4148 100644 --- a/lib/kernel.mli +++ b/lib/kernel.mli @@ -1,8 +1,90 @@ -type ('a, 'b) task_struct;; -type ('a, 'b) net_device;; -type ('a, 'b) net;; -type ('a, 'b) in_device;; -type ('a, 'b) inet6_dev;; -type ('a, 'b) in_ifaddr;; -type ('a, 'b) inet6_ifaddr;; +module AddrMap : + sig + type key = Virt_mem_mmap.addr;; + type 'a t = 'a Map.Make(Int64).t;; + val empty : 'a t;; + val is_empty : 'a t -> bool;; + val add : key -> 'a -> 'a t -> 'a t;; + val find : key -> 'a t -> 'a;; + val remove : key -> 'a t -> 'a t;; + val mem : key -> 'a t -> bool;; + val iter : (key -> 'a -> unit) -> 'a t -> unit;; + val map : ('a -> 'b) -> 'a t -> 'b t;; + val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t;; + val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b;; + val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int;; + val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool;; + end;; +exception ParseError of string * string * string;; +type kernel_version = string;; +type load_fn = string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring;; +type task_struct = + { task_struct_comm : string; task_struct_normal_prio : int64; + task_struct_pid : int64; task_struct_prio : int64; + task_struct_run_list'next : Virt_mem_mmap.addr option; + task_struct_run_list'next_offset : int; + task_struct_run_list'next_adjustment : int; + task_struct_run_list'prev : Virt_mem_mmap.addr option; + task_struct_state : int64; task_struct_static_prio : int64; + task_struct_tasks'next : Virt_mem_mmap.addr; + task_struct_tasks'next_offset : int; + task_struct_tasks'next_adjustment : int; + task_struct_tasks'prev : Virt_mem_mmap.addr + };; +type net_device = + { net_device_addr_len : int64; + net_device_dev_list'next : Virt_mem_mmap.addr option; + net_device_dev_list'next_offset : int; + net_device_dev_list'next_adjustment : int; + net_device_dev_list'prev : Virt_mem_mmap.addr option; + net_device_flags : int64; net_device_ip6_ptr : Virt_mem_mmap.addr; + net_device_ip_ptr : Virt_mem_mmap.addr; net_device_mtu : int64; + net_device_name : string; net_device_next : Virt_mem_mmap.addr option; + net_device_operstate : int64; net_device_perm_addr : string + };; +type net = + { net_dev_base_head'next : Virt_mem_mmap.addr; + net_dev_base_head'next_offset : int; + net_dev_base_head'next_adjustment : int; + net_dev_base_head'prev : Virt_mem_mmap.addr; + net_dev_base_head'prev_offset : int; + net_dev_base_head'prev_adjustment : int + };; +type in_device = { in_device_ifa_list : Virt_mem_mmap.addr };; +type inet6_dev = { inet6_dev_addr_list : Virt_mem_mmap.addr };; +type in_ifaddr = + { in_ifaddr_ifa_address : int64; in_ifaddr_ifa_broadcast : int64; + in_ifaddr_ifa_local : int64; in_ifaddr_ifa_mask : int64; + in_ifaddr_ifa_next : Virt_mem_mmap.addr + };; +type inet6_ifaddr = + { inet6_ifaddr_lst_next : Virt_mem_mmap.addr; + inet6_ifaddr_prefix_len : int64 + };; +type kernel_struct = + Task_struct of task_struct + | Net_device of net_device + | Net of net + | In_device of in_device + | Inet6_dev of inet6_dev + | In_ifaddr of in_ifaddr + | Inet6_ifaddr of inet6_ifaddr;; +type addrmap = + (string * ((int * Bitstring.bitstring * kernel_struct) option)) AddrMap.t;; + + +val task_struct_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; +val net_device_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; +val net_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; +val in_device_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; +val inet6_dev_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; +val in_ifaddr_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; +val inet6_ifaddr_follower : + kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;;