25f16ba040e835fd54bfe869c013be623a261d78
[virt-mem.git] / lib / kernel.mli
1 module AddrMap :
2   sig
3     type key = Virt_mem_mmap.addr;;
4     type 'a t = 'a Map.Make(Int64).t;;
5     val empty : 'a t;;
6     val is_empty : 'a t -> bool;;
7     val add : key -> 'a -> 'a t -> 'a t;;
8     val find : key -> 'a t -> 'a;;
9     val remove : key -> 'a t -> 'a t;;
10     val mem : key -> 'a t -> bool;;
11     val iter : (key -> 'a -> unit) -> 'a t -> unit;;
12     val map : ('a -> 'b) -> 'a t -> 'b t;;
13     val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t;;
14     val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b;;
15     val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int;;
16     val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool;;
17   end;;
18 type kernel_version = string;;
19 type task_struct =
20   { task_struct_comm : string; task_struct_normal_prio : int64;
21     task_struct_pid : int64; task_struct_prio : int64;
22     task_struct_run_list'next : Virt_mem_mmap.addr option;
23     task_struct_run_list'next_offset : int;
24     task_struct_run_list'next_adjustment : int;
25     task_struct_run_list'prev : Virt_mem_mmap.addr option;
26     task_struct_state : int64; task_struct_static_prio : int64;
27     task_struct_tasks'next : Virt_mem_mmap.addr;
28     task_struct_tasks'next_offset : int;
29     task_struct_tasks'next_adjustment : int;
30     task_struct_tasks'prev : Virt_mem_mmap.addr
31   };;
32 type net_device =
33   { net_device_addr_len : int64;
34     net_device_dev_list'next : Virt_mem_mmap.addr option;
35     net_device_dev_list'next_offset : int;
36     net_device_dev_list'next_adjustment : int;
37     net_device_dev_list'prev : Virt_mem_mmap.addr option;
38     net_device_flags : int64; net_device_ip6_ptr : Virt_mem_mmap.addr;
39     net_device_ip_ptr : Virt_mem_mmap.addr; net_device_mtu : int64;
40     net_device_name : string; net_device_next : Virt_mem_mmap.addr option;
41     net_device_operstate : int64; net_device_perm_addr : string
42   };;
43 type net =
44   { net_dev_base_head'next : Virt_mem_mmap.addr;
45     net_dev_base_head'next_offset : int;
46     net_dev_base_head'next_adjustment : int;
47     net_dev_base_head'prev : Virt_mem_mmap.addr;
48     net_dev_base_head'prev_offset : int;
49     net_dev_base_head'prev_adjustment : int
50   };;
51 type in_device = { in_device_ifa_list : Virt_mem_mmap.addr };;
52 type inet6_dev = { inet6_dev_addr_list : Virt_mem_mmap.addr };;
53 type in_ifaddr =
54   { in_ifaddr_ifa_address : int64; in_ifaddr_ifa_broadcast : int64;
55     in_ifaddr_ifa_local : int64; in_ifaddr_ifa_mask : int64;
56     in_ifaddr_ifa_next : Virt_mem_mmap.addr
57   };;
58 type inet6_ifaddr =
59   { inet6_ifaddr_lst_next : Virt_mem_mmap.addr;
60     inet6_ifaddr_prefix_len : int64
61   };;
62 type kernel_struct =
63   Task_struct of task_struct
64   | Net_device of net_device
65   | Net of net
66   | In_device of in_device
67   | Inet6_dev of inet6_dev
68   | In_ifaddr of in_ifaddr
69   | Inet6_ifaddr of inet6_ifaddr;;
70
71
72
73 val task_struct_follower :
74   kernel_version ->
75     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
76       (string * ((int * Bitstring.bitstring * kernel_struct) option))
77         AddrMap.t ->
78         Virt_mem_mmap.addr ->
79           (string * ((int * Bitstring.bitstring * kernel_struct) option))
80             AddrMap.t;;
81 val net_device_follower :
82   kernel_version ->
83     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
84       (string * ((int * Bitstring.bitstring * kernel_struct) option))
85         AddrMap.t ->
86         Virt_mem_mmap.addr ->
87           (string * ((int * Bitstring.bitstring * kernel_struct) option))
88             AddrMap.t;;
89 val net_follower :
90   kernel_version ->
91     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
92       (string * ((int * Bitstring.bitstring * kernel_struct) option))
93         AddrMap.t ->
94         Virt_mem_mmap.addr ->
95           (string * ((int * Bitstring.bitstring * kernel_struct) option))
96             AddrMap.t;;
97 val in_device_follower :
98   kernel_version ->
99     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
100       (string * ((int * Bitstring.bitstring * kernel_struct) option))
101         AddrMap.t ->
102         Virt_mem_mmap.addr ->
103           (string * ((int * Bitstring.bitstring * kernel_struct) option))
104             AddrMap.t;;
105 val inet6_dev_follower :
106   kernel_version ->
107     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
108       (string * ((int * Bitstring.bitstring * kernel_struct) option))
109         AddrMap.t ->
110         Virt_mem_mmap.addr ->
111           (string * ((int * Bitstring.bitstring * kernel_struct) option))
112             AddrMap.t;;
113 val in_ifaddr_follower :
114   kernel_version ->
115     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
116       (string * ((int * Bitstring.bitstring * kernel_struct) option))
117         AddrMap.t ->
118         Virt_mem_mmap.addr ->
119           (string * ((int * Bitstring.bitstring * kernel_struct) option))
120             AddrMap.t;;
121 val inet6_ifaddr_follower :
122   kernel_version ->
123     (string -> Virt_mem_mmap.addr -> int -> Bitstring.bitstring) ->
124       (string * ((int * Bitstring.bitstring * kernel_struct) option))
125         AddrMap.t ->
126         Virt_mem_mmap.addr ->
127           (string * ((int * Bitstring.bitstring * kernel_struct) option))
128             AddrMap.t;;