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 : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; val net_device_follower : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; val net_follower : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; val in_device_follower : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; val inet6_dev_follower : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; val in_ifaddr_follower : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;; val inet6_ifaddr_follower : bool -> kernel_version -> load_fn -> addrmap -> Virt_mem_mmap.addr -> addrmap;;