From: Richard W.M. Jones <"Richard W.M. Jones "> Date: Mon, 11 Aug 2008 17:20:03 +0000 (+0100) Subject: Using optional fields, navigate net_device list in its various incarnations. X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=14c916e5692f6d1986a10b88d03b41349dcb729a;p=virt-mem.git Using optional fields, navigate net_device list in its various incarnations. --- diff --git a/lib/.depend b/lib/.depend index 99f71ba..ccea623 100644 --- a/lib/.depend +++ b/lib/.depend @@ -1,16 +1,21 @@ -kernel_net_device.cmi: virt_mem_mmap.cmi -kernel_task_struct.cmi: virt_mem_mmap.cmi +kernel_net_device.cmi: virt_mem_types.cmi virt_mem_mmap.cmi +kernel_task_struct.cmi: virt_mem_types.cmi virt_mem_mmap.cmi virt_mem_kallsyms.cmi: virt_mem_types.cmi virt_mem_ksyms.cmi: virt_mem_types.cmi virt_mem.cmi: virt_mem_types.cmi virt_mem_mmap.cmi: virt_mem_utils.cmo +virt_mem_net_devices.cmi: virt_mem_types.cmi virt_mem_mmap.cmi virt_mem_tasks.cmi: virt_mem_types.cmi virt_mem_mmap.cmi virt_mem_types.cmi: virt_mem_utils.cmo virt_mem_mmap.cmi virt_mem_utsname.cmi: virt_mem_types.cmi -kernel_net_device.cmo: virt_mem_mmap.cmi kernel_net_device.cmi -kernel_net_device.cmx: virt_mem_mmap.cmx kernel_net_device.cmi -kernel_task_struct.cmo: virt_mem_mmap.cmi kernel_task_struct.cmi -kernel_task_struct.cmx: virt_mem_mmap.cmx kernel_task_struct.cmi +kernel_net_device.cmo: virt_mem_types.cmi virt_mem_mmap.cmi \ + kernel_net_device.cmi +kernel_net_device.cmx: virt_mem_types.cmx virt_mem_mmap.cmx \ + kernel_net_device.cmi +kernel_task_struct.cmo: virt_mem_types.cmi virt_mem_mmap.cmi \ + kernel_task_struct.cmi +kernel_task_struct.cmx: virt_mem_types.cmx virt_mem_mmap.cmx \ + kernel_task_struct.cmi test_mmap.cmo: virt_mem_mmap.cmi test_mmap.cmx: virt_mem_mmap.cmx virt_mem_capture.cmo: virt_mem_types.cmi virt_mem_gettext.cmo virt_mem.cmi @@ -26,15 +31,21 @@ virt_mem_ksyms.cmo: virt_mem_utils.cmo virt_mem_types.cmi virt_mem_mmap.cmi \ virt_mem_ksyms.cmx: virt_mem_utils.cmx virt_mem_types.cmx virt_mem_mmap.cmx \ virt_mem_gettext.cmx virt_mem_ksyms.cmi virt_mem.cmo: virt_mem_version.cmo virt_mem_utsname.cmi virt_mem_utils.cmo \ - virt_mem_types.cmi virt_mem_tasks.cmi virt_mem_mmap.cmi \ - virt_mem_ksyms.cmi virt_mem_kernels.cmo virt_mem_kallsyms.cmi \ - virt_mem_gettext.cmo virt_mem.cmi + virt_mem_types.cmi virt_mem_tasks.cmi virt_mem_net_devices.cmi \ + virt_mem_mmap.cmi virt_mem_ksyms.cmi virt_mem_kernels.cmo \ + virt_mem_kallsyms.cmi virt_mem_gettext.cmo virt_mem.cmi virt_mem.cmx: virt_mem_version.cmx virt_mem_utsname.cmx virt_mem_utils.cmx \ - virt_mem_types.cmx virt_mem_tasks.cmx virt_mem_mmap.cmx \ - virt_mem_ksyms.cmx virt_mem_kernels.cmx virt_mem_kallsyms.cmx \ - virt_mem_gettext.cmx virt_mem.cmi + virt_mem_types.cmx virt_mem_tasks.cmx virt_mem_net_devices.cmx \ + virt_mem_mmap.cmx virt_mem_ksyms.cmx virt_mem_kernels.cmx \ + virt_mem_kallsyms.cmx virt_mem_gettext.cmx virt_mem.cmi virt_mem_mmap.cmo: virt_mem_utils.cmo virt_mem_mmap.cmi virt_mem_mmap.cmx: virt_mem_utils.cmx virt_mem_mmap.cmi +virt_mem_net_devices.cmo: virt_mem_utils.cmo virt_mem_types.cmi \ + virt_mem_mmap.cmi virt_mem_gettext.cmo kernel_net_device.cmi \ + virt_mem_net_devices.cmi +virt_mem_net_devices.cmx: virt_mem_utils.cmx virt_mem_types.cmx \ + virt_mem_mmap.cmx virt_mem_gettext.cmx kernel_net_device.cmx \ + virt_mem_net_devices.cmi virt_mem_tasks.cmo: virt_mem_utils.cmo virt_mem_types.cmi virt_mem_mmap.cmi \ virt_mem_gettext.cmo kernel_task_struct.cmi virt_mem_tasks.cmi virt_mem_tasks.cmx: virt_mem_utils.cmx virt_mem_types.cmx virt_mem_mmap.cmx \ diff --git a/lib/Makefile.in b/lib/Makefile.in index 40ef195..ee387f8 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -53,13 +53,14 @@ OBJS = virt_mem_gettext.cmo \ virt_mem_utils.cmo \ virt_mem_mmap_c.o \ virt_mem_mmap.cmo \ + virt_mem_types.cmo \ kernel_task_struct.cmo \ kernel_net_device.cmo \ - virt_mem_types.cmo \ virt_mem_ksyms.cmo \ virt_mem_kallsyms.cmo \ virt_mem_utsname.cmo \ virt_mem_tasks.cmo \ + virt_mem_net_devices.cmo \ virt_mem.cmo \ virt_mem_capture.cmo XOBJS = $(OBJS:%.cmo=%.cmx) diff --git a/lib/kernel_net_device.ml b/lib/kernel_net_device.ml index df704d2..c31e34f 100644 --- a/lib/kernel_net_device.ml +++ b/lib/kernel_net_device.ml @@ -7,684 +7,1217 @@ * To update this file from the latest kernel database, it is recommended * that you do 'make update-kernel-structs'. *) + let zero = 0;; let struct_name = "net_device";; let match_err = "failed to match kernel structure";; -exception ParseError of string * string * string;; -type t = { net_device_dev_addr : string; net_device_name : string };; +type t = + { net_device_dev_list'prev : Virt_mem_mmap.addr option; + net_device_dev_list'next : Virt_mem_mmap.addr option; + net_device_next : Virt_mem_mmap.addr option; net_device_name : string; + net_device_dev_addr : string + };; +type fs_t = + { __fs_net_device_dev_list'prev : Virt_mem_types.fieldsig; + __fs_net_device_dev_list'next : Virt_mem_types.fieldsig; + __fs_net_device_next : Virt_mem_types.fieldsig; + __fs_net_device_name : Virt_mem_types.fieldsig; + __fs_net_device_dev_addr : Virt_mem_types.fieldsig + };; +let fieldsig_1 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_2 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 408; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_3 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 320; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_4 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 316; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_5 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 348; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_6 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_7 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 80; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 552; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_8 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 80; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 536; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_9 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 216; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_10 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_11 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 212; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_12 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 312; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_13 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 80; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 552; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_14 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 324; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_15 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 316; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_16 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 80; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 536; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_17 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 320; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_18 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 332; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_19 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 80; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 584; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_20 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 80; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 584; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_21 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 216; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_22 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 336; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_23 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 212; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_24 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_next = + { Virt_mem_types.field_available = true; field_offset = 72; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 328; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; +let fieldsig_25 = + { + (()) + with + __fs_net_device_name = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_net_device_dev_list'next = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_net_device_dev_list'prev = + { Virt_mem_types.field_available = true; field_offset = 52; }; + __fs_net_device_dev_addr = + { Virt_mem_types.field_available = true; field_offset = 344; }; + __fs_net_device_next = + { Virt_mem_types.field_available = false; field_offset = (-1); }; + };; let parser_1 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+32 : offset(384), littleendian; net_device_dev_addr : 256 : offset(2240), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_1", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_1", match_err));; let parser_2 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), littleendian; + net_device_dev_list'prev : zero+32 : offset(416), littleendian; net_device_dev_addr : 256 : offset(3264), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_2", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_2", match_err));; let parser_3 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), littleendian; + net_device_dev_list'prev : zero+32 : offset(416), littleendian; net_device_dev_addr : 256 : offset(2560), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_3", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_3", match_err));; let parser_4 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), littleendian; + net_device_dev_list'prev : zero+32 : offset(416), littleendian; net_device_dev_addr : 256 : offset(2528), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_4", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_4", match_err));; let parser_5 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), littleendian; + net_device_dev_list'prev : zero+32 : offset(416), littleendian; net_device_dev_addr : 256 : offset(2784), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_5", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_5", match_err));; let parser_6 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+64 : offset(576), littleendian; net_device_dev_addr : 256 : offset(3392), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_6", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_6", match_err));; let parser_7 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+64 : offset(576), littleendian; + net_device_dev_list'prev : zero+64 : offset(640), littleendian; net_device_dev_addr : 256 : offset(4416), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 72L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 80L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_7", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_7", match_err));; let parser_8 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+64 : offset(576), littleendian; + net_device_dev_list'prev : zero+64 : offset(640), littleendian; net_device_dev_addr : 256 : offset(4288), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 72L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 80L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_8", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_8", match_err));; let parser_9 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+32 : offset(384), bigendian; net_device_dev_addr : 256 : offset(1728), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_9", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_9", match_err));; let parser_10 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+64 : offset(576), bigendian; net_device_dev_addr : 256 : offset(3392), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_10", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_10", match_err));; let parser_11 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+32 : offset(384), bigendian; net_device_dev_addr : 256 : offset(1696), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_11", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_11", match_err));; let parser_12 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), bigendian; + net_device_dev_list'prev : zero+32 : offset(416), bigendian; net_device_dev_addr : 256 : offset(2496), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_12", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_12", match_err));; let parser_13 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+64 : offset(576), bigendian; + net_device_dev_list'prev : zero+64 : offset(640), bigendian; net_device_dev_addr : 256 : offset(4416), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 72L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 80L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_13", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_13", match_err));; let parser_14 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), bigendian; + net_device_dev_list'prev : zero+32 : offset(416), bigendian; net_device_dev_addr : 256 : offset(2592), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_14", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_14", match_err));; let parser_15 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), bigendian; + net_device_dev_list'prev : zero+32 : offset(416), bigendian; net_device_dev_addr : 256 : offset(2528), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_15", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_15", match_err));; let parser_16 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+64 : offset(576), bigendian; + net_device_dev_list'prev : zero+64 : offset(640), bigendian; net_device_dev_addr : 256 : offset(4288), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 72L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 80L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_16", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_16", match_err));; let parser_17 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), bigendian; + net_device_dev_list'prev : zero+32 : offset(416), bigendian; net_device_dev_addr : 256 : offset(2560), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_17", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_17", match_err));; let parser_18 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), bigendian; + net_device_dev_list'prev : zero+32 : offset(416), bigendian; net_device_dev_addr : 256 : offset(2656), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_18", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_18", match_err));; let parser_19 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+64 : offset(576), bigendian; + net_device_dev_list'prev : zero+64 : offset(640), bigendian; net_device_dev_addr : 256 : offset(4672), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 72L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 80L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_19", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_19", match_err));; let parser_20 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+64 : offset(576), littleendian; + net_device_dev_list'prev : zero+64 : offset(640), littleendian; net_device_dev_addr : 256 : offset(4672), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 72L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 80L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_20", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_20", match_err));; let parser_21 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+32 : offset(384), littleendian; net_device_dev_addr : 256 : offset(1728), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_21", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_21", match_err));; let parser_22 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+64 : offset(576), littleendian; net_device_dev_addr : 256 : offset(2688), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_22", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_22", match_err));; let parser_23 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+32 : offset(384), littleendian; net_device_dev_addr : 256 : offset(1696), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_23", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_23", match_err));; let parser_24 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_next : zero+64 : offset(576), littleendian; net_device_dev_addr : 256 : offset(2624), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_next = Some net_device_next; + net_device_dev_addr = net_device_dev_addr; + net_device_dev_list'prev = None; + net_device_dev_list'next = None } | { _ } -> - raise (ParseError (struct_name, "parser_24", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_24", match_err));; let parser_25 bits = bitmatch bits with | { net_device_name : 128 : offset(0), string; + net_device_dev_list'next : zero+32 : offset(384), bigendian; + net_device_dev_list'prev : zero+32 : offset(416), bigendian; net_device_dev_addr : 256 : offset(2752), string } -> { net_device_name = net_device_name; - net_device_dev_addr = net_device_dev_addr } + net_device_dev_list'next = Some (Int64.sub net_device_dev_list'next 48L); + net_device_dev_list'prev = Some (Int64.sub net_device_dev_list'prev 52L); + net_device_dev_addr = net_device_dev_addr; + net_device_next = None } | { _ } -> - raise (ParseError (struct_name, "parser_25", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_25", match_err));; module StringMap = Map.Make(String);; let map = StringMap.empty;; -let v = (parser_1, 924);; +let v = (parser_1, 924, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_2, 1444);; +let v = (parser_2, 1444, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_2, 1444);; +let v = (parser_2, 1444, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i686" v map;; -let v = (parser_3, 1384);; +let v = (parser_3, 1384, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3128.fc7.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3132.fc7.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3141.fc7.i686" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3144.fc7.i686" v map;; -let v = (parser_1, 1200);; +let v = (parser_1, 1200, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_1, 1200);; +let v = (parser_1, 1200, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3209.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3218.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3221.fc8.i686" v map;; -let v = (parser_1, 1116);; +let v = (parser_1, 1116, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3234.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3236.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3238.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3242.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.i686" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.i686" v map;; -let v = (parser_2, 1248);; +let v = (parser_2, 1248, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_2, 1248);; +let v = (parser_2, 1248, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i686" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i686" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-7.fc9.i686" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-9.fc9.i686" v map;; -let v = (parser_3, 1216);; +let v = (parser_3, 1216, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_5, 1388);; +let v = (parser_5, 1388, fieldsig_5);; +let map = StringMap.add "2.6.27-0.238.rc2.fc10.i686" v map;; +let v = (parser_5, 1388, fieldsig_5);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i686" v map;; +let v = (parser_5, 1388, fieldsig_5);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i686" v map;; -let v = (parser_1, 924);; +let v = (parser_1, 924, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_6, 1540);; +let v = (parser_6, 1540, fieldsig_6);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3145.fc7.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3190.fc7.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3228.fc7.x86_64" v map;; -let v = (parser_2, 1444);; +let v = (parser_2, 1444, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_7, 2392);; +let v = (parser_7, 2392, fieldsig_7);; let map = StringMap.add "2.6.23.14-135.fc8.x86_64" v map;; -let v = (parser_7, 2392);; +let v = (parser_7, 2392, fieldsig_7);; let map = StringMap.add "2.6.23.14-78.fc7.x86_64" v map;; -let v = (parser_3, 1384);; +let v = (parser_3, 1384, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_8, 2304);; +let v = (parser_8, 2304, fieldsig_8);; let map = StringMap.add "2.6.26.2-2.fc8.x86_64" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i586" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i686" v map;; -let v = (parser_9, 672);; +let v = (parser_9, 672, fieldsig_9);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc" v map;; -let v = (parser_10, 1260);; +let v = (parser_10, 1260, fieldsig_10);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64" v map;; -let v = (parser_10, 1260);; +let v = (parser_10, 1260, fieldsig_10);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64iseries" v map;; -let v = (parser_6, 1260);; +let v = (parser_6, 1260, fieldsig_6);; let map = StringMap.add "2.6.18-1.2798.fc6.x86_64" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i586" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_11, 668);; +let v = (parser_11, 668, fieldsig_11);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc" v map;; -let v = (parser_10, 1260);; +let v = (parser_10, 1260, fieldsig_10);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc64" v map;; -let v = (parser_6, 1260);; +let v = (parser_6, 1260, fieldsig_6);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3128.fc7.i586" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3128.fc7.i686" v map;; -let v = (parser_9, 996);; +let v = (parser_9, 996, fieldsig_9);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc64" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3128.fc7.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3132.fc7.i586" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3132.fc7.i686" v map;; -let v = (parser_9, 996);; +let v = (parser_9, 996, fieldsig_9);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc64" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3132.fc7.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3141.fc7.i586" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3141.fc7.i686" v map;; -let v = (parser_9, 996);; +let v = (parser_9, 996, fieldsig_9);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc64" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3141.fc7.x86_64" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3144.fc7.i586" v map;; -let v = (parser_1, 1284);; +let v = (parser_1, 1284, fieldsig_1);; let map = StringMap.add "2.6.21-1.3144.fc7.i686" v map;; -let v = (parser_9, 996);; +let v = (parser_9, 996, fieldsig_9);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc64" v map;; -let v = (parser_6, 2196);; +let v = (parser_6, 2196, fieldsig_6);; let map = StringMap.add "2.6.21-1.3144.fc7.x86_64" v map;; -let v = (parser_1, 1200);; +let v = (parser_1, 1200, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i586" v map;; -let v = (parser_1, 1200);; +let v = (parser_1, 1200, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_9, 996);; +let v = (parser_9, 996, fieldsig_9);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc64" v map;; -let v = (parser_6, 1900);; +let v = (parser_6, 1900, fieldsig_6);; let map = StringMap.add "2.6.21-1.3145.fc7.x86_64" v map;; -let v = (parser_1, 1200);; +let v = (parser_1, 1200, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i586" v map;; -let v = (parser_1, 1200);; +let v = (parser_1, 1200, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_9, 996);; +let v = (parser_9, 996, fieldsig_9);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc64" v map;; -let v = (parser_6, 1900);; +let v = (parser_6, 1900, fieldsig_6);; let map = StringMap.add "2.6.21-1.3190.fc7.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3209.fc8.i586" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3209.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3209.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3218.fc8.i586" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3218.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3218.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3221.fc8.i586" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3221.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3221.fc8.x86_64" v map;; -let v = (parser_1, 1116);; +let v = (parser_1, 1116, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i586" v map;; -let v = (parser_1, 1116);; +let v = (parser_1, 1116, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_9, 836);; +let v = (parser_9, 836, fieldsig_9);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc" v map;; -let v = (parser_10, 1684);; +let v = (parser_10, 1684, fieldsig_10);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc64" v map;; -let v = (parser_6, 1660);; +let v = (parser_6, 1660, fieldsig_6);; let map = StringMap.add "2.6.21-1.3228.fc7.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3234.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3234.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3236.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3236.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3238.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3238.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.21-1.3242.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.21-1.3242.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.x86_64" v map;; -let v = (parser_2, 1408);; +let v = (parser_2, 1408, fieldsig_2);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.i686" v map;; -let v = (parser_12, 1092);; +let v = (parser_12, 1092, fieldsig_12);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc64" v map;; -let v = (parser_7, 2316);; +let v = (parser_7, 2316, fieldsig_7);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.x86_64" v map;; -let v = (parser_2, 1248);; +let v = (parser_2, 1248, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i586" v map;; -let v = (parser_2, 1248);; +let v = (parser_2, 1248, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_14, 952);; +let v = (parser_14, 952, fieldsig_14);; let map = StringMap.add "2.6.23.14-135.fc8.ppc" v map;; -let v = (parser_13, 1824);; +let v = (parser_13, 1824, fieldsig_13);; let map = StringMap.add "2.6.23.14-135.fc8.ppc64" v map;; -let v = (parser_7, 1800);; +let v = (parser_7, 1800, fieldsig_7);; let map = StringMap.add "2.6.23.14-135.fc8.x86_64" v map;; -let v = (parser_2, 1248);; +let v = (parser_2, 1248, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i586" v map;; -let v = (parser_2, 1248);; +let v = (parser_2, 1248, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i686" v map;; -let v = (parser_14, 952);; +let v = (parser_14, 952, fieldsig_14);; let map = StringMap.add "2.6.23.14-78.fc7.ppc" v map;; -let v = (parser_13, 1824);; +let v = (parser_13, 1824, fieldsig_13);; let map = StringMap.add "2.6.23.14-78.fc7.ppc64" v map;; -let v = (parser_7, 1800);; +let v = (parser_7, 1800, fieldsig_7);; let map = StringMap.add "2.6.23.14-78.fc7.x86_64" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i586" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i686" v map;; -let v = (parser_15, 1048);; +let v = (parser_15, 1048, fieldsig_15);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc" v map;; -let v = (parser_16, 1984);; +let v = (parser_16, 1984, fieldsig_16);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" v map;; -let v = (parser_8, 2288);; +let v = (parser_8, 2288, fieldsig_8);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.x86_64" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-7.fc9.i586" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-7.fc9.i686" v map;; -let v = (parser_15, 1048);; +let v = (parser_15, 1048, fieldsig_15);; let map = StringMap.add "2.6.24-7.fc9.ppc" v map;; -let v = (parser_16, 1984);; +let v = (parser_16, 1984, fieldsig_16);; let map = StringMap.add "2.6.24-7.fc9.ppc64" v map;; -let v = (parser_8, 2288);; +let v = (parser_8, 2288, fieldsig_8);; let map = StringMap.add "2.6.24-7.fc9.x86_64" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-9.fc9.i586" v map;; -let v = (parser_4, 1244);; +let v = (parser_4, 1244, fieldsig_4);; let map = StringMap.add "2.6.24-9.fc9.i686" v map;; -let v = (parser_15, 1048);; +let v = (parser_15, 1048, fieldsig_15);; let map = StringMap.add "2.6.24-9.fc9.ppc" v map;; -let v = (parser_16, 1984);; +let v = (parser_16, 1984, fieldsig_16);; let map = StringMap.add "2.6.24-9.fc9.ppc64" v map;; -let v = (parser_8, 2288);; +let v = (parser_8, 2288, fieldsig_8);; let map = StringMap.add "2.6.24-9.fc9.x86_64" v map;; -let v = (parser_4, 1212);; +let v = (parser_4, 1212, fieldsig_4);; let map = StringMap.add "2.6.25.11-97.fc9.i686" v map;; -let v = (parser_8, 1752);; +let v = (parser_8, 1752, fieldsig_8);; let map = StringMap.add "2.6.25.11-97.fc9.x86_64" v map;; -let v = (parser_3, 1216);; +let v = (parser_3, 1216, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i586" v map;; -let v = (parser_3, 1216);; +let v = (parser_3, 1216, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_17, 920);; +let v = (parser_17, 920, fieldsig_17);; let map = StringMap.add "2.6.26.2-2.fc8.ppc" v map;; -let v = (parser_16, 1776);; +let v = (parser_16, 1776, fieldsig_16);; let map = StringMap.add "2.6.26.2-2.fc8.ppc64" v map;; -let v = (parser_8, 1752);; +let v = (parser_8, 1752, fieldsig_8);; let map = StringMap.add "2.6.26.2-2.fc8.x86_64" v map;; -let v = (parser_5, 1388);; +let v = (parser_5, 1388, fieldsig_5);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i586" v map;; +let v = (parser_5, 1388, fieldsig_5);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i686" v map;; +let v = (parser_18, 1072, fieldsig_18);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc" v map;; +let v = (parser_19, 2332, fieldsig_19);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc64" v map;; +let v = (parser_20, 2316, fieldsig_20);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.x86_64" v map;; +let v = (parser_5, 1388, fieldsig_5);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i586" v map;; -let v = (parser_5, 1388);; +let v = (parser_5, 1388, fieldsig_5);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i686" v map;; -let v = (parser_18, 1072);; +let v = (parser_18, 1072, fieldsig_18);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc" v map;; -let v = (parser_19, 2332);; +let v = (parser_19, 2332, fieldsig_19);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc64" v map;; -let v = (parser_20, 2316);; +let v = (parser_20, 2316, fieldsig_20);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.x86_64" v map;; -let v = (parser_21, 672);; +let v = (parser_21, 672, fieldsig_21);; let map = StringMap.add "2.6.18-1.2798.fc6.i686" v map;; -let v = (parser_10, 1260);; +let v = (parser_10, 1260, fieldsig_10);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64" v map;; -let v = (parser_10, 1260);; +let v = (parser_10, 1260, fieldsig_10);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64iseries" v map;; -let v = (parser_22, 1108);; +let v = (parser_22, 1108, fieldsig_22);; let map = StringMap.add "2.6.18-1.2798.fc6.x86_64" v map;; -let v = (parser_23, 668);; +let v = (parser_23, 668, fieldsig_23);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_10, 1260);; +let v = (parser_10, 1260, fieldsig_10);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc64" v map;; -let v = (parser_24, 1100);; +let v = (parser_24, 1100, fieldsig_24);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc64" v map;; -let v = (parser_22, 2124);; +let v = (parser_22, 2124, fieldsig_22);; let map = StringMap.add "2.6.21-1.3128.fc7.x86_64" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc64" v map;; -let v = (parser_22, 2124);; +let v = (parser_22, 2124, fieldsig_22);; let map = StringMap.add "2.6.21-1.3132.fc7.x86_64" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc64" v map;; -let v = (parser_22, 2124);; +let v = (parser_22, 2124, fieldsig_22);; let map = StringMap.add "2.6.21-1.3141.fc7.x86_64" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc64" v map;; -let v = (parser_22, 2124);; +let v = (parser_22, 2124, fieldsig_22);; let map = StringMap.add "2.6.21-1.3144.fc7.x86_64" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc64" v map;; -let v = (parser_22, 1644);; +let v = (parser_22, 1644, fieldsig_22);; let map = StringMap.add "2.6.21-1.3145.fc7.x86_64" v map;; -let v = (parser_10, 1924);; +let v = (parser_10, 1924, fieldsig_10);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc64" v map;; -let v = (parser_22, 1644);; +let v = (parser_22, 1644, fieldsig_22);; let map = StringMap.add "2.6.21-1.3190.fc7.x86_64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc64" v map;; -let v = (parser_10, 1684);; +let v = (parser_10, 1684, fieldsig_10);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc64" v map;; -let v = (parser_22, 1404);; +let v = (parser_22, 1404, fieldsig_22);; let map = StringMap.add "2.6.21-1.3228.fc7.x86_64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc64" v map;; -let v = (parser_13, 2044);; +let v = (parser_13, 2044, fieldsig_13);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc64" v map;; -let v = (parser_13, 1824);; +let v = (parser_13, 1824, fieldsig_13);; let map = StringMap.add "2.6.23.14-135.fc8.ppc64" v map;; -let v = (parser_13, 1824);; +let v = (parser_13, 1824, fieldsig_13);; let map = StringMap.add "2.6.23.14-78.fc7.ppc64" v map;; -let v = (parser_16, 1984);; +let v = (parser_16, 1984, fieldsig_16);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" v map;; -let v = (parser_16, 1984);; +let v = (parser_16, 1984, fieldsig_16);; let map = StringMap.add "2.6.24-7.fc9.ppc64" v map;; -let v = (parser_16, 1984);; +let v = (parser_16, 1984, fieldsig_16);; let map = StringMap.add "2.6.24-9.fc9.ppc64" v map;; -let v = (parser_16, 1776);; +let v = (parser_16, 1776, fieldsig_16);; let map = StringMap.add "2.6.26.2-2.fc8.ppc64" v map;; -let v = (parser_19, 2332);; +let v = (parser_19, 2332, fieldsig_19);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc64" v map;; +let v = (parser_19, 2332, fieldsig_19);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc64" v map;; -let v = (parser_9, 688);; +let v = (parser_9, 688, fieldsig_9);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc" v map;; -let v = (parser_9, 688);; +let v = (parser_9, 688, fieldsig_9);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc" v map;; -let v = (parser_9, 1020);; +let v = (parser_9, 1020, fieldsig_9);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc" v map;; -let v = (parser_9, 1020);; +let v = (parser_9, 1020, fieldsig_9);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc" v map;; -let v = (parser_9, 1020);; +let v = (parser_9, 1020, fieldsig_9);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc" v map;; -let v = (parser_9, 1020);; +let v = (parser_9, 1020, fieldsig_9);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc" v map;; -let v = (parser_9, 1020);; +let v = (parser_9, 1020, fieldsig_9);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc" v map;; -let v = (parser_9, 1020);; +let v = (parser_9, 1020, fieldsig_9);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc" v map;; -let v = (parser_9, 936);; +let v = (parser_9, 936, fieldsig_9);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc" v map;; -let v = (parser_12, 1116);; +let v = (parser_12, 1116, fieldsig_12);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc" v map;; -let v = (parser_25, 1064);; +let v = (parser_25, 1064, fieldsig_25);; let map = StringMap.add "2.6.23.14-135.fc8.ppc" v map;; -let v = (parser_25, 1064);; +let v = (parser_25, 1064, fieldsig_25);; let map = StringMap.add "2.6.23.14-78.fc7.ppc" v map;; -let v = (parser_15, 1072);; +let v = (parser_15, 1072, fieldsig_15);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc" v map;; -let v = (parser_15, 1072);; +let v = (parser_15, 1072, fieldsig_15);; let map = StringMap.add "2.6.24-7.fc9.ppc" v map;; -let v = (parser_15, 1072);; +let v = (parser_15, 1072, fieldsig_15);; let map = StringMap.add "2.6.24-9.fc9.ppc" v map;; -let v = (parser_17, 1016);; +let v = (parser_17, 1016, fieldsig_17);; let map = StringMap.add "2.6.26.2-2.fc8.ppc" v map;; -let v = (parser_18, 1120);; +let v = (parser_18, 1120, fieldsig_18);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc" v map;; +let v = (parser_18, 1120, fieldsig_18);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i686" v map;; -let v = (parser_6, 1260);; +let v = (parser_6, 1260, fieldsig_6);; let map = StringMap.add "2.6.18-1.2798.fc6.x86_64" v map;; -let v = (parser_1, 912);; +let v = (parser_1, 912, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_6, 1260);; +let v = (parser_6, 1260, fieldsig_6);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; type kernel_version = string;; let net_device_known version = StringMap.mem version map;; let net_device_size version = - let (_, size) = StringMap.find version map in size;; + let (_, size, _) = StringMap.find version map in size;; let net_device_of_bits version bits = - let (parsefn, _) = StringMap.find version map in parsefn bits;; + let (parsefn, _, _) = StringMap.find version map in parsefn bits;; let get_net_device version mem addr = - let (parsefn, size) = StringMap.find version map in + let (parsefn, size, _) = StringMap.find version map in let bytes = Virt_mem_mmap.get_bytes mem addr size in let bits = Bitstring.bitstring_of_string bytes in parsefn bits;; +let field_signature_of_net_device_dev_list'prev version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_net_device_dev_list'prev;; +let field_signature_of_net_device_dev_list'next version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_net_device_dev_list'next;; +let field_signature_of_net_device_next version = + let (_, _, fs) = StringMap.find version map in fs.__fs_net_device_next;; +let field_signature_of_net_device_name version = + let (_, _, fs) = StringMap.find version map in fs.__fs_net_device_name;; +let field_signature_of_net_device_dev_addr version = + let (_, _, fs) = StringMap.find version map in fs.__fs_net_device_dev_addr;; diff --git a/lib/kernel_net_device.mli b/lib/kernel_net_device.mli index 3fd4ce9..c469020 100644 --- a/lib/kernel_net_device.mli +++ b/lib/kernel_net_device.mli @@ -1,5 +1,9 @@ -exception ParseError of string * string * string;; -type t = { net_device_dev_addr : string; net_device_name : string };; +type t = + { net_device_dev_list'prev : Virt_mem_mmap.addr option; + net_device_dev_list'next : Virt_mem_mmap.addr option; + net_device_next : Virt_mem_mmap.addr option; net_device_name : string; + net_device_dev_addr : string + };; val struct_name : string;; type kernel_version = string;; val net_device_known : kernel_version -> bool;; @@ -8,3 +12,13 @@ val net_device_of_bits : kernel_version -> Bitstring.bitstring -> t;; val get_net_device : kernel_version -> ('a, 'b, [ | `HasMapping ]) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> t;; +val field_signature_of_net_device_dev_list'prev : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_net_device_dev_list'next : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_net_device_next : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_net_device_name : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_net_device_dev_addr : + kernel_version -> Virt_mem_types.fieldsig;; diff --git a/lib/kernel_task_struct.ml b/lib/kernel_task_struct.ml index 91a87f9..df42212 100644 --- a/lib/kernel_task_struct.ml +++ b/lib/kernel_task_struct.ml @@ -7,17 +7,1130 @@ * To update this file from the latest kernel database, it is recommended * that you do 'make update-kernel-structs'. *) + let zero = 0;; let struct_name = "task_struct";; let match_err = "failed to match kernel structure";; -exception ParseError of string * string * string;; type t = - { task_struct_active_mm : Virt_mem_mmap.addr; task_struct_comm : string; - task_struct_mm : Virt_mem_mmap.addr; task_struct_normal_prio : int64; - task_struct_pid : int64; task_struct_prio : int64; - task_struct_state : int64; task_struct_static_prio : int64; + { task_struct_state : int64; task_struct_prio : int64; + task_struct_normal_prio : int64; task_struct_static_prio : int64; + task_struct_tasks'prev : Virt_mem_mmap.addr; task_struct_tasks'next : Virt_mem_mmap.addr; - task_struct_tasks'prev : Virt_mem_mmap.addr + task_struct_mm : Virt_mem_mmap.addr; + task_struct_active_mm : Virt_mem_mmap.addr; task_struct_comm : string; + task_struct_pid : int64 + };; +type fs_t = + { __fs_task_struct_state : Virt_mem_types.fieldsig; + __fs_task_struct_prio : Virt_mem_types.fieldsig; + __fs_task_struct_normal_prio : Virt_mem_types.fieldsig; + __fs_task_struct_static_prio : Virt_mem_types.fieldsig; + __fs_task_struct_tasks'prev : Virt_mem_types.fieldsig; + __fs_task_struct_tasks'next : Virt_mem_types.fieldsig; + __fs_task_struct_mm : Virt_mem_types.fieldsig; + __fs_task_struct_active_mm : Virt_mem_types.fieldsig; + __fs_task_struct_comm : Virt_mem_types.fieldsig; + __fs_task_struct_pid : Virt_mem_types.fieldsig + };; +let fieldsig_1 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 124; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 128; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 132; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 136; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 168; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 404; }; + };; +let fieldsig_2 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 268; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 272; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 276; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 312; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 564; }; + };; +let fieldsig_3 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 420; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 428; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 432; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 464; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 761; }; + };; +let fieldsig_4 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 268; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 272; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 292; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 296; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 328; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 568; }; + };; +let fieldsig_5 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 276; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 300; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 304; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 336; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 576; }; + };; +let fieldsig_6 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 272; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 276; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 284; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 316; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 552; }; + };; +let fieldsig_7 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 268; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 272; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 276; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 312; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 548; }; + };; +let fieldsig_8 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 380; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 384; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 388; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 420; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 677; }; + };; +let fieldsig_9 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 448; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 452; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 456; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 460; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 492; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 788; }; + };; +let fieldsig_10 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 44; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 192; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 200; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 208; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 216; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 268; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 680; }; + };; +let fieldsig_11 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 352; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 416; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 856; }; + };; +let fieldsig_12 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 512; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 520; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 528; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 536; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 576; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 1089; }; + };; +let fieldsig_13 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 128; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 132; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 136; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 140; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 172; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 408; }; + };; +let fieldsig_14 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 44; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 200; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 208; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 216; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 224; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 276; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 680; }; + };; +let fieldsig_15 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 44; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 216; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 224; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 232; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 240; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 292; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 696; }; + };; +let fieldsig_16 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 184; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 192; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 200; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 208; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 248; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 648; }; + };; +let fieldsig_17 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 176; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 184; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 192; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 200; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 240; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 648; }; + };; +let fieldsig_18 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 284; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 304; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 308; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 340; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 584; }; + };; +let fieldsig_19 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 336; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 344; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 384; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 392; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 432; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 840; }; + };; +let fieldsig_20 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 328; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 336; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 384; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 840; }; + };; +let fieldsig_21 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 288; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 292; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 312; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 316; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 348; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 592; }; + };; +let fieldsig_22 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 408; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 416; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 456; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 864; }; + };; +let fieldsig_23 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 352; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 400; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 408; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 448; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 864; }; + };; +let fieldsig_24 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 284; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 288; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 292; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 324; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 560; }; + };; +let fieldsig_25 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 352; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 416; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 816; }; + };; +let fieldsig_26 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 344; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 352; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 408; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 816; }; + };; +let fieldsig_27 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 272; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 276; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 284; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 316; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 552; }; + };; +let fieldsig_28 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 384; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 824; }; + };; +let fieldsig_29 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 352; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 416; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 824; }; + };; +let fieldsig_30 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 280; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 284; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 288; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 292; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 324; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 576; }; + };; +let fieldsig_31 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 360; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 368; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 376; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 384; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 856; }; + };; +let fieldsig_32 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 392; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 396; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 400; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 404; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 436; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 697; }; + };; +let fieldsig_33 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 456; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 464; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 472; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 480; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 520; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 969; }; + };; +let fieldsig_34 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 456; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 464; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 472; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 480; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 520; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 977; }; + };; +let fieldsig_35 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 20; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 404; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 408; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 412; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 416; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 448; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 741; }; + };; +let fieldsig_36 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 480; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 488; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 496; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 504; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 544; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 1049; }; + };; +let fieldsig_37 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 416; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 420; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 428; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 460; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 757; }; + };; +let fieldsig_38 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 424; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 428; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 432; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 436; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 468; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 765; }; + };; +let fieldsig_39 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 512; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 520; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 528; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 536; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 576; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 1089; }; + };; +let fieldsig_40 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 444; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 448; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 452; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 456; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 488; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 784; }; + };; +let fieldsig_41 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 24; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 28; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 464; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 468; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 472; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 476; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 508; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 808; }; + };; +let fieldsig_42 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 560; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 568; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 576; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 584; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 624; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 1128; }; + };; +let fieldsig_43 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 32; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 36; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 560; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 568; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 576; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 584; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 624; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 1128; }; + };; +let fieldsig_44 = + { + (()) + with + __fs_task_struct_state = + { Virt_mem_types.field_available = true; field_offset = 0; }; + __fs_task_struct_prio = + { Virt_mem_types.field_available = true; field_offset = 40; }; + __fs_task_struct_static_prio = + { Virt_mem_types.field_available = true; field_offset = 44; }; + __fs_task_struct_normal_prio = + { Virt_mem_types.field_available = true; field_offset = 48; }; + __fs_task_struct_tasks'next = + { Virt_mem_types.field_available = true; field_offset = 192; }; + __fs_task_struct_tasks'prev = + { Virt_mem_types.field_available = true; field_offset = 200; }; + __fs_task_struct_mm = + { Virt_mem_types.field_available = true; field_offset = 208; }; + __fs_task_struct_active_mm = + { Virt_mem_types.field_available = true; field_offset = 216; }; + __fs_task_struct_pid = + { Virt_mem_types.field_available = true; field_offset = 268; }; + __fs_task_struct_comm = + { Virt_mem_types.field_available = true; field_offset = 672; }; };; let parser_1 bits = bitmatch bits with @@ -42,7 +1155,7 @@ let parser_1 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_1", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_1", match_err));; let parser_2 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -66,7 +1179,7 @@ let parser_2 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_2", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_2", match_err));; let parser_3 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -90,7 +1203,7 @@ let parser_3 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_3", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_3", match_err));; let parser_4 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -114,7 +1227,7 @@ let parser_4 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_4", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_4", match_err));; let parser_5 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -138,7 +1251,7 @@ let parser_5 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_5", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_5", match_err));; let parser_6 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -162,7 +1275,7 @@ let parser_6 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_6", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_6", match_err));; let parser_7 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -186,7 +1299,7 @@ let parser_7 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_7", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_7", match_err));; let parser_8 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -210,7 +1323,7 @@ let parser_8 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_8", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_8", match_err));; let parser_9 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -234,7 +1347,7 @@ let parser_9 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_9", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_9", match_err));; let parser_10 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -258,7 +1371,7 @@ let parser_10 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_10", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_10", match_err));; let parser_11 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -282,7 +1395,7 @@ let parser_11 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_11", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_11", match_err));; let parser_12 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -306,7 +1419,7 @@ let parser_12 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_12", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_12", match_err));; let parser_13 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -330,7 +1443,7 @@ let parser_13 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_13", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_13", match_err));; let parser_14 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -354,7 +1467,7 @@ let parser_14 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_14", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_14", match_err));; let parser_15 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -378,7 +1491,7 @@ let parser_15 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_15", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_15", match_err));; let parser_16 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -402,7 +1515,7 @@ let parser_16 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_16", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_16", match_err));; let parser_17 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -426,7 +1539,7 @@ let parser_17 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_17", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_17", match_err));; let parser_18 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -450,7 +1563,7 @@ let parser_18 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_18", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_18", match_err));; let parser_19 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -474,7 +1587,7 @@ let parser_19 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_19", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_19", match_err));; let parser_20 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -498,7 +1611,7 @@ let parser_20 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_20", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_20", match_err));; let parser_21 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -522,7 +1635,7 @@ let parser_21 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_21", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_21", match_err));; let parser_22 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -546,7 +1659,7 @@ let parser_22 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_22", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_22", match_err));; let parser_23 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -570,7 +1683,7 @@ let parser_23 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_23", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_23", match_err));; let parser_24 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -594,7 +1707,7 @@ let parser_24 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_24", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_24", match_err));; let parser_25 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -618,7 +1731,7 @@ let parser_25 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_25", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_25", match_err));; let parser_26 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -642,7 +1755,7 @@ let parser_26 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_26", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_26", match_err));; let parser_27 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -666,7 +1779,7 @@ let parser_27 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_27", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_27", match_err));; let parser_28 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -690,7 +1803,7 @@ let parser_28 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_28", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_28", match_err));; let parser_29 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -714,7 +1827,7 @@ let parser_29 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_29", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_29", match_err));; let parser_30 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -738,7 +1851,7 @@ let parser_30 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_30", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_30", match_err));; let parser_31 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -762,7 +1875,7 @@ let parser_31 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_31", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_31", match_err));; let parser_32 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -786,7 +1899,7 @@ let parser_32 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_32", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_32", match_err));; let parser_33 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -810,7 +1923,7 @@ let parser_33 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_33", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_33", match_err));; let parser_34 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -834,7 +1947,7 @@ let parser_34 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_34", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_34", match_err));; let parser_35 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -858,7 +1971,7 @@ let parser_35 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_35", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_35", match_err));; let parser_36 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -882,7 +1995,7 @@ let parser_36 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_36", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_36", match_err));; let parser_37 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -906,7 +2019,7 @@ let parser_37 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_37", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_37", match_err));; let parser_38 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -930,7 +2043,7 @@ let parser_38 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_38", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_38", match_err));; let parser_39 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -954,7 +2067,7 @@ let parser_39 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_39", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_39", match_err));; let parser_40 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), littleendian; @@ -978,7 +2091,7 @@ let parser_40 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_40", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_40", match_err));; let parser_41 bits = bitmatch bits with | { task_struct_state : zero+32 : offset(0), bigendian; @@ -1002,7 +2115,7 @@ let parser_41 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_41", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_41", match_err));; let parser_42 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), bigendian; @@ -1026,7 +2139,7 @@ let parser_42 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_42", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_42", match_err));; let parser_43 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -1050,7 +2163,7 @@ let parser_43 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_43", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_43", match_err));; let parser_44 bits = bitmatch bits with | { task_struct_state : zero+64 : offset(0), littleendian; @@ -1074,480 +2187,523 @@ let parser_44 bits = task_struct_pid = task_struct_pid; task_struct_comm = task_struct_comm } | { _ } -> - raise (ParseError (struct_name, "parser_44", match_err));; + raise (Virt_mem_types.ParseError (struct_name, "parser_44", match_err));; module StringMap = Map.Make(String);; let map = StringMap.empty;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_2, 3364);; +let v = (parser_2, 3364, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_2, 3364);; +let v = (parser_2, 3364, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i686" v map;; -let v = (parser_3, 4180);; +let v = (parser_3, 4180, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3128.fc7.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3132.fc7.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3141.fc7.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3144.fc7.i686" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3209.fc8.i686" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3218.fc8.i686" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3221.fc8.i686" v map;; -let v = (parser_1, 1376);; +let v = (parser_1, 1376, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_4, 2880);; +let v = (parser_4, 2880, fieldsig_4);; let map = StringMap.add "2.6.21-1.3234.fc8.i686" v map;; -let v = (parser_5, 2880);; +let v = (parser_5, 2880, fieldsig_5);; let map = StringMap.add "2.6.21-1.3236.fc8.i686" v map;; -let v = (parser_6, 2872);; +let v = (parser_6, 2872, fieldsig_6);; let map = StringMap.add "2.6.21-1.3238.fc8.i686" v map;; -let v = (parser_6, 2872);; +let v = (parser_6, 2872, fieldsig_6);; let map = StringMap.add "2.6.21-1.3242.fc8.i686" v map;; -let v = (parser_7, 2856);; +let v = (parser_7, 2856, fieldsig_7);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.i686" v map;; -let v = (parser_6, 2872);; +let v = (parser_6, 2872, fieldsig_6);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.i686" v map;; -let v = (parser_2, 1548);; +let v = (parser_2, 1548, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_2, 1548);; +let v = (parser_2, 1548, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i686" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i686" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-7.fc9.i686" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-9.fc9.i686" v map;; -let v = (parser_3, 1328);; +let v = (parser_3, 1328, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_9, 4204);; +let v = (parser_9, 4204, fieldsig_9);; +let map = StringMap.add "2.6.27-0.238.rc2.fc10.i686" v map;; +let v = (parser_9, 4204, fieldsig_9);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i686" v map;; +let v = (parser_9, 4204, fieldsig_9);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i686" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3145.fc7.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3190.fc7.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3228.fc7.x86_64" v map;; -let v = (parser_2, 3364);; +let v = (parser_2, 3364, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_11, 4468);; +let v = (parser_11, 4468, fieldsig_11);; let map = StringMap.add "2.6.23.14-135.fc8.x86_64" v map;; -let v = (parser_11, 4468);; +let v = (parser_11, 4468, fieldsig_11);; let map = StringMap.add "2.6.23.14-78.fc7.x86_64" v map;; -let v = (parser_3, 4180);; +let v = (parser_3, 4180, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_12, 5808);; +let v = (parser_12, 5808, fieldsig_12);; let map = StringMap.add "2.6.26.2-2.fc8.x86_64" v map;; -let v = (parser_1, 1384);; +let v = (parser_1, 1384, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i586" v map;; -let v = (parser_1, 1384);; +let v = (parser_1, 1384, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i686" v map;; -let v = (parser_13, 1576);; +let v = (parser_13, 1576, fieldsig_13);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc" v map;; -let v = (parser_14, 2104);; +let v = (parser_14, 2104, fieldsig_14);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64" v map;; -let v = (parser_14, 2088);; +let v = (parser_14, 2088, fieldsig_14);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64iseries" v map;; -let v = (parser_15, 1928);; +let v = (parser_15, 1928, fieldsig_15);; let map = StringMap.add "2.6.18-1.2798.fc6.x86_64" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i586" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_13, 1592);; +let v = (parser_13, 1592, fieldsig_13);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc" v map;; -let v = (parser_14, 2112);; +let v = (parser_14, 2112, fieldsig_14);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc64" v map;; -let v = (parser_10, 1920);; +let v = (parser_10, 1920, fieldsig_10);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3128.fc7.i586" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3128.fc7.i686" v map;; -let v = (parser_13, 1604);; +let v = (parser_13, 1604, fieldsig_13);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc64" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3128.fc7.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3132.fc7.i586" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3132.fc7.i686" v map;; -let v = (parser_13, 1604);; +let v = (parser_13, 1604, fieldsig_13);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc64" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3132.fc7.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3141.fc7.i586" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3141.fc7.i686" v map;; -let v = (parser_13, 1604);; +let v = (parser_13, 1604, fieldsig_13);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc64" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3141.fc7.x86_64" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3144.fc7.i586" v map;; -let v = (parser_1, 2704);; +let v = (parser_1, 2704, fieldsig_1);; let map = StringMap.add "2.6.21-1.3144.fc7.i686" v map;; -let v = (parser_13, 1604);; +let v = (parser_13, 1604, fieldsig_13);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc64" v map;; -let v = (parser_10, 3772);; +let v = (parser_10, 3772, fieldsig_10);; let map = StringMap.add "2.6.21-1.3144.fc7.x86_64" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i586" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.21-1.3145.fc7.i686" v map;; -let v = (parser_13, 1592);; +let v = (parser_13, 1592, fieldsig_13);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc" v map;; -let v = (parser_14, 2112);; +let v = (parser_14, 2112, fieldsig_14);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc64" v map;; -let v = (parser_10, 1920);; +let v = (parser_10, 1920, fieldsig_10);; let map = StringMap.add "2.6.21-1.3145.fc7.x86_64" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i586" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.21-1.3190.fc7.i686" v map;; -let v = (parser_13, 1592);; +let v = (parser_13, 1592, fieldsig_13);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc" v map;; -let v = (parser_14, 2112);; +let v = (parser_14, 2112, fieldsig_14);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc64" v map;; -let v = (parser_10, 1920);; +let v = (parser_10, 1920, fieldsig_10);; let map = StringMap.add "2.6.21-1.3190.fc7.x86_64" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3209.fc8.i586" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3209.fc8.i686" v map;; -let v = (parser_13, 1612);; +let v = (parser_13, 1612, fieldsig_13);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc" v map;; -let v = (parser_16, 2116);; +let v = (parser_16, 2116, fieldsig_16);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc64" v map;; -let v = (parser_17, 3756);; +let v = (parser_17, 3756, fieldsig_17);; let map = StringMap.add "2.6.21-1.3209.fc8.x86_64" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3218.fc8.i586" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3218.fc8.i686" v map;; -let v = (parser_13, 1612);; +let v = (parser_13, 1612, fieldsig_13);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc" v map;; -let v = (parser_16, 2116);; +let v = (parser_16, 2116, fieldsig_16);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc64" v map;; -let v = (parser_17, 3756);; +let v = (parser_17, 3756, fieldsig_17);; let map = StringMap.add "2.6.21-1.3218.fc8.x86_64" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3221.fc8.i586" v map;; -let v = (parser_1, 2712);; +let v = (parser_1, 2712, fieldsig_1);; let map = StringMap.add "2.6.21-1.3221.fc8.i686" v map;; -let v = (parser_13, 1612);; +let v = (parser_13, 1612, fieldsig_13);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc" v map;; -let v = (parser_16, 2116);; +let v = (parser_16, 2116, fieldsig_16);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc64" v map;; -let v = (parser_17, 3756);; +let v = (parser_17, 3756, fieldsig_17);; let map = StringMap.add "2.6.21-1.3221.fc8.x86_64" v map;; -let v = (parser_1, 1376);; +let v = (parser_1, 1376, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i586" v map;; -let v = (parser_1, 1376);; +let v = (parser_1, 1376, fieldsig_1);; let map = StringMap.add "2.6.21-1.3228.fc7.i686" v map;; -let v = (parser_13, 1560);; +let v = (parser_13, 1560, fieldsig_13);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc" v map;; -let v = (parser_14, 2072);; +let v = (parser_14, 2072, fieldsig_14);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc64" v map;; -let v = (parser_10, 1880);; +let v = (parser_10, 1880, fieldsig_10);; let map = StringMap.add "2.6.21-1.3228.fc7.x86_64" v map;; -let v = (parser_4, 2880);; +let v = (parser_4, 2880, fieldsig_4);; let map = StringMap.add "2.6.21-1.3234.fc8.i686" v map;; -let v = (parser_18, 1780);; +let v = (parser_18, 1780, fieldsig_18);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc" v map;; -let v = (parser_19, 2292);; +let v = (parser_19, 2292, fieldsig_19);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc64" v map;; -let v = (parser_20, 3932);; +let v = (parser_20, 3932, fieldsig_20);; let map = StringMap.add "2.6.21-1.3234.fc8.x86_64" v map;; -let v = (parser_5, 2880);; +let v = (parser_5, 2880, fieldsig_5);; let map = StringMap.add "2.6.21-1.3236.fc8.i686" v map;; -let v = (parser_21, 1780);; +let v = (parser_21, 1780, fieldsig_21);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc" v map;; -let v = (parser_22, 2308);; +let v = (parser_22, 2308, fieldsig_22);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc64" v map;; -let v = (parser_23, 3948);; +let v = (parser_23, 3948, fieldsig_23);; let map = StringMap.add "2.6.21-1.3236.fc8.x86_64" v map;; -let v = (parser_6, 2872);; +let v = (parser_6, 2872, fieldsig_6);; let map = StringMap.add "2.6.21-1.3238.fc8.i686" v map;; -let v = (parser_24, 1756);; +let v = (parser_24, 1756, fieldsig_24);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc" v map;; -let v = (parser_25, 2276);; +let v = (parser_25, 2276, fieldsig_25);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc64" v map;; -let v = (parser_26, 3916);; +let v = (parser_26, 3916, fieldsig_26);; let map = StringMap.add "2.6.21-1.3238.fc8.x86_64" v map;; -let v = (parser_6, 2872);; +let v = (parser_6, 2872, fieldsig_6);; let map = StringMap.add "2.6.21-1.3242.fc8.i686" v map;; -let v = (parser_24, 1756);; +let v = (parser_24, 1756, fieldsig_24);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc" v map;; -let v = (parser_25, 2276);; +let v = (parser_25, 2276, fieldsig_25);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc64" v map;; -let v = (parser_26, 3916);; +let v = (parser_26, 3916, fieldsig_26);; let map = StringMap.add "2.6.21-1.3242.fc8.x86_64" v map;; -let v = (parser_7, 2856);; +let v = (parser_7, 2856, fieldsig_7);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.i686" v map;; -let v = (parser_27, 1756);; +let v = (parser_27, 1756, fieldsig_27);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc" v map;; -let v = (parser_28, 2292);; +let v = (parser_28, 2292, fieldsig_28);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc64" v map;; -let v = (parser_29, 3932);; +let v = (parser_29, 3932, fieldsig_29);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.x86_64" v map;; -let v = (parser_6, 2872);; +let v = (parser_6, 2872, fieldsig_6);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.i686" v map;; -let v = (parser_24, 1756);; +let v = (parser_24, 1756, fieldsig_24);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc" v map;; -let v = (parser_25, 2276);; +let v = (parser_25, 2276, fieldsig_25);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc64" v map;; -let v = (parser_26, 3916);; +let v = (parser_26, 3916, fieldsig_26);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.x86_64" v map;; -let v = (parser_2, 1548);; +let v = (parser_2, 1548, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i586" v map;; -let v = (parser_2, 1548);; +let v = (parser_2, 1548, fieldsig_2);; let map = StringMap.add "2.6.23.14-135.fc8.i686" v map;; -let v = (parser_30, 1736);; +let v = (parser_30, 1736, fieldsig_30);; let map = StringMap.add "2.6.23.14-135.fc8.ppc" v map;; -let v = (parser_31, 2272);; +let v = (parser_31, 2272, fieldsig_31);; let map = StringMap.add "2.6.23.14-135.fc8.ppc64" v map;; -let v = (parser_11, 2080);; +let v = (parser_11, 2080, fieldsig_11);; let map = StringMap.add "2.6.23.14-135.fc8.x86_64" v map;; -let v = (parser_2, 1548);; +let v = (parser_2, 1548, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i586" v map;; -let v = (parser_2, 1548);; +let v = (parser_2, 1548, fieldsig_2);; let map = StringMap.add "2.6.23.14-78.fc7.i686" v map;; -let v = (parser_30, 1736);; +let v = (parser_30, 1736, fieldsig_30);; let map = StringMap.add "2.6.23.14-78.fc7.ppc" v map;; -let v = (parser_31, 2272);; +let v = (parser_31, 2272, fieldsig_31);; let map = StringMap.add "2.6.23.14-78.fc7.ppc64" v map;; -let v = (parser_11, 2080);; +let v = (parser_11, 2080, fieldsig_11);; let map = StringMap.add "2.6.23.14-78.fc7.x86_64" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i586" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i686" v map;; -let v = (parser_32, 1936);; +let v = (parser_32, 1936, fieldsig_32);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc" v map;; -let v = (parser_33, 2492);; +let v = (parser_33, 2492, fieldsig_33);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" v map;; -let v = (parser_34, 4684);; +let v = (parser_34, 4684, fieldsig_34);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.x86_64" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-7.fc9.i586" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-7.fc9.i686" v map;; -let v = (parser_32, 1936);; +let v = (parser_32, 1936, fieldsig_32);; let map = StringMap.add "2.6.24-7.fc9.ppc" v map;; -let v = (parser_33, 2492);; +let v = (parser_33, 2492, fieldsig_33);; let map = StringMap.add "2.6.24-7.fc9.ppc64" v map;; -let v = (parser_34, 4684);; +let v = (parser_34, 4684, fieldsig_34);; let map = StringMap.add "2.6.24-7.fc9.x86_64" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-9.fc9.i586" v map;; -let v = (parser_8, 3540);; +let v = (parser_8, 3540, fieldsig_8);; let map = StringMap.add "2.6.24-9.fc9.i686" v map;; -let v = (parser_32, 1936);; +let v = (parser_32, 1936, fieldsig_32);; let map = StringMap.add "2.6.24-9.fc9.ppc" v map;; -let v = (parser_33, 2492);; +let v = (parser_33, 2492, fieldsig_33);; let map = StringMap.add "2.6.24-9.fc9.ppc64" v map;; -let v = (parser_34, 4684);; +let v = (parser_34, 4684, fieldsig_34);; let map = StringMap.add "2.6.24-9.fc9.x86_64" v map;; -let v = (parser_35, 1832);; +let v = (parser_35, 1832, fieldsig_35);; let map = StringMap.add "2.6.25.11-97.fc9.i686" v map;; -let v = (parser_36, 2496);; +let v = (parser_36, 2496, fieldsig_36);; let map = StringMap.add "2.6.25.11-97.fc9.x86_64" v map;; -let v = (parser_37, 1324);; +let v = (parser_37, 1324, fieldsig_37);; let map = StringMap.add "2.6.26.2-2.fc8.i586" v map;; -let v = (parser_3, 1328);; +let v = (parser_3, 1328, fieldsig_3);; let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;; -let v = (parser_38, 1968);; +let v = (parser_38, 1968, fieldsig_38);; let map = StringMap.add "2.6.26.2-2.fc8.ppc" v map;; -let v = (parser_39, 2572);; +let v = (parser_39, 2572, fieldsig_39);; let map = StringMap.add "2.6.26.2-2.fc8.ppc64" v map;; -let v = (parser_12, 2072);; +let v = (parser_12, 2072, fieldsig_12);; let map = StringMap.add "2.6.26.2-2.fc8.x86_64" v map;; -let v = (parser_40, 4200);; +let v = (parser_40, 4200, fieldsig_40);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i586" v map;; +let v = (parser_9, 4204, fieldsig_9);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i686" v map;; +let v = (parser_41, 2124, fieldsig_41);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc" v map;; +let v = (parser_42, 6712, fieldsig_42);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc64" v map;; +let v = (parser_43, 5824, fieldsig_43);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.x86_64" v map;; +let v = (parser_40, 4200, fieldsig_40);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i586" v map;; -let v = (parser_9, 4204);; +let v = (parser_9, 4204, fieldsig_9);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i686" v map;; -let v = (parser_41, 2124);; +let v = (parser_41, 2124, fieldsig_41);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc" v map;; -let v = (parser_42, 6712);; +let v = (parser_42, 6712, fieldsig_42);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc64" v map;; -let v = (parser_43, 5824);; +let v = (parser_43, 5824, fieldsig_43);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.x86_64" v map;; -let v = (parser_1, 1368);; +let v = (parser_1, 1368, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i686" v map;; -let v = (parser_14, 2104);; +let v = (parser_14, 2104, fieldsig_14);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64" v map;; -let v = (parser_14, 2088);; +let v = (parser_14, 2088, fieldsig_14);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc64iseries" v map;; -let v = (parser_44, 1856);; +let v = (parser_44, 1856, fieldsig_44);; let map = StringMap.add "2.6.18-1.2798.fc6.x86_64" v map;; -let v = (parser_1, 1384);; +let v = (parser_1, 1384, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_14, 2112);; +let v = (parser_14, 2112, fieldsig_14);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc64" v map;; -let v = (parser_10, 1880);; +let v = (parser_10, 1880, fieldsig_10);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc64" v map;; -let v = (parser_10, 3780);; +let v = (parser_10, 3780, fieldsig_10);; let map = StringMap.add "2.6.21-1.3128.fc7.x86_64" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc64" v map;; -let v = (parser_10, 3780);; +let v = (parser_10, 3780, fieldsig_10);; let map = StringMap.add "2.6.21-1.3132.fc7.x86_64" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc64" v map;; -let v = (parser_10, 3780);; +let v = (parser_10, 3780, fieldsig_10);; let map = StringMap.add "2.6.21-1.3141.fc7.x86_64" v map;; -let v = (parser_14, 2132);; +let v = (parser_14, 2132, fieldsig_14);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc64" v map;; -let v = (parser_10, 3780);; +let v = (parser_10, 3780, fieldsig_10);; let map = StringMap.add "2.6.21-1.3144.fc7.x86_64" v map;; -let v = (parser_14, 2112);; +let v = (parser_14, 2112, fieldsig_14);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc64" v map;; -let v = (parser_10, 1880);; +let v = (parser_10, 1880, fieldsig_10);; let map = StringMap.add "2.6.21-1.3145.fc7.x86_64" v map;; -let v = (parser_14, 2112);; +let v = (parser_14, 2112, fieldsig_14);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc64" v map;; -let v = (parser_10, 1880);; +let v = (parser_10, 1880, fieldsig_10);; let map = StringMap.add "2.6.21-1.3190.fc7.x86_64" v map;; -let v = (parser_16, 2116);; +let v = (parser_16, 2116, fieldsig_16);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc64" v map;; -let v = (parser_16, 2116);; +let v = (parser_16, 2116, fieldsig_16);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc64" v map;; -let v = (parser_16, 2116);; +let v = (parser_16, 2116, fieldsig_16);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc64" v map;; -let v = (parser_14, 2072);; +let v = (parser_14, 2072, fieldsig_14);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc64" v map;; -let v = (parser_10, 1832);; +let v = (parser_10, 1832, fieldsig_10);; let map = StringMap.add "2.6.21-1.3228.fc7.x86_64" v map;; -let v = (parser_19, 2292);; +let v = (parser_19, 2292, fieldsig_19);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc64" v map;; -let v = (parser_22, 2308);; +let v = (parser_22, 2308, fieldsig_22);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc64" v map;; -let v = (parser_25, 2276);; +let v = (parser_25, 2276, fieldsig_25);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc64" v map;; -let v = (parser_25, 2276);; +let v = (parser_25, 2276, fieldsig_25);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc64" v map;; -let v = (parser_28, 2292);; +let v = (parser_28, 2292, fieldsig_28);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc64" v map;; -let v = (parser_25, 2276);; +let v = (parser_25, 2276, fieldsig_25);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc64" v map;; -let v = (parser_31, 2272);; +let v = (parser_31, 2272, fieldsig_31);; let map = StringMap.add "2.6.23.14-135.fc8.ppc64" v map;; -let v = (parser_31, 2272);; +let v = (parser_31, 2272, fieldsig_31);; let map = StringMap.add "2.6.23.14-78.fc7.ppc64" v map;; -let v = (parser_33, 2492);; +let v = (parser_33, 2492, fieldsig_33);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" v map;; -let v = (parser_33, 2492);; +let v = (parser_33, 2492, fieldsig_33);; let map = StringMap.add "2.6.24-7.fc9.ppc64" v map;; -let v = (parser_33, 2492);; +let v = (parser_33, 2492, fieldsig_33);; let map = StringMap.add "2.6.24-9.fc9.ppc64" v map;; -let v = (parser_39, 2572);; +let v = (parser_39, 2572, fieldsig_39);; let map = StringMap.add "2.6.26.2-2.fc8.ppc64" v map;; -let v = (parser_42, 6712);; +let v = (parser_42, 6712, fieldsig_42);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc64" v map;; +let v = (parser_42, 6712, fieldsig_42);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc64" v map;; -let v = (parser_13, 1592);; +let v = (parser_13, 1592, fieldsig_13);; let map = StringMap.add "2.6.18-1.2798.fc6.ppc" v map;; -let v = (parser_13, 1608);; +let v = (parser_13, 1608, fieldsig_13);; let map = StringMap.add "2.6.20-1.2933.fc6.ppc" v map;; -let v = (parser_13, 1620);; +let v = (parser_13, 1620, fieldsig_13);; let map = StringMap.add "2.6.21-1.3128.fc7.ppc" v map;; -let v = (parser_13, 1620);; +let v = (parser_13, 1620, fieldsig_13);; let map = StringMap.add "2.6.21-1.3132.fc7.ppc" v map;; -let v = (parser_13, 1620);; +let v = (parser_13, 1620, fieldsig_13);; let map = StringMap.add "2.6.21-1.3141.fc7.ppc" v map;; -let v = (parser_13, 1620);; +let v = (parser_13, 1620, fieldsig_13);; let map = StringMap.add "2.6.21-1.3144.fc7.ppc" v map;; -let v = (parser_13, 1608);; +let v = (parser_13, 1608, fieldsig_13);; let map = StringMap.add "2.6.21-1.3145.fc7.ppc" v map;; -let v = (parser_13, 1608);; +let v = (parser_13, 1608, fieldsig_13);; let map = StringMap.add "2.6.21-1.3190.fc7.ppc" v map;; -let v = (parser_13, 1628);; +let v = (parser_13, 1628, fieldsig_13);; let map = StringMap.add "2.6.21-1.3209.fc8.ppc" v map;; -let v = (parser_13, 1628);; +let v = (parser_13, 1628, fieldsig_13);; let map = StringMap.add "2.6.21-1.3218.fc8.ppc" v map;; -let v = (parser_13, 1628);; +let v = (parser_13, 1628, fieldsig_13);; let map = StringMap.add "2.6.21-1.3221.fc8.ppc" v map;; -let v = (parser_13, 1584);; +let v = (parser_13, 1584, fieldsig_13);; let map = StringMap.add "2.6.21-1.3228.fc7.ppc" v map;; -let v = (parser_18, 1796);; +let v = (parser_18, 1796, fieldsig_18);; let map = StringMap.add "2.6.21-1.3234.fc8.ppc" v map;; -let v = (parser_21, 1796);; +let v = (parser_21, 1796, fieldsig_21);; let map = StringMap.add "2.6.21-1.3236.fc8.ppc" v map;; -let v = (parser_24, 1772);; +let v = (parser_24, 1772, fieldsig_24);; let map = StringMap.add "2.6.21-1.3238.fc8.ppc" v map;; -let v = (parser_24, 1772);; +let v = (parser_24, 1772, fieldsig_24);; let map = StringMap.add "2.6.21-1.3242.fc8.ppc" v map;; -let v = (parser_27, 1772);; +let v = (parser_27, 1772, fieldsig_27);; let map = StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc" v map;; -let v = (parser_24, 1772);; +let v = (parser_24, 1772, fieldsig_24);; let map = StringMap.add "2.6.22-0.rc7.2.fc8.ppc" v map;; -let v = (parser_30, 1760);; +let v = (parser_30, 1760, fieldsig_30);; let map = StringMap.add "2.6.23.14-135.fc8.ppc" v map;; -let v = (parser_30, 1760);; +let v = (parser_30, 1760, fieldsig_30);; let map = StringMap.add "2.6.23.14-78.fc7.ppc" v map;; -let v = (parser_32, 1948);; +let v = (parser_32, 1948, fieldsig_32);; let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc" v map;; -let v = (parser_32, 1948);; +let v = (parser_32, 1948, fieldsig_32);; let map = StringMap.add "2.6.24-7.fc9.ppc" v map;; -let v = (parser_32, 1948);; +let v = (parser_32, 1948, fieldsig_32);; let map = StringMap.add "2.6.24-9.fc9.ppc" v map;; -let v = (parser_38, 1992);; +let v = (parser_38, 1992, fieldsig_38);; let map = StringMap.add "2.6.26.2-2.fc8.ppc" v map;; -let v = (parser_41, 2136);; +let v = (parser_41, 2136, fieldsig_41);; +let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc" v map;; +let v = (parser_41, 2136, fieldsig_41);; let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc" v map;; -let v = (parser_1, 1384);; +let v = (parser_1, 1384, fieldsig_1);; let map = StringMap.add "2.6.18-1.2798.fc6.i686" v map;; -let v = (parser_15, 1928);; +let v = (parser_15, 1928, fieldsig_15);; let map = StringMap.add "2.6.18-1.2798.fc6.x86_64" v map;; -let v = (parser_1, 1400);; +let v = (parser_1, 1400, fieldsig_1);; let map = StringMap.add "2.6.20-1.2933.fc6.i686" v map;; -let v = (parser_10, 1920);; +let v = (parser_10, 1920, fieldsig_10);; let map = StringMap.add "2.6.20-1.2933.fc6.x86_64" v map;; type kernel_version = string;; let task_struct_known version = StringMap.mem version map;; let task_struct_size version = - let (_, size) = StringMap.find version map in size;; + let (_, size, _) = StringMap.find version map in size;; let task_struct_of_bits version bits = - let (parsefn, _) = StringMap.find version map in parsefn bits;; + let (parsefn, _, _) = StringMap.find version map in parsefn bits;; let get_task_struct version mem addr = - let (parsefn, size) = StringMap.find version map in + let (parsefn, size, _) = StringMap.find version map in let bytes = Virt_mem_mmap.get_bytes mem addr size in let bits = Bitstring.bitstring_of_string bytes in parsefn bits;; +let field_signature_of_task_struct_state version = + let (_, _, fs) = StringMap.find version map in fs.__fs_task_struct_state;; +let field_signature_of_task_struct_prio version = + let (_, _, fs) = StringMap.find version map in fs.__fs_task_struct_prio;; +let field_signature_of_task_struct_normal_prio version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_task_struct_normal_prio;; +let field_signature_of_task_struct_static_prio version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_task_struct_static_prio;; +let field_signature_of_task_struct_tasks'prev version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_task_struct_tasks'prev;; +let field_signature_of_task_struct_tasks'next version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_task_struct_tasks'next;; +let field_signature_of_task_struct_mm version = + let (_, _, fs) = StringMap.find version map in fs.__fs_task_struct_mm;; +let field_signature_of_task_struct_active_mm version = + let (_, _, fs) = StringMap.find version map + in fs.__fs_task_struct_active_mm;; +let field_signature_of_task_struct_comm version = + let (_, _, fs) = StringMap.find version map in fs.__fs_task_struct_comm;; +let field_signature_of_task_struct_pid version = + let (_, _, fs) = StringMap.find version map in fs.__fs_task_struct_pid;; diff --git a/lib/kernel_task_struct.mli b/lib/kernel_task_struct.mli index 68c9d84..101642f 100644 --- a/lib/kernel_task_struct.mli +++ b/lib/kernel_task_struct.mli @@ -1,11 +1,11 @@ -exception ParseError of string * string * string;; type t = - { task_struct_active_mm : Virt_mem_mmap.addr; task_struct_comm : string; - task_struct_mm : Virt_mem_mmap.addr; task_struct_normal_prio : int64; - task_struct_pid : int64; task_struct_prio : int64; - task_struct_state : int64; task_struct_static_prio : int64; + { task_struct_state : int64; task_struct_prio : int64; + task_struct_normal_prio : int64; task_struct_static_prio : int64; + task_struct_tasks'prev : Virt_mem_mmap.addr; task_struct_tasks'next : Virt_mem_mmap.addr; - task_struct_tasks'prev : Virt_mem_mmap.addr + task_struct_mm : Virt_mem_mmap.addr; + task_struct_active_mm : Virt_mem_mmap.addr; task_struct_comm : string; + task_struct_pid : int64 };; val struct_name : string;; type kernel_version = string;; @@ -15,3 +15,23 @@ val task_struct_of_bits : kernel_version -> Bitstring.bitstring -> t;; val get_task_struct : kernel_version -> ('a, 'b, [ | `HasMapping ]) Virt_mem_mmap.t -> Virt_mem_mmap.addr -> t;; +val field_signature_of_task_struct_state : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_prio : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_normal_prio : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_static_prio : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_tasks'prev : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_tasks'next : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_mm : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_active_mm : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_comm : + kernel_version -> Virt_mem_types.fieldsig;; +val field_signature_of_task_struct_pid : + kernel_version -> Virt_mem_types.fieldsig;; diff --git a/lib/virt_mem.ml b/lib/virt_mem.ml index ca89e32..7bd30dc 100644 --- a/lib/virt_mem.ml +++ b/lib/virt_mem.ml @@ -44,7 +44,8 @@ let tools = ref [] (* Registration function used by the tools. *) let register ?(needs_ksyms = false) ?(needs_utsname = false) - ?(needs_tasks = false) ?(needs_everything = false) + ?(needs_tasks = false) ?(needs_net_devices = false) + ?(needs_everything = false) ~run ?(external_cmd = true) ?(extra_args = []) @@ -52,7 +53,8 @@ let register name summary description = tools := (name, (name, summary, description, - needs_ksyms, needs_utsname, needs_tasks, needs_everything, + needs_ksyms, needs_utsname, needs_tasks, needs_net_devices, + needs_everything, run, external_cmd, extra_args, argcheck)) :: !tools @@ -111,7 +113,7 @@ let main () = match tool with | None -> (* Generic usage message. *) let tools = List.map ( - fun (name, (_, summary, _, _, _, _, _, _, external_cmd, _, _)) -> + fun (name, (_, summary, _, _, _, _, _, _, _, external_cmd, _, _)) -> if external_cmd then "virt-"^name, summary else "virt-mem "^name, summary ) tools in @@ -138,7 +140,7 @@ To display extra help for a single tool, do: Options:") tools (* Tool-specific usage message. *) - | Some (name, summary, description, _, _, _, _, _, external_cmd, _, _) -> + | Some (name, summary, description, _, _, _, _, _, _, external_cmd, _, _) -> let cmd = if external_cmd then "virt-" ^ name else "virt-mem " ^ name in @@ -254,7 +256,7 @@ Options:") cmd summary description in let argspec = let extra_args = match tool with | None -> [] - | Some (_, _, _, _, _, _, _, _, _, extra_args, _) -> extra_args in + | Some (_, _,_, _, _, _, _, _, _, _, extra_args, _) -> extra_args in let argspec = [ "-A", Arg.String set_architecture, "arch " ^ s_"Set kernel architecture, endianness and word size"; @@ -308,7 +310,8 @@ Options:") cmd summary description in * Detect that final case now and give an error. *) let name, _, _, - needs_ksyms, needs_utsname, needs_tasks, needs_everything, + needs_ksyms, needs_utsname, needs_tasks, needs_net_devices, + needs_everything, run, external_cmd, extra_args, argcheck = match tool with | Some t -> t @@ -500,7 +503,8 @@ Possibly the '-T' command line parameter was used inconsistently."); let images = List.map ( fun image -> - let kdata = { ksyms = None; utsname = None; tasks = None } in + let kdata = { ksyms = None; utsname = None; tasks = None; + net_devices = None } in image, kdata ) images in (* Certain needs are dependent on others ... *) @@ -513,6 +517,9 @@ Possibly the '-T' command line parameter was used inconsistently."); let needs_ksyms, needs_utsname, needs_tasks = if needs_everything then true, true, true else needs_ksyms, needs_utsname, needs_tasks in + let needs_ksyms, needs_utsname, needs_net_devices = + if needs_everything then true, true, true + else needs_ksyms, needs_utsname, needs_net_devices in (* Do the kernel symbol analysis. *) let images = @@ -569,6 +576,22 @@ Possibly the '-T' command line parameter was used inconsistently."); | _, _ -> image, kdata ) images in + (* Get the net devices. *) + let images = + if not needs_net_devices then images + else + List.map ( + fun (image, ({ ksyms = ksyms; utsname = utsname } as kdata)) -> + match ksyms, utsname with + | Some ksyms, Some { kernel_release = kversion } -> + let image, net_devices = + Virt_mem_net_devices.find_net_devices debug + image ksyms kversion in + let kdata = { kdata with net_devices = net_devices } in + image, kdata + | _, _ -> image, kdata + ) images in + (* Run the tool's main function. *) let errors = ref 0 in List.iter ( @@ -581,6 +604,8 @@ Possibly the '-T' command line parameter was used inconsistently."); failwith (s_"could not read kernel version") else if needs_tasks && kdata.tasks = None then failwith (s_"could not read process table") + else if needs_net_devices && kdata.net_devices = None then + failwith (s_"could not read net device table") ); run debug image kdata with exn -> diff --git a/lib/virt_mem.mli b/lib/virt_mem.mli index ab5ba47..6356981 100644 --- a/lib/virt_mem.mli +++ b/lib/virt_mem.mli @@ -22,6 +22,7 @@ val register : ?needs_ksyms:bool -> ?needs_utsname:bool -> ?needs_tasks:bool -> + ?needs_net_devices:bool -> ?needs_everything:bool -> run:(bool -> Virt_mem_types.image -> Virt_mem_types.kdata -> unit) -> ?external_cmd:bool -> @@ -41,7 +42,8 @@ val register : these structures in before calling [~run]. - [~needs_ksyms:true] if kernel symbols are needed - [~needs_utsname:true] if kernel version (utsname) is needed - - [~needs_task_struct:true] if all task_struct (processes) are needed + - [~needs_tasks:true] if all task_struct (processes) are needed + - [~needs_net_devices:true] if all net devices are needed - [~needs_everything:true] if the tool requires as much as possible (but will not fail if we cannot determine everything) diff --git a/lib/virt_mem_kernels.ml b/lib/virt_mem_kernels.ml index 14ce07a..37644a5 100644 --- a/lib/virt_mem_kernels.ml +++ b/lib/virt_mem_kernels.ml @@ -106,7 +106,12 @@ let kernels = "2.6.26.2-2.fc8.i686"; "2.6.26.2-2.fc8.i686"; "2.6.26.2-2.fc8.i686"; "2.6.26.2-2.fc8.ppc"; "2.6.26.2-2.fc8.ppc"; "2.6.26.2-2.fc8.ppc64"; "2.6.26.2-2.fc8.ppc64"; "2.6.26.2-2.fc8.x86_64"; "2.6.26.2-2.fc8.x86_64"; - "2.6.27-0.244.rc2.git1.fc10.i586"; "2.6.27-0.244.rc2.git1.fc10.i686"; - "2.6.27-0.244.rc2.git1.fc10.i686"; "2.6.27-0.244.rc2.git1.fc10.ppc"; - "2.6.27-0.244.rc2.git1.fc10.ppc"; "2.6.27-0.244.rc2.git1.fc10.ppc64"; - "2.6.27-0.244.rc2.git1.fc10.ppc64"; "2.6.27-0.244.rc2.git1.fc10.x86_64" ];; + "2.6.27-0.238.rc2.fc10.i686"; "2.6.27-0.241.rc2.git1.fc10.i586"; + "2.6.27-0.241.rc2.git1.fc10.i686"; "2.6.27-0.241.rc2.git1.fc10.i686"; + "2.6.27-0.241.rc2.git1.fc10.ppc"; "2.6.27-0.241.rc2.git1.fc10.ppc"; + "2.6.27-0.241.rc2.git1.fc10.ppc64"; "2.6.27-0.241.rc2.git1.fc10.ppc64"; + "2.6.27-0.241.rc2.git1.fc10.x86_64"; "2.6.27-0.244.rc2.git1.fc10.i586"; + "2.6.27-0.244.rc2.git1.fc10.i686"; "2.6.27-0.244.rc2.git1.fc10.i686"; + "2.6.27-0.244.rc2.git1.fc10.ppc"; "2.6.27-0.244.rc2.git1.fc10.ppc"; + "2.6.27-0.244.rc2.git1.fc10.ppc64"; "2.6.27-0.244.rc2.git1.fc10.ppc64"; + "2.6.27-0.244.rc2.git1.fc10.x86_64" ];; diff --git a/lib/virt_mem_net_devices.ml b/lib/virt_mem_net_devices.ml new file mode 100644 index 0000000..d792d0d --- /dev/null +++ b/lib/virt_mem_net_devices.ml @@ -0,0 +1,150 @@ +(* Memory info command for virtual domains. + (C) Copyright 2008 Richard W.M. Jones, Red Hat Inc. + http://libvirt.org/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + *) + +open Printf + +open Virt_mem_gettext.Gettext +open Virt_mem_utils +open Virt_mem_types + +open Kernel_net_device + +type linkage = Next | DevList of int + +let rec find_net_devices debug image ksymmap kernel_version = + if not (net_device_known kernel_version) then ( + eprintf (f_"%s: %s: unknown kernel version +Try a newer version of virt-mem, or if the guest is not from a +supported Linux distribution, see this page about adding support: + http://et.redhat.com/~rjones/virt-mem/faq.html\n") + image.domname kernel_version; + image, None + ) else ( + let size = net_device_size kernel_version in + + (* In kernels < around 2.6.22, this is a simple linked list: + * dev_base -> next -> next + * In kernels >= 2.6.23, this is a list_head: + * dev_base_head -> list_head dev_list -> ... + *) + let linkage = + let { field_available = available } = + field_signature_of_net_device_next kernel_version in + if available then + Some Next + else ( + let { field_available = available; field_offset = offset } = + field_signature_of_net_device_dev_list'next kernel_version in + if available then + Some (DevList offset) + else ( + eprintf (f_"%s: kernel net_device table is not linked through either next pointer or dev_list list_head. Cannot read net devices.\n") image.domname; + None + ) + ) in + match linkage with + | None -> image, None + + | Some Next -> + printf "linkage = Next\n%!"; + + (* Linkage through old-style chain of next pointers. *) + let dev_base = + try Some (Ksymmap.find "dev_base" ksymmap) + with Not_found -> + eprintf (f_"%s: could not find dev_base symbol in kernel image\n") image.domname; + None in + (match dev_base with + | None -> image, None + | Some dev_base -> + do_next image kernel_version dev_base size + ); + + | Some (DevList offset) -> + printf "linkage = DevList %d\n%!" offset; + + (* Linkage through new-style list_head dev_list. *) + let dev_base_head = + try Some (Ksymmap.find "dev_base_head" ksymmap) + with Not_found -> + eprintf (f_"%s: could not find dev_base_head symbol in kernel image\n") image.domname; + None in + (match dev_base_head with + | None -> image, None + | Some dev_base_head -> + let dev_base_head = + Virt_mem_mmap.follow_pointer image.mem dev_base_head in + + do_dev_list image kernel_version dev_base_head offset size + ); + ) + +(* Iterate dev_base_head -> list_head dev_list -> ... *) +and do_dev_list image kernel_version dev_base_head offset size = + (* The list_head points into the middle of the structure. + * Adjust this address to point to the start of the + * structure. + *) + let addr = Int64.sub dev_base_head (Int64.of_int offset) in + + printf "do_dev_list, size = %d\n" size; + + let image = + let rec loop image addr = + let mapped = Virt_mem_mmap.is_mapped_range image.mem addr size in + let image = + if not mapped then + Virt_mem_types.load_memory image addr size + else + image in + let dev = get_net_device kernel_version image.mem addr in + printf "net_device_name = %S\n" dev.net_device_name; + let addr = Option.get dev.net_device_dev_list'next in + if addr <> dev_base_head then + loop image addr + else + image + in + loop image addr in + image, Some dev_base_head + +(* Iterate dev_base -> next -> next ... *) +and do_next image kernel_version addr size = + printf "do_next, size = %d\n" size; + + let image = + let rec loop image addr = + if addr <> 0L then ( + let mapped = Virt_mem_mmap.is_mapped_range image.mem addr size in + let image = + if not mapped then + Virt_mem_types.load_memory image addr size + else + image in + let dev = get_net_device kernel_version image.mem addr in + printf "net_device_name = %S\n" dev.net_device_name; + let addr = + match dev.net_device_next with + | None -> assert false | Some addr -> addr in + loop image addr + ) else + image + in + loop image addr in + image, Some addr diff --git a/lib/virt_mem_net_devices.mli b/lib/virt_mem_net_devices.mli new file mode 100644 index 0000000..cdd23a0 --- /dev/null +++ b/lib/virt_mem_net_devices.mli @@ -0,0 +1,26 @@ +(** Get net device list from kernel. *) +(* Memory info command for virtual domains. + (C) Copyright 2008 Richard W.M. Jones, Red Hat Inc. + http://libvirt.org/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + *) + +val find_net_devices : bool -> + Virt_mem_types.image -> + Virt_mem_types.ksymmap -> + string -> + Virt_mem_types.image * Virt_mem_mmap.addr option +(** Find and load the net device list. *) diff --git a/lib/virt_mem_types.ml b/lib/virt_mem_types.ml index 293d2de..f8d3f0f 100644 --- a/lib/virt_mem_types.ml +++ b/lib/virt_mem_types.ml @@ -53,6 +53,14 @@ type kdata = { ksyms : ksymmap option; utsname : utsname option; tasks : Virt_mem_mmap.addr option; + net_devices : Virt_mem_mmap.addr option; +} + +exception ParseError of string * string * string + +type fieldsig = { + field_available : bool; + field_offset : int; } (* This is the maximum we can download in one go over the libvirt diff --git a/lib/virt_mem_types.mli b/lib/virt_mem_types.mli index a95b770..2d6e9ee 100644 --- a/lib/virt_mem_types.mli +++ b/lib/virt_mem_types.mli @@ -75,6 +75,9 @@ type kdata = { tasks : Virt_mem_mmap.addr option; (** Linked list of tasks (processes) starting at the address of init_task (swapper). *) + net_devices : Virt_mem_mmap.addr option; (** Linked list of net devices + starting at the address of + dev_base_head. *) } (** Optional data derived from the raw kernel image by the main program and passed to the tools' [~run] functions. @@ -87,6 +90,20 @@ type kdata = { fields. *) +(** {2 Kernel structure parsers} *) + +exception ParseError of string * string * string + (** Parsing exception raised by [Kernel_*] parser functions. + + The fields are: structure name, function which raised the error, + error message. *) + +type fieldsig = { + field_available : bool; (** Field available in this kernel version? *) + field_offset : int; (** Offset of field in this kernel version. *) +} + (** Returned by [Kernel_*.field_signature_of_*] functions. *) + (** {2 Load kernel memory} *) type load_memory_error =