1 (* WARNING: This file and the corresponding mli (interface) are
2 * automatically generated by the extract/codegen/ program.
4 * Any edits you make to this file will be lost.
6 * To update this file from the latest kernel database, it is recommended
7 * that you do 'make update-kernel-structs'.
11 module StringMap = Map.Make(String);;
12 module AddrMap = Map.Make(Int64);;
13 type kernel_version = string;;
14 let match_err = "failed to match kernel structure";;
15 let unknown_kernel_version version struct_name =
18 "%s: unknown kernel version or
19 struct %s is not supported in this kernel.
20 Try a newer version of virt-mem, or if the guest is not from a
21 supported Linux distribution, see this page about adding support:
22 http://et.redhat.com/~rjones/virt-mem/faq.html
24 version struct_name);;
27 { task_struct_comm : string; task_struct_normal_prio : int64;
28 task_struct_pid : int64; task_struct_prio : int64;
29 task_struct_run_list'next : Virt_mem_mmap.addr option;
30 task_struct_run_list'next_offset : int;
31 task_struct_run_list'next_adjustment : int;
32 task_struct_run_list'prev : Virt_mem_mmap.addr option;
33 task_struct_state : int64; task_struct_static_prio : int64;
34 task_struct_tasks'next : Virt_mem_mmap.addr;
35 task_struct_tasks'next_offset : int;
36 task_struct_tasks'next_adjustment : int;
37 task_struct_tasks'prev : Virt_mem_mmap.addr
40 { net_device_addr_len : int64;
41 net_device_dev_list'next : Virt_mem_mmap.addr option;
42 net_device_dev_list'next_offset : int;
43 net_device_dev_list'next_adjustment : int;
44 net_device_dev_list'prev : Virt_mem_mmap.addr option;
45 net_device_flags : int64; net_device_ip6_ptr : Virt_mem_mmap.addr;
46 net_device_ip_ptr : Virt_mem_mmap.addr; net_device_mtu : int64;
47 net_device_name : string; net_device_next : Virt_mem_mmap.addr option;
48 net_device_operstate : int64; net_device_perm_addr : string
51 { net_dev_base_head'next : Virt_mem_mmap.addr;
52 net_dev_base_head'next_offset : int;
53 net_dev_base_head'next_adjustment : int;
54 net_dev_base_head'prev : Virt_mem_mmap.addr;
55 net_dev_base_head'prev_offset : int;
56 net_dev_base_head'prev_adjustment : int
58 type in_device = { in_device_ifa_list : Virt_mem_mmap.addr };;
59 type inet6_dev = { inet6_dev_addr_list : Virt_mem_mmap.addr };;
61 { in_ifaddr_ifa_address : int64; in_ifaddr_ifa_broadcast : int64;
62 in_ifaddr_ifa_local : int64; in_ifaddr_ifa_mask : int64;
63 in_ifaddr_ifa_next : Virt_mem_mmap.addr
66 { inet6_ifaddr_lst_next : Virt_mem_mmap.addr;
67 inet6_ifaddr_prefix_len : int64
70 Task_struct of task_struct
71 | Net_device of net_device
73 | In_device of in_device
74 | Inet6_dev of inet6_dev
75 | In_ifaddr of in_ifaddr
76 | Inet6_ifaddr of inet6_ifaddr;;
77 let offset_of_net_device_dev_list'next =
79 StringMap.add "2.6.25.14-69.fc8.i686" 48
80 (StringMap.add "2.6.25.14-108.fc9.ppc" 48
81 (StringMap.add "2.6.25.11-97.fc9.i686" 48
82 (StringMap.add "2.6.25.14-69.fc8.ppc64" 72
83 (StringMap.add "2.6.25.14-69.fc8.i586" 48
84 (StringMap.add "2.6.25.11-97.fc9.x86_64" 72
85 (StringMap.add "2.6.25.14-108.fc9.x86_64" 72
86 (StringMap.add "2.6.25.14-69.fc8.ppc" 48
87 (StringMap.add "2.6.25.14-108.fc9.i686" 48
88 (StringMap.add "2.6.25.14-108.fc9.i586" 48
89 (StringMap.add "2.6.25.14-108.fc9.ppc64" 72
90 (StringMap.add "2.6.25.14-69.fc8.x86_64"
91 72 StringMap.empty)))))))))))
92 in fun kernel_version -> StringMap.find kernel_version map;;
93 let task_struct_parser_1 kernel_version bits =
95 | { state : zero+64 : offset(0), littleendian;
96 prio : zero+32 : offset(224), littleendian;
97 static_prio : zero+32 : offset(256), littleendian;
98 normal_prio : zero+32 : offset(288), littleendian;
99 tasks'next : zero+64 : offset(3840), littleendian;
100 tasks'prev : zero+64 : offset(3904), littleendian;
101 pid : zero+32 : offset(4352), littleendian;
102 comm : 128 : offset(8392), string } ->
103 { task_struct_comm = comm;
104 task_struct_normal_prio = normal_prio;
105 task_struct_pid = pid;
106 task_struct_prio = prio;
107 task_struct_run_list'next = None;
108 task_struct_run_list'next_offset = -1;
109 task_struct_run_list'next_adjustment = -1;
110 task_struct_run_list'prev = None;
111 task_struct_state = state;
112 task_struct_static_prio = static_prio;
113 task_struct_tasks'next = tasks'next;
114 task_struct_tasks'next_offset = 480;
115 task_struct_tasks'next_adjustment = 480;
116 task_struct_tasks'prev = tasks'prev }
118 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_1", match_err));;
119 let task_struct_parser_2 kernel_version bits =
121 | { state : zero+64 : offset(0), bigendian;
122 prio : zero+32 : offset(224), bigendian;
123 static_prio : zero+32 : offset(256), bigendian;
124 normal_prio : zero+32 : offset(288), bigendian;
125 tasks'next : zero+64 : offset(3840), bigendian;
126 tasks'prev : zero+64 : offset(3904), bigendian;
127 pid : zero+32 : offset(4352), bigendian;
128 comm : 128 : offset(8392), string } ->
129 { task_struct_comm = comm;
130 task_struct_normal_prio = normal_prio;
131 task_struct_pid = pid;
132 task_struct_prio = prio;
133 task_struct_run_list'next = None;
134 task_struct_run_list'next_offset = -1;
135 task_struct_run_list'next_adjustment = -1;
136 task_struct_run_list'prev = None;
137 task_struct_state = state;
138 task_struct_static_prio = static_prio;
139 task_struct_tasks'next = tasks'next;
140 task_struct_tasks'next_offset = 480;
141 task_struct_tasks'next_adjustment = 480;
142 task_struct_tasks'prev = tasks'prev }
144 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_2", match_err));;
145 let task_struct_parser_3 kernel_version bits =
147 | { state : zero+32 : offset(0), littleendian;
148 prio : zero+32 : offset(160), littleendian;
149 static_prio : zero+32 : offset(192), littleendian;
150 normal_prio : zero+32 : offset(224), littleendian;
151 tasks'next : zero+32 : offset(3200), littleendian;
152 tasks'prev : zero+32 : offset(3232), littleendian;
153 pid : zero+32 : offset(3552), littleendian;
154 comm : 128 : offset(5896), string } ->
155 { task_struct_comm = comm;
156 task_struct_normal_prio = normal_prio;
157 task_struct_pid = pid;
158 task_struct_prio = prio;
159 task_struct_run_list'next = None;
160 task_struct_run_list'next_offset = -1;
161 task_struct_run_list'next_adjustment = -1;
162 task_struct_run_list'prev = None;
163 task_struct_state = state;
164 task_struct_static_prio = static_prio;
165 task_struct_tasks'next = tasks'next;
166 task_struct_tasks'next_offset = 400;
167 task_struct_tasks'next_adjustment = 400;
168 task_struct_tasks'prev = tasks'prev }
170 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_3", match_err));;
171 let task_struct_parser_4 kernel_version bits =
173 | { state : zero+32 : offset(0), littleendian;
174 prio : zero+32 : offset(160), littleendian;
175 static_prio : zero+32 : offset(192), littleendian;
176 normal_prio : zero+32 : offset(224), littleendian;
177 tasks'next : zero+32 : offset(3232), littleendian;
178 tasks'prev : zero+32 : offset(3264), littleendian;
179 pid : zero+32 : offset(3584), littleendian;
180 comm : 128 : offset(5928), string } ->
181 { task_struct_comm = comm;
182 task_struct_normal_prio = normal_prio;
183 task_struct_pid = pid;
184 task_struct_prio = prio;
185 task_struct_run_list'next = None;
186 task_struct_run_list'next_offset = -1;
187 task_struct_run_list'next_adjustment = -1;
188 task_struct_run_list'prev = None;
189 task_struct_state = state;
190 task_struct_static_prio = static_prio;
191 task_struct_tasks'next = tasks'next;
192 task_struct_tasks'next_offset = 404;
193 task_struct_tasks'next_adjustment = 404;
194 task_struct_tasks'prev = tasks'prev }
196 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_4", match_err));;
197 let task_struct_parser_5 kernel_version bits =
199 | { state : zero+32 : offset(0), bigendian;
200 prio : zero+32 : offset(160), bigendian;
201 static_prio : zero+32 : offset(192), bigendian;
202 normal_prio : zero+32 : offset(224), bigendian;
203 tasks'next : zero+32 : offset(3328), bigendian;
204 tasks'prev : zero+32 : offset(3360), bigendian;
205 pid : zero+32 : offset(3680), bigendian;
206 comm : 128 : offset(6056), string } ->
207 { task_struct_comm = comm;
208 task_struct_normal_prio = normal_prio;
209 task_struct_pid = pid;
210 task_struct_prio = prio;
211 task_struct_run_list'next = None;
212 task_struct_run_list'next_offset = -1;
213 task_struct_run_list'next_adjustment = -1;
214 task_struct_run_list'prev = None;
215 task_struct_state = state;
216 task_struct_static_prio = static_prio;
217 task_struct_tasks'next = tasks'next;
218 task_struct_tasks'next_offset = 416;
219 task_struct_tasks'next_adjustment = 416;
220 task_struct_tasks'prev = tasks'prev }
222 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_5", match_err));;
223 let task_struct_parser_6 kernel_version bits =
225 | { state : zero+32 : offset(0), bigendian;
226 prio : zero+32 : offset(192), bigendian;
227 static_prio : zero+32 : offset(224), bigendian;
228 normal_prio : zero+32 : offset(256), bigendian;
229 run_list'next : zero+32 : offset(288), bigendian;
230 run_list'prev : zero+32 : offset(320), bigendian;
231 tasks'next : zero+32 : offset(1024), bigendian;
232 tasks'prev : zero+32 : offset(1056), bigendian;
233 pid : zero+32 : offset(1376), bigendian;
234 comm : 128 : offset(3264), string } ->
235 { task_struct_comm = comm;
236 task_struct_normal_prio = normal_prio;
237 task_struct_pid = pid;
238 task_struct_prio = prio;
239 task_struct_run_list'next = Some run_list'next;
240 task_struct_run_list'next_offset = 36;
241 task_struct_run_list'next_adjustment = 36;
242 task_struct_run_list'prev = Some run_list'prev;
243 task_struct_state = state;
244 task_struct_static_prio = static_prio;
245 task_struct_tasks'next = tasks'next;
246 task_struct_tasks'next_offset = 128;
247 task_struct_tasks'next_adjustment = 128;
248 task_struct_tasks'prev = tasks'prev }
250 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_6", match_err));;
251 let task_struct_parser_7 kernel_version bits =
253 | { state : zero+64 : offset(0), littleendian;
254 prio : zero+32 : offset(320), littleendian;
255 static_prio : zero+32 : offset(352), littleendian;
256 normal_prio : zero+32 : offset(384), littleendian;
257 run_list'next : zero+64 : offset(448), littleendian;
258 run_list'prev : zero+64 : offset(512), littleendian;
259 tasks'next : zero+64 : offset(1536), littleendian;
260 tasks'prev : zero+64 : offset(1600), littleendian;
261 pid : zero+32 : offset(2144), littleendian;
262 comm : 128 : offset(5440), string } ->
263 { task_struct_comm = comm;
264 task_struct_normal_prio = normal_prio;
265 task_struct_pid = pid;
266 task_struct_prio = prio;
267 task_struct_run_list'next = Some run_list'next;
268 task_struct_run_list'next_offset = 56;
269 task_struct_run_list'next_adjustment = 56;
270 task_struct_run_list'prev = Some run_list'prev;
271 task_struct_state = state;
272 task_struct_static_prio = static_prio;
273 task_struct_tasks'next = tasks'next;
274 task_struct_tasks'next_offset = 192;
275 task_struct_tasks'next_adjustment = 192;
276 task_struct_tasks'prev = tasks'prev }
278 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_7", match_err));;
279 let task_struct_parser_8 kernel_version bits =
281 | { state : zero+32 : offset(0), littleendian;
282 prio : zero+32 : offset(192), littleendian;
283 static_prio : zero+32 : offset(224), littleendian;
284 normal_prio : zero+32 : offset(256), littleendian;
285 run_list'next : zero+32 : offset(288), littleendian;
286 run_list'prev : zero+32 : offset(320), littleendian;
287 tasks'next : zero+32 : offset(992), littleendian;
288 tasks'prev : zero+32 : offset(1024), littleendian;
289 pid : zero+32 : offset(1344), littleendian;
290 comm : 128 : offset(3232), string } ->
291 { task_struct_comm = comm;
292 task_struct_normal_prio = normal_prio;
293 task_struct_pid = pid;
294 task_struct_prio = prio;
295 task_struct_run_list'next = Some run_list'next;
296 task_struct_run_list'next_offset = 36;
297 task_struct_run_list'next_adjustment = 36;
298 task_struct_run_list'prev = Some run_list'prev;
299 task_struct_state = state;
300 task_struct_static_prio = static_prio;
301 task_struct_tasks'next = tasks'next;
302 task_struct_tasks'next_offset = 124;
303 task_struct_tasks'next_adjustment = 124;
304 task_struct_tasks'prev = tasks'prev }
306 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_8", match_err));;
307 let task_struct_parser_9 kernel_version bits =
309 | { state : zero+64 : offset(0), bigendian;
310 prio : zero+32 : offset(320), bigendian;
311 static_prio : zero+32 : offset(352), bigendian;
312 normal_prio : zero+32 : offset(384), bigendian;
313 run_list'next : zero+64 : offset(448), bigendian;
314 run_list'prev : zero+64 : offset(512), bigendian;
315 tasks'next : zero+64 : offset(1600), bigendian;
316 tasks'prev : zero+64 : offset(1664), bigendian;
317 pid : zero+32 : offset(2208), bigendian;
318 comm : 128 : offset(5440), string } ->
319 { task_struct_comm = comm;
320 task_struct_normal_prio = normal_prio;
321 task_struct_pid = pid;
322 task_struct_prio = prio;
323 task_struct_run_list'next = Some run_list'next;
324 task_struct_run_list'next_offset = 56;
325 task_struct_run_list'next_adjustment = 56;
326 task_struct_run_list'prev = Some run_list'prev;
327 task_struct_state = state;
328 task_struct_static_prio = static_prio;
329 task_struct_tasks'next = tasks'next;
330 task_struct_tasks'next_offset = 200;
331 task_struct_tasks'next_adjustment = 200;
332 task_struct_tasks'prev = tasks'prev }
334 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_9", match_err));;
335 let net_device_parser_10 kernel_version bits =
337 | { name : 128 : offset(0), string;
338 dev_list'next : zero+64 : offset(576), littleendian;
339 dev_list'prev : zero+64 : offset(640), littleendian;
340 flags : zero+32 : offset(2880), littleendian;
341 operstate : zero+8 : offset(2960), littleendian;
342 mtu : zero+32 : offset(2976), littleendian;
343 perm_addr : 256 : offset(3136), string;
344 addr_len : zero+8 : offset(3392), littleendian;
345 ip_ptr : zero+64 : offset(3840), littleendian;
346 ip6_ptr : zero+64 : offset(3968), littleendian } ->
347 { net_device_addr_len = addr_len;
348 net_device_dev_list'next = Some dev_list'next;
349 net_device_dev_list'next_offset = 72;
350 net_device_dev_list'next_adjustment = 72;
351 net_device_dev_list'prev = Some dev_list'prev;
352 net_device_flags = flags;
353 net_device_ip6_ptr = ip6_ptr;
354 net_device_ip_ptr = ip_ptr;
355 net_device_mtu = mtu;
356 net_device_name = name;
357 net_device_next = None;
358 net_device_operstate = operstate;
359 net_device_perm_addr = perm_addr }
361 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_10", match_err));;
362 let net_device_parser_11 kernel_version bits =
364 | { name : 128 : offset(0), string;
365 dev_list'next : zero+64 : offset(576), bigendian;
366 dev_list'prev : zero+64 : offset(640), bigendian;
367 flags : zero+32 : offset(2880), bigendian;
368 operstate : zero+8 : offset(2960), bigendian;
369 mtu : zero+32 : offset(2976), bigendian;
370 perm_addr : 256 : offset(3136), string;
371 addr_len : zero+8 : offset(3392), bigendian;
372 ip_ptr : zero+64 : offset(3840), bigendian;
373 ip6_ptr : zero+64 : offset(3968), bigendian } ->
374 { net_device_addr_len = addr_len;
375 net_device_dev_list'next = Some dev_list'next;
376 net_device_dev_list'next_offset = 72;
377 net_device_dev_list'next_adjustment = 72;
378 net_device_dev_list'prev = Some dev_list'prev;
379 net_device_flags = flags;
380 net_device_ip6_ptr = ip6_ptr;
381 net_device_ip_ptr = ip_ptr;
382 net_device_mtu = mtu;
383 net_device_name = name;
384 net_device_next = None;
385 net_device_operstate = operstate;
386 net_device_perm_addr = perm_addr }
388 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_11", match_err));;
389 let net_device_parser_12 kernel_version bits =
391 | { name : 128 : offset(0), string;
392 dev_list'next : zero+32 : offset(384), littleendian;
393 dev_list'prev : zero+32 : offset(416), littleendian;
394 flags : zero+32 : offset(1568), littleendian;
395 operstate : zero+8 : offset(1648), littleendian;
396 mtu : zero+32 : offset(1664), littleendian;
397 perm_addr : 256 : offset(1760), string;
398 addr_len : zero+8 : offset(2016), littleendian;
399 ip_ptr : zero+32 : offset(2304), littleendian;
400 ip6_ptr : zero+32 : offset(2368), littleendian } ->
401 { net_device_addr_len = addr_len;
402 net_device_dev_list'next = Some dev_list'next;
403 net_device_dev_list'next_offset = 48;
404 net_device_dev_list'next_adjustment = 48;
405 net_device_dev_list'prev = Some dev_list'prev;
406 net_device_flags = flags;
407 net_device_ip6_ptr = ip6_ptr;
408 net_device_ip_ptr = ip_ptr;
409 net_device_mtu = mtu;
410 net_device_name = name;
411 net_device_next = None;
412 net_device_operstate = operstate;
413 net_device_perm_addr = perm_addr }
415 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_12", match_err));;
416 let net_device_parser_13 kernel_version bits =
418 | { name : 128 : offset(0), string;
419 dev_list'next : zero+32 : offset(384), bigendian;
420 dev_list'prev : zero+32 : offset(416), bigendian;
421 flags : zero+32 : offset(1568), bigendian;
422 operstate : zero+8 : offset(1648), bigendian;
423 mtu : zero+32 : offset(1664), bigendian;
424 perm_addr : 256 : offset(1760), string;
425 addr_len : zero+8 : offset(2016), bigendian;
426 ip_ptr : zero+32 : offset(2304), bigendian;
427 ip6_ptr : zero+32 : offset(2368), bigendian } ->
428 { net_device_addr_len = addr_len;
429 net_device_dev_list'next = Some dev_list'next;
430 net_device_dev_list'next_offset = 48;
431 net_device_dev_list'next_adjustment = 48;
432 net_device_dev_list'prev = Some dev_list'prev;
433 net_device_flags = flags;
434 net_device_ip6_ptr = ip6_ptr;
435 net_device_ip_ptr = ip_ptr;
436 net_device_mtu = mtu;
437 net_device_name = name;
438 net_device_next = None;
439 net_device_operstate = operstate;
440 net_device_perm_addr = perm_addr }
442 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_13", match_err));;
443 let net_device_parser_14 kernel_version bits =
445 | { name : 128 : offset(0), string;
446 next : zero+32 : offset(384), bigendian;
447 flags : zero+32 : offset(704), bigendian;
448 operstate : zero+8 : offset(784), bigendian;
449 mtu : zero+32 : offset(800), bigendian;
450 perm_addr : 256 : offset(896), string;
451 addr_len : zero+8 : offset(1152), bigendian;
452 ip_ptr : zero+32 : offset(1344), bigendian;
453 ip6_ptr : zero+32 : offset(1408), bigendian } ->
454 { net_device_addr_len = addr_len;
455 net_device_dev_list'next = None;
456 net_device_dev_list'next_offset = -1;
457 net_device_dev_list'next_adjustment = -1;
458 net_device_dev_list'prev = None;
459 net_device_flags = flags;
460 net_device_ip6_ptr = ip6_ptr;
461 net_device_ip_ptr = ip_ptr;
462 net_device_mtu = mtu;
463 net_device_name = name;
464 net_device_next = Some next;
465 net_device_operstate = operstate;
466 net_device_perm_addr = perm_addr }
468 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_14", match_err));;
469 let net_device_parser_15 kernel_version bits =
471 | { name : 128 : offset(0), string;
472 next : zero+64 : offset(576), littleendian;
473 flags : zero+32 : offset(1152), littleendian;
474 operstate : zero+8 : offset(1232), littleendian;
475 mtu : zero+32 : offset(1248), littleendian;
476 perm_addr : 256 : offset(1408), string;
477 addr_len : zero+8 : offset(1664), littleendian;
478 ip_ptr : zero+64 : offset(1984), littleendian;
479 ip6_ptr : zero+64 : offset(2112), littleendian } ->
480 { net_device_addr_len = addr_len;
481 net_device_dev_list'next = None;
482 net_device_dev_list'next_offset = -1;
483 net_device_dev_list'next_adjustment = -1;
484 net_device_dev_list'prev = None;
485 net_device_flags = flags;
486 net_device_ip6_ptr = ip6_ptr;
487 net_device_ip_ptr = ip_ptr;
488 net_device_mtu = mtu;
489 net_device_name = name;
490 net_device_next = Some next;
491 net_device_operstate = operstate;
492 net_device_perm_addr = perm_addr }
494 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_15", match_err));;
495 let net_device_parser_16 kernel_version bits =
497 | { name : 128 : offset(0), string;
498 next : zero+32 : offset(384), littleendian;
499 flags : zero+32 : offset(704), littleendian;
500 operstate : zero+8 : offset(784), littleendian;
501 mtu : zero+32 : offset(800), littleendian;
502 perm_addr : 256 : offset(896), string;
503 addr_len : zero+8 : offset(1152), littleendian;
504 ip_ptr : zero+32 : offset(1344), littleendian;
505 ip6_ptr : zero+32 : offset(1408), littleendian } ->
506 { net_device_addr_len = addr_len;
507 net_device_dev_list'next = None;
508 net_device_dev_list'next_offset = -1;
509 net_device_dev_list'next_adjustment = -1;
510 net_device_dev_list'prev = None;
511 net_device_flags = flags;
512 net_device_ip6_ptr = ip6_ptr;
513 net_device_ip_ptr = ip_ptr;
514 net_device_mtu = mtu;
515 net_device_name = name;
516 net_device_next = Some next;
517 net_device_operstate = operstate;
518 net_device_perm_addr = perm_addr }
520 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_16", match_err));;
521 let net_device_parser_17 kernel_version bits =
523 | { name : 128 : offset(0), string;
524 next : zero+64 : offset(576), bigendian;
525 flags : zero+32 : offset(1152), bigendian;
526 operstate : zero+8 : offset(1232), bigendian;
527 mtu : zero+32 : offset(1248), bigendian;
528 perm_addr : 256 : offset(1408), string;
529 addr_len : zero+8 : offset(1664), bigendian;
530 ip_ptr : zero+64 : offset(1984), bigendian;
531 ip6_ptr : zero+64 : offset(2112), bigendian } ->
532 { net_device_addr_len = addr_len;
533 net_device_dev_list'next = None;
534 net_device_dev_list'next_offset = -1;
535 net_device_dev_list'next_adjustment = -1;
536 net_device_dev_list'prev = None;
537 net_device_flags = flags;
538 net_device_ip6_ptr = ip6_ptr;
539 net_device_ip_ptr = ip_ptr;
540 net_device_mtu = mtu;
541 net_device_name = name;
542 net_device_next = Some next;
543 net_device_operstate = operstate;
544 net_device_perm_addr = perm_addr }
546 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_17", match_err));;
547 let net_parser_20 kernel_version bits =
549 | { dev_base_head'next : zero+32 : offset(416), littleendian;
550 dev_base_head'prev : zero+32 : offset(448), littleendian } ->
551 { net_dev_base_head'next = dev_base_head'next;
552 net_dev_base_head'next_offset = 52;
553 net_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
554 net_dev_base_head'prev = dev_base_head'prev;
555 net_dev_base_head'prev_offset = 56;
556 net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
558 raise (Virt_mem_types.ParseError ("net", "net_parser_20", match_err));;
559 let net_parser_21 kernel_version bits =
561 | { dev_base_head'next : zero+32 : offset(416), bigendian;
562 dev_base_head'prev : zero+32 : offset(448), bigendian } ->
563 { net_dev_base_head'next = dev_base_head'next;
564 net_dev_base_head'next_offset = 52;
565 net_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
566 net_dev_base_head'prev = dev_base_head'prev;
567 net_dev_base_head'prev_offset = 56;
568 net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
570 raise (Virt_mem_types.ParseError ("net", "net_parser_21", match_err));;
571 let net_parser_18 kernel_version bits =
573 | { dev_base_head'next : zero+64 : offset(768), littleendian;
574 dev_base_head'prev : zero+64 : offset(832), littleendian } ->
575 { net_dev_base_head'next = dev_base_head'next;
576 net_dev_base_head'next_offset = 96;
577 net_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
578 net_dev_base_head'prev = dev_base_head'prev;
579 net_dev_base_head'prev_offset = 104;
580 net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
582 raise (Virt_mem_types.ParseError ("net", "net_parser_18", match_err));;
583 let net_parser_19 kernel_version bits =
585 | { dev_base_head'next : zero+64 : offset(768), bigendian;
586 dev_base_head'prev : zero+64 : offset(832), bigendian } ->
587 { net_dev_base_head'next = dev_base_head'next;
588 net_dev_base_head'next_offset = 96;
589 net_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
590 net_dev_base_head'prev = dev_base_head'prev;
591 net_dev_base_head'prev_offset = 104;
592 net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
594 raise (Virt_mem_types.ParseError ("net", "net_parser_19", match_err));;
595 let in_device_parser_24 kernel_version bits =
597 | { ifa_list : zero+32 : offset(96), littleendian } ->
598 { in_device_ifa_list = ifa_list }
600 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_24", match_err));;
601 let in_device_parser_25 kernel_version bits =
603 | { ifa_list : zero+32 : offset(96), bigendian } ->
604 { in_device_ifa_list = ifa_list }
606 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_25", match_err));;
607 let in_device_parser_22 kernel_version bits =
609 | { ifa_list : zero+64 : offset(128), littleendian } ->
610 { in_device_ifa_list = ifa_list }
612 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_22", match_err));;
613 let in_device_parser_23 kernel_version bits =
615 | { ifa_list : zero+64 : offset(128), bigendian } ->
616 { in_device_ifa_list = ifa_list }
618 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_23", match_err));;
619 let inet6_dev_parser_28 kernel_version bits =
621 | { addr_list : zero+32 : offset(32), littleendian } ->
622 { inet6_dev_addr_list = addr_list }
624 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_28", match_err));;
625 let inet6_dev_parser_29 kernel_version bits =
627 | { addr_list : zero+32 : offset(32), bigendian } ->
628 { inet6_dev_addr_list = addr_list }
630 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_29", match_err));;
631 let inet6_dev_parser_26 kernel_version bits =
633 | { addr_list : zero+64 : offset(64), littleendian } ->
634 { inet6_dev_addr_list = addr_list }
636 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_26", match_err));;
637 let inet6_dev_parser_27 kernel_version bits =
639 | { addr_list : zero+64 : offset(64), bigendian } ->
640 { inet6_dev_addr_list = addr_list }
642 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_27", match_err));;
643 let in_ifaddr_parser_32 kernel_version bits =
645 | { ifa_next : zero+32 : offset(0), littleendian;
646 ifa_local : zero+32 : offset(128), littleendian;
647 ifa_address : zero+32 : offset(160), littleendian;
648 ifa_mask : zero+32 : offset(192), littleendian;
649 ifa_broadcast : zero+32 : offset(224), littleendian } ->
650 { in_ifaddr_ifa_address = ifa_address;
651 in_ifaddr_ifa_broadcast = ifa_broadcast;
652 in_ifaddr_ifa_local = ifa_local;
653 in_ifaddr_ifa_mask = ifa_mask;
654 in_ifaddr_ifa_next = ifa_next }
656 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_32", match_err));;
657 let in_ifaddr_parser_33 kernel_version bits =
659 | { ifa_next : zero+32 : offset(0), bigendian;
660 ifa_local : zero+32 : offset(128), bigendian;
661 ifa_address : zero+32 : offset(160), bigendian;
662 ifa_mask : zero+32 : offset(192), bigendian;
663 ifa_broadcast : zero+32 : offset(224), bigendian } ->
664 { in_ifaddr_ifa_address = ifa_address;
665 in_ifaddr_ifa_broadcast = ifa_broadcast;
666 in_ifaddr_ifa_local = ifa_local;
667 in_ifaddr_ifa_mask = ifa_mask;
668 in_ifaddr_ifa_next = ifa_next }
670 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_33", match_err));;
671 let in_ifaddr_parser_30 kernel_version bits =
673 | { ifa_next : zero+64 : offset(0), littleendian;
674 ifa_local : zero+32 : offset(256), littleendian;
675 ifa_address : zero+32 : offset(288), littleendian;
676 ifa_mask : zero+32 : offset(320), littleendian;
677 ifa_broadcast : zero+32 : offset(352), littleendian } ->
678 { in_ifaddr_ifa_address = ifa_address;
679 in_ifaddr_ifa_broadcast = ifa_broadcast;
680 in_ifaddr_ifa_local = ifa_local;
681 in_ifaddr_ifa_mask = ifa_mask;
682 in_ifaddr_ifa_next = ifa_next }
684 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_30", match_err));;
685 let in_ifaddr_parser_31 kernel_version bits =
687 | { ifa_next : zero+64 : offset(0), bigendian;
688 ifa_local : zero+32 : offset(256), bigendian;
689 ifa_address : zero+32 : offset(288), bigendian;
690 ifa_mask : zero+32 : offset(320), bigendian;
691 ifa_broadcast : zero+32 : offset(352), bigendian } ->
692 { in_ifaddr_ifa_address = ifa_address;
693 in_ifaddr_ifa_broadcast = ifa_broadcast;
694 in_ifaddr_ifa_local = ifa_local;
695 in_ifaddr_ifa_mask = ifa_mask;
696 in_ifaddr_ifa_next = ifa_next }
698 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_31", match_err));;
699 let inet6_ifaddr_parser_36 kernel_version bits =
701 | { prefix_len : zero+32 : offset(128), littleendian;
702 lst_next : zero+32 : offset(832), littleendian } ->
703 { inet6_ifaddr_lst_next = lst_next;
704 inet6_ifaddr_prefix_len = prefix_len }
706 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_36", match_err));;
707 let inet6_ifaddr_parser_34 kernel_version bits =
709 | { prefix_len : zero+32 : offset(128), littleendian;
710 lst_next : zero+64 : offset(1280), littleendian } ->
711 { inet6_ifaddr_lst_next = lst_next;
712 inet6_ifaddr_prefix_len = prefix_len }
714 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_34", match_err));;
715 let inet6_ifaddr_parser_35 kernel_version bits =
717 | { prefix_len : zero+32 : offset(128), bigendian;
718 lst_next : zero+64 : offset(1280), bigendian } ->
719 { inet6_ifaddr_lst_next = lst_next;
720 inet6_ifaddr_prefix_len = prefix_len }
722 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_35", match_err));;
723 let inet6_ifaddr_parser_37 kernel_version bits =
725 | { prefix_len : zero+32 : offset(128), bigendian;
726 lst_next : zero+32 : offset(800), bigendian } ->
727 { inet6_ifaddr_lst_next = lst_next;
728 inet6_ifaddr_prefix_len = prefix_len }
730 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_37", match_err));;
731 let inet6_ifaddr_parser_39 kernel_version bits =
733 | { prefix_len : zero+32 : offset(128), littleendian;
734 lst_next : zero+64 : offset(1216), littleendian } ->
735 { inet6_ifaddr_lst_next = lst_next;
736 inet6_ifaddr_prefix_len = prefix_len }
738 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_39", match_err));;
739 let inet6_ifaddr_parser_41 kernel_version bits =
741 | { prefix_len : zero+32 : offset(128), bigendian;
742 lst_next : zero+64 : offset(1216), bigendian } ->
743 { inet6_ifaddr_lst_next = lst_next;
744 inet6_ifaddr_prefix_len = prefix_len }
746 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_41", match_err));;
747 let inet6_ifaddr_parser_38 kernel_version bits =
749 | { prefix_len : zero+32 : offset(128), bigendian;
750 lst_next : zero+32 : offset(736), bigendian } ->
751 { inet6_ifaddr_lst_next = lst_next;
752 inet6_ifaddr_prefix_len = prefix_len }
754 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_38", match_err));;
755 let inet6_ifaddr_parser_40 kernel_version bits =
757 | { prefix_len : zero+32 : offset(128), littleendian;
758 lst_next : zero+32 : offset(736), littleendian } ->
759 { inet6_ifaddr_lst_next = lst_next;
760 inet6_ifaddr_prefix_len = prefix_len }
762 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_40", match_err));;
763 let size_of_task_struct =
765 StringMap.add "2.6.25.14-69.fc8.x86_64" 2496
766 (StringMap.add "2.6.25.14-108.fc9.ppc64" 2524
767 (StringMap.add "2.6.25.14-108.fc9.i586" 1832
768 (StringMap.add "2.6.25.14-108.fc9.i686" 1832
769 (StringMap.add "2.6.25.14-69.fc8.ppc" 1952
770 (StringMap.add "2.6.25.14-108.fc9.x86_64" 2496
771 (StringMap.add "2.6.25.11-97.fc9.x86_64" 2496
772 (StringMap.add "2.6.25.14-69.fc8.i586" 1832
773 (StringMap.add "2.6.20-1.2933.fc6.ppc" 1592
774 (StringMap.add "2.6.20-1.2933.fc6.x86_64" 1920
775 (StringMap.add "2.6.25.14-69.fc8.ppc64" 2524
776 (StringMap.add "2.6.25.11-97.fc9.i686"
779 "2.6.20-1.2933.fc6.i686" 1400
781 "2.6.20-1.2933.fc6.i586" 1400
783 "2.6.25.14-108.fc9.ppc" 1952
785 "2.6.20-1.2933.fc6.ppc64"
788 "2.6.25.14-69.fc8.i686"
789 1832 StringMap.empty))))))))))))))))
791 fun kernel_version ->
792 try StringMap.find kernel_version map
793 with | Not_found -> unknown_kernel_version kernel_version "task_struct";;
794 let size_of_net_device =
796 StringMap.add "2.6.25.14-69.fc8.x86_64" 1752
797 (StringMap.add "2.6.25.14-108.fc9.ppc64" 1776
798 (StringMap.add "2.6.25.14-108.fc9.i586" 1212
799 (StringMap.add "2.6.25.14-108.fc9.i686" 1212
800 (StringMap.add "2.6.25.14-69.fc8.ppc" 904
801 (StringMap.add "2.6.25.14-108.fc9.x86_64" 1752
802 (StringMap.add "2.6.25.11-97.fc9.x86_64" 1752
803 (StringMap.add "2.6.25.14-69.fc8.i586" 1212
804 (StringMap.add "2.6.20-1.2933.fc6.ppc" 668
805 (StringMap.add "2.6.20-1.2933.fc6.x86_64" 1260
806 (StringMap.add "2.6.25.14-69.fc8.ppc64" 1776
807 (StringMap.add "2.6.25.11-97.fc9.i686"
810 "2.6.20-1.2933.fc6.i686" 912
812 "2.6.20-1.2933.fc6.i586" 912
814 "2.6.25.14-108.fc9.ppc" 904
816 "2.6.20-1.2933.fc6.ppc64"
819 "2.6.25.14-69.fc8.i686"
820 1212 StringMap.empty))))))))))))))))
822 fun kernel_version ->
823 try StringMap.find kernel_version map
824 with | Not_found -> unknown_kernel_version kernel_version "net_device";;
827 StringMap.add "2.6.25.14-69.fc8.x86_64" 488
828 (StringMap.add "2.6.25.14-108.fc9.ppc64" 488
829 (StringMap.add "2.6.25.14-108.fc9.i586" 284
830 (StringMap.add "2.6.25.14-108.fc9.i686" 284
831 (StringMap.add "2.6.25.14-69.fc8.ppc" 276
832 (StringMap.add "2.6.25.14-108.fc9.x86_64" 488
833 (StringMap.add "2.6.25.11-97.fc9.x86_64" 488
834 (StringMap.add "2.6.25.14-69.fc8.i586" 284
835 (StringMap.add "2.6.25.14-69.fc8.ppc64" 488
836 (StringMap.add "2.6.25.11-97.fc9.i686" 284
837 (StringMap.add "2.6.25.14-108.fc9.ppc" 276
838 (StringMap.add "2.6.25.14-69.fc8.i686"
839 284 StringMap.empty)))))))))))
841 fun kernel_version ->
842 try StringMap.find kernel_version map
843 with | Not_found -> unknown_kernel_version kernel_version "net";;
844 let size_of_in_device =
846 StringMap.add "2.6.25.14-69.fc8.x86_64" 368
847 (StringMap.add "2.6.25.14-108.fc9.ppc64" 368
848 (StringMap.add "2.6.25.14-108.fc9.i586" 244
849 (StringMap.add "2.6.25.14-108.fc9.i686" 244
850 (StringMap.add "2.6.25.14-69.fc8.ppc" 236
851 (StringMap.add "2.6.25.14-108.fc9.x86_64" 368
852 (StringMap.add "2.6.25.11-97.fc9.x86_64" 368
853 (StringMap.add "2.6.25.14-69.fc8.i586" 244
854 (StringMap.add "2.6.20-1.2933.fc6.ppc" 212
855 (StringMap.add "2.6.20-1.2933.fc6.x86_64" 328
856 (StringMap.add "2.6.25.14-69.fc8.ppc64" 368
857 (StringMap.add "2.6.25.11-97.fc9.i686"
860 "2.6.20-1.2933.fc6.i686" 216
862 "2.6.20-1.2933.fc6.i586" 216
864 "2.6.25.14-108.fc9.ppc" 236
866 "2.6.20-1.2933.fc6.ppc64"
869 "2.6.25.14-69.fc8.i686"
870 244 StringMap.empty))))))))))))))))
872 fun kernel_version ->
873 try StringMap.find kernel_version map
874 with | Not_found -> unknown_kernel_version kernel_version "in_device";;
875 let size_of_inet6_dev =
877 StringMap.add "2.6.25.14-69.fc8.x86_64" 536
878 (StringMap.add "2.6.25.14-108.fc9.ppc64" 536
879 (StringMap.add "2.6.25.14-108.fc9.i586" 356
880 (StringMap.add "2.6.25.14-108.fc9.i686" 356
881 (StringMap.add "2.6.25.14-69.fc8.ppc" 348
882 (StringMap.add "2.6.25.14-108.fc9.x86_64" 536
883 (StringMap.add "2.6.25.11-97.fc9.x86_64" 536
884 (StringMap.add "2.6.25.14-69.fc8.i586" 356
885 (StringMap.add "2.6.20-1.2933.fc6.ppc" 284
886 (StringMap.add "2.6.20-1.2933.fc6.x86_64" 464
887 (StringMap.add "2.6.25.14-69.fc8.ppc64" 536
888 (StringMap.add "2.6.25.11-97.fc9.i686"
891 "2.6.20-1.2933.fc6.i686" 292
893 "2.6.20-1.2933.fc6.i586" 292
895 "2.6.25.14-108.fc9.ppc" 348
897 "2.6.20-1.2933.fc6.ppc64"
900 "2.6.25.14-69.fc8.i686"
901 356 StringMap.empty))))))))))))))))
903 fun kernel_version ->
904 try StringMap.find kernel_version map
905 with | Not_found -> unknown_kernel_version kernel_version "inet6_dev";;
906 let size_of_in_ifaddr =
908 StringMap.add "2.6.25.14-69.fc8.x86_64" 71
909 (StringMap.add "2.6.25.14-108.fc9.ppc64" 71
910 (StringMap.add "2.6.25.14-108.fc9.i586" 55
911 (StringMap.add "2.6.25.14-108.fc9.i686" 55
912 (StringMap.add "2.6.25.14-69.fc8.ppc" 55
913 (StringMap.add "2.6.25.14-108.fc9.x86_64" 71
914 (StringMap.add "2.6.25.11-97.fc9.x86_64" 71
915 (StringMap.add "2.6.25.14-69.fc8.i586" 55
916 (StringMap.add "2.6.20-1.2933.fc6.ppc" 55
917 (StringMap.add "2.6.20-1.2933.fc6.x86_64" 71
918 (StringMap.add "2.6.25.14-69.fc8.ppc64" 71
919 (StringMap.add "2.6.25.11-97.fc9.i686" 55
921 "2.6.20-1.2933.fc6.i686" 55
923 "2.6.20-1.2933.fc6.i586" 55
925 "2.6.25.14-108.fc9.ppc" 55
927 "2.6.20-1.2933.fc6.ppc64"
930 "2.6.25.14-69.fc8.i686"
931 55 StringMap.empty))))))))))))))))
933 fun kernel_version ->
934 try StringMap.find kernel_version map
935 with | Not_found -> unknown_kernel_version kernel_version "in_ifaddr";;
936 let size_of_inet6_ifaddr =
938 StringMap.add "2.6.25.14-69.fc8.x86_64" 200
939 (StringMap.add "2.6.25.14-108.fc9.ppc64" 200
940 (StringMap.add "2.6.25.14-108.fc9.i586" 128
941 (StringMap.add "2.6.25.14-108.fc9.i686" 128
942 (StringMap.add "2.6.25.14-69.fc8.ppc" 124
943 (StringMap.add "2.6.25.14-108.fc9.x86_64" 200
944 (StringMap.add "2.6.25.11-97.fc9.x86_64" 200
945 (StringMap.add "2.6.25.14-69.fc8.i586" 128
946 (StringMap.add "2.6.20-1.2933.fc6.ppc" 116
947 (StringMap.add "2.6.20-1.2933.fc6.x86_64" 192
948 (StringMap.add "2.6.25.14-69.fc8.ppc64" 200
949 (StringMap.add "2.6.25.11-97.fc9.i686"
952 "2.6.20-1.2933.fc6.i686" 116
954 "2.6.20-1.2933.fc6.i586" 116
956 "2.6.25.14-108.fc9.ppc" 124
958 "2.6.20-1.2933.fc6.ppc64"
961 "2.6.25.14-69.fc8.i686"
962 128 StringMap.empty))))))))))))))))
964 fun kernel_version ->
965 try StringMap.find kernel_version map
967 | Not_found -> unknown_kernel_version kernel_version "inet6_ifaddr";;
968 let parser_of_task_struct =
970 StringMap.add "2.6.25.14-69.fc8.x86_64" task_struct_parser_1
971 (StringMap.add "2.6.25.14-108.fc9.ppc64" task_struct_parser_2
972 (StringMap.add "2.6.25.14-108.fc9.i586" task_struct_parser_3
973 (StringMap.add "2.6.25.14-108.fc9.i686" task_struct_parser_4
974 (StringMap.add "2.6.25.14-69.fc8.ppc" task_struct_parser_5
975 (StringMap.add "2.6.25.14-108.fc9.x86_64"
977 (StringMap.add "2.6.25.11-97.fc9.x86_64"
979 (StringMap.add "2.6.25.14-69.fc8.i586"
981 (StringMap.add "2.6.20-1.2933.fc6.ppc"
983 (StringMap.add "2.6.20-1.2933.fc6.x86_64"
985 (StringMap.add "2.6.25.14-69.fc8.ppc64"
987 (StringMap.add "2.6.25.11-97.fc9.i686"
990 "2.6.20-1.2933.fc6.i686"
993 "2.6.20-1.2933.fc6.i586"
996 "2.6.25.14-108.fc9.ppc"
999 "2.6.20-1.2933.fc6.ppc64"
1000 task_struct_parser_9
1002 "2.6.25.14-69.fc8.i686"
1003 task_struct_parser_4
1004 StringMap.empty))))))))))))))))
1006 fun kernel_version ->
1007 try StringMap.find kernel_version map
1008 with | Not_found -> unknown_kernel_version kernel_version "task_struct";;
1009 let parser_of_net_device =
1011 StringMap.add "2.6.25.14-69.fc8.x86_64" net_device_parser_10
1012 (StringMap.add "2.6.25.14-108.fc9.ppc64" net_device_parser_11
1013 (StringMap.add "2.6.25.14-108.fc9.i586" net_device_parser_12
1014 (StringMap.add "2.6.25.14-108.fc9.i686" net_device_parser_12
1015 (StringMap.add "2.6.25.14-69.fc8.ppc" net_device_parser_13
1016 (StringMap.add "2.6.25.14-108.fc9.x86_64"
1017 net_device_parser_10
1018 (StringMap.add "2.6.25.11-97.fc9.x86_64"
1019 net_device_parser_10
1020 (StringMap.add "2.6.25.14-69.fc8.i586"
1021 net_device_parser_12
1022 (StringMap.add "2.6.20-1.2933.fc6.ppc"
1023 net_device_parser_14
1024 (StringMap.add "2.6.20-1.2933.fc6.x86_64"
1025 net_device_parser_15
1026 (StringMap.add "2.6.25.14-69.fc8.ppc64"
1027 net_device_parser_11
1028 (StringMap.add "2.6.25.11-97.fc9.i686"
1029 net_device_parser_12
1031 "2.6.20-1.2933.fc6.i686"
1032 net_device_parser_16
1034 "2.6.20-1.2933.fc6.i586"
1035 net_device_parser_16
1037 "2.6.25.14-108.fc9.ppc"
1038 net_device_parser_13
1040 "2.6.20-1.2933.fc6.ppc64"
1041 net_device_parser_17
1043 "2.6.25.14-69.fc8.i686"
1044 net_device_parser_12
1045 StringMap.empty))))))))))))))))
1047 fun kernel_version ->
1048 try StringMap.find kernel_version map
1049 with | Not_found -> unknown_kernel_version kernel_version "net_device";;
1052 StringMap.add "2.6.25.14-69.fc8.x86_64" net_parser_18
1053 (StringMap.add "2.6.25.14-108.fc9.ppc64" net_parser_19
1054 (StringMap.add "2.6.25.14-108.fc9.i586" net_parser_20
1055 (StringMap.add "2.6.25.14-108.fc9.i686" net_parser_20
1056 (StringMap.add "2.6.25.14-69.fc8.ppc" net_parser_21
1057 (StringMap.add "2.6.25.14-108.fc9.x86_64" net_parser_18
1058 (StringMap.add "2.6.25.11-97.fc9.x86_64" net_parser_18
1059 (StringMap.add "2.6.25.14-69.fc8.i586" net_parser_20
1060 (StringMap.add "2.6.25.14-69.fc8.ppc64"
1062 (StringMap.add "2.6.25.11-97.fc9.i686"
1064 (StringMap.add "2.6.25.14-108.fc9.ppc"
1066 (StringMap.add "2.6.25.14-69.fc8.i686"
1067 net_parser_20 StringMap.empty)))))))))))
1069 fun kernel_version ->
1070 try StringMap.find kernel_version map
1071 with | Not_found -> unknown_kernel_version kernel_version "net";;
1072 let parser_of_in_device =
1074 StringMap.add "2.6.25.14-69.fc8.x86_64" in_device_parser_22
1075 (StringMap.add "2.6.25.14-108.fc9.ppc64" in_device_parser_23
1076 (StringMap.add "2.6.25.14-108.fc9.i586" in_device_parser_24
1077 (StringMap.add "2.6.25.14-108.fc9.i686" in_device_parser_24
1078 (StringMap.add "2.6.25.14-69.fc8.ppc" in_device_parser_25
1079 (StringMap.add "2.6.25.14-108.fc9.x86_64"
1081 (StringMap.add "2.6.25.11-97.fc9.x86_64"
1083 (StringMap.add "2.6.25.14-69.fc8.i586"
1085 (StringMap.add "2.6.20-1.2933.fc6.ppc"
1087 (StringMap.add "2.6.20-1.2933.fc6.x86_64"
1089 (StringMap.add "2.6.25.14-69.fc8.ppc64"
1091 (StringMap.add "2.6.25.11-97.fc9.i686"
1094 "2.6.20-1.2933.fc6.i686"
1097 "2.6.20-1.2933.fc6.i586"
1100 "2.6.25.14-108.fc9.ppc"
1103 "2.6.20-1.2933.fc6.ppc64"
1106 "2.6.25.14-69.fc8.i686"
1108 StringMap.empty))))))))))))))))
1110 fun kernel_version ->
1111 try StringMap.find kernel_version map
1112 with | Not_found -> unknown_kernel_version kernel_version "in_device";;
1113 let parser_of_inet6_dev =
1115 StringMap.add "2.6.25.14-69.fc8.x86_64" inet6_dev_parser_26
1116 (StringMap.add "2.6.25.14-108.fc9.ppc64" inet6_dev_parser_27
1117 (StringMap.add "2.6.25.14-108.fc9.i586" inet6_dev_parser_28
1118 (StringMap.add "2.6.25.14-108.fc9.i686" inet6_dev_parser_28
1119 (StringMap.add "2.6.25.14-69.fc8.ppc" inet6_dev_parser_29
1120 (StringMap.add "2.6.25.14-108.fc9.x86_64"
1122 (StringMap.add "2.6.25.11-97.fc9.x86_64"
1124 (StringMap.add "2.6.25.14-69.fc8.i586"
1126 (StringMap.add "2.6.20-1.2933.fc6.ppc"
1128 (StringMap.add "2.6.20-1.2933.fc6.x86_64"
1130 (StringMap.add "2.6.25.14-69.fc8.ppc64"
1132 (StringMap.add "2.6.25.11-97.fc9.i686"
1135 "2.6.20-1.2933.fc6.i686"
1138 "2.6.20-1.2933.fc6.i586"
1141 "2.6.25.14-108.fc9.ppc"
1144 "2.6.20-1.2933.fc6.ppc64"
1147 "2.6.25.14-69.fc8.i686"
1149 StringMap.empty))))))))))))))))
1151 fun kernel_version ->
1152 try StringMap.find kernel_version map
1153 with | Not_found -> unknown_kernel_version kernel_version "inet6_dev";;
1154 let parser_of_in_ifaddr =
1156 StringMap.add "2.6.25.14-69.fc8.x86_64" in_ifaddr_parser_30
1157 (StringMap.add "2.6.25.14-108.fc9.ppc64" in_ifaddr_parser_31
1158 (StringMap.add "2.6.25.14-108.fc9.i586" in_ifaddr_parser_32
1159 (StringMap.add "2.6.25.14-108.fc9.i686" in_ifaddr_parser_32
1160 (StringMap.add "2.6.25.14-69.fc8.ppc" in_ifaddr_parser_33
1161 (StringMap.add "2.6.25.14-108.fc9.x86_64"
1163 (StringMap.add "2.6.25.11-97.fc9.x86_64"
1165 (StringMap.add "2.6.25.14-69.fc8.i586"
1167 (StringMap.add "2.6.20-1.2933.fc6.ppc"
1169 (StringMap.add "2.6.20-1.2933.fc6.x86_64"
1171 (StringMap.add "2.6.25.14-69.fc8.ppc64"
1173 (StringMap.add "2.6.25.11-97.fc9.i686"
1176 "2.6.20-1.2933.fc6.i686"
1179 "2.6.20-1.2933.fc6.i586"
1182 "2.6.25.14-108.fc9.ppc"
1185 "2.6.20-1.2933.fc6.ppc64"
1188 "2.6.25.14-69.fc8.i686"
1190 StringMap.empty))))))))))))))))
1192 fun kernel_version ->
1193 try StringMap.find kernel_version map
1194 with | Not_found -> unknown_kernel_version kernel_version "in_ifaddr";;
1195 let parser_of_inet6_ifaddr =
1197 StringMap.add "2.6.25.14-69.fc8.x86_64" inet6_ifaddr_parser_34
1198 (StringMap.add "2.6.25.14-108.fc9.ppc64" inet6_ifaddr_parser_35
1199 (StringMap.add "2.6.25.14-108.fc9.i586" inet6_ifaddr_parser_36
1200 (StringMap.add "2.6.25.14-108.fc9.i686" inet6_ifaddr_parser_36
1201 (StringMap.add "2.6.25.14-69.fc8.ppc" inet6_ifaddr_parser_37
1202 (StringMap.add "2.6.25.14-108.fc9.x86_64"
1203 inet6_ifaddr_parser_34
1204 (StringMap.add "2.6.25.11-97.fc9.x86_64"
1205 inet6_ifaddr_parser_34
1206 (StringMap.add "2.6.25.14-69.fc8.i586"
1207 inet6_ifaddr_parser_36
1208 (StringMap.add "2.6.20-1.2933.fc6.ppc"
1209 inet6_ifaddr_parser_38
1210 (StringMap.add "2.6.20-1.2933.fc6.x86_64"
1211 inet6_ifaddr_parser_39
1212 (StringMap.add "2.6.25.14-69.fc8.ppc64"
1213 inet6_ifaddr_parser_35
1214 (StringMap.add "2.6.25.11-97.fc9.i686"
1215 inet6_ifaddr_parser_36
1217 "2.6.20-1.2933.fc6.i686"
1218 inet6_ifaddr_parser_40
1220 "2.6.20-1.2933.fc6.i586"
1221 inet6_ifaddr_parser_40
1223 "2.6.25.14-108.fc9.ppc"
1224 inet6_ifaddr_parser_37
1226 "2.6.20-1.2933.fc6.ppc64"
1227 inet6_ifaddr_parser_41
1229 "2.6.25.14-69.fc8.i686"
1230 inet6_ifaddr_parser_36
1231 StringMap.empty))))))))))))))))
1233 fun kernel_version ->
1234 try StringMap.find kernel_version map
1236 | Not_found -> unknown_kernel_version kernel_version "inet6_ifaddr";;
1237 let rec task_struct_follower kernel_version load map addr =
1238 if (addr <> 0L) && (not (AddrMap.mem addr map))
1240 (let parser_ = parser_of_task_struct kernel_version in
1241 let total_size = size_of_task_struct kernel_version in
1242 let bits = load "task_struct" addr total_size in
1243 let data = parser_ kernel_version bits in
1246 ("task_struct", (Some (total_size, bits, Task_struct data))) map in
1248 match data.task_struct_run_list'next with
1251 let offset = data.task_struct_run_list'next_offset
1252 and adj = data.task_struct_run_list'next_adjustment in
1253 let offset = Int64.of_int offset and adj = Int64.of_int adj in
1254 let addr = Int64.sub (Int64.add addr offset) adj in
1255 let map = AddrMap.add addr ("task_struct", None) map in
1256 let dest_addr = Int64.sub dest_addr adj in
1257 let map = task_struct_follower kernel_version load map dest_addr
1259 let dest_addr = data.task_struct_tasks'next in
1261 let offset = data.task_struct_tasks'next_offset
1262 and adj = data.task_struct_tasks'next_adjustment in
1263 let offset = Int64.of_int offset and adj = Int64.of_int adj in
1264 let addr = Int64.sub (Int64.add addr offset) adj in
1265 let map = AddrMap.add addr ("task_struct", None) map in
1266 let dest_addr = Int64.sub dest_addr adj in
1267 let map = task_struct_follower kernel_version load map dest_addr
1271 and net_device_follower kernel_version load map addr =
1272 if (addr <> 0L) && (not (AddrMap.mem addr map))
1274 (let parser_ = parser_of_net_device kernel_version in
1275 let total_size = size_of_net_device kernel_version in
1276 let bits = load "net_device" addr total_size in
1277 let data = parser_ kernel_version bits in
1280 ("net_device", (Some (total_size, bits, Net_device data))) map in
1282 match data.net_device_dev_list'next with
1285 let offset = data.net_device_dev_list'next_offset
1286 and adj = data.net_device_dev_list'next_adjustment in
1287 let offset = Int64.of_int offset and adj = Int64.of_int adj in
1288 let addr = Int64.sub (Int64.add addr offset) adj in
1289 let map = AddrMap.add addr ("net_device", None) map in
1290 let dest_addr = Int64.sub dest_addr adj in
1291 let map = net_device_follower kernel_version load map dest_addr
1293 let dest_addr = data.net_device_ip6_ptr in
1295 let map = inet6_dev_follower kernel_version load map dest_addr in map in
1296 let dest_addr = data.net_device_ip_ptr in
1298 let map = in_device_follower kernel_version load map dest_addr in map in
1300 match data.net_device_next with
1303 let map = net_device_follower kernel_version load map dest_addr
1307 and net_follower kernel_version load map addr =
1308 if (addr <> 0L) && (not (AddrMap.mem addr map))
1310 (let parser_ = parser_of_net kernel_version in
1311 let total_size = size_of_net kernel_version in
1312 let bits = load "net" addr total_size in
1313 let data = parser_ kernel_version bits in
1315 AddrMap.add addr ("net", (Some (total_size, bits, Net data))) map in
1316 let dest_addr = data.net_dev_base_head'next in
1318 let offset = data.net_dev_base_head'next_offset
1319 and adj = data.net_dev_base_head'next_adjustment in
1320 let offset = Int64.of_int offset and adj = Int64.of_int adj in
1321 let addr = Int64.sub (Int64.add addr offset) adj in
1322 let map = AddrMap.add addr ("net_device", None) map in
1323 let dest_addr = Int64.sub dest_addr adj in
1324 let map = net_device_follower kernel_version load map dest_addr in map in
1325 let dest_addr = data.net_dev_base_head'prev in
1327 let offset = data.net_dev_base_head'prev_offset
1328 and adj = data.net_dev_base_head'prev_adjustment in
1329 let offset = Int64.of_int offset and adj = Int64.of_int adj in
1330 let addr = Int64.sub (Int64.add addr offset) adj in
1331 let map = AddrMap.add addr ("net_device", None) map in
1332 let dest_addr = Int64.sub dest_addr adj in
1333 let map = net_device_follower kernel_version load map dest_addr in map
1336 and in_device_follower kernel_version load map addr =
1337 if (addr <> 0L) && (not (AddrMap.mem addr map))
1339 (let parser_ = parser_of_in_device kernel_version in
1340 let total_size = size_of_in_device kernel_version in
1341 let bits = load "in_device" addr total_size in
1342 let data = parser_ kernel_version bits in
1345 ("in_device", (Some (total_size, bits, In_device data))) map in
1346 let dest_addr = data.in_device_ifa_list in
1348 let map = in_ifaddr_follower kernel_version load map dest_addr in map
1351 and inet6_dev_follower kernel_version load map addr =
1352 if (addr <> 0L) && (not (AddrMap.mem addr map))
1354 (let parser_ = parser_of_inet6_dev kernel_version in
1355 let total_size = size_of_inet6_dev kernel_version in
1356 let bits = load "inet6_dev" addr total_size in
1357 let data = parser_ kernel_version bits in
1360 ("inet6_dev", (Some (total_size, bits, Inet6_dev data))) map in
1361 let dest_addr = data.inet6_dev_addr_list in
1363 let map = inet6_ifaddr_follower kernel_version load map dest_addr
1367 and in_ifaddr_follower kernel_version load map addr =
1368 if (addr <> 0L) && (not (AddrMap.mem addr map))
1370 (let parser_ = parser_of_in_ifaddr kernel_version in
1371 let total_size = size_of_in_ifaddr kernel_version in
1372 let bits = load "in_ifaddr" addr total_size in
1373 let data = parser_ kernel_version bits in
1376 ("in_ifaddr", (Some (total_size, bits, In_ifaddr data))) map in
1377 let dest_addr = data.in_ifaddr_ifa_next in
1379 let map = in_ifaddr_follower kernel_version load map dest_addr in map
1382 and inet6_ifaddr_follower kernel_version load map addr =
1383 if (addr <> 0L) && (not (AddrMap.mem addr map))
1385 (let parser_ = parser_of_inet6_ifaddr kernel_version in
1386 let total_size = size_of_inet6_ifaddr kernel_version in
1387 let bits = load "inet6_ifaddr" addr total_size in
1388 let data = parser_ kernel_version bits in
1391 ("inet6_ifaddr", (Some (total_size, bits, Inet6_ifaddr data))) map in
1392 let dest_addr = data.inet6_ifaddr_lst_next in
1394 let map = inet6_ifaddr_follower kernel_version load map dest_addr