Using optional fields, navigate net_device list in its various incarnations.
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 11 Aug 2008 17:20:03 +0000 (18:20 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 11 Aug 2008 17:20:03 +0000 (18:20 +0100)
13 files changed:
lib/.depend
lib/Makefile.in
lib/kernel_net_device.ml
lib/kernel_net_device.mli
lib/kernel_task_struct.ml
lib/kernel_task_struct.mli
lib/virt_mem.ml
lib/virt_mem.mli
lib/virt_mem_kernels.ml
lib/virt_mem_net_devices.ml [new file with mode: 0644]
lib/virt_mem_net_devices.mli [new file with mode: 0644]
lib/virt_mem_types.ml
lib/virt_mem_types.mli

index 99f71ba..ccea623 100644 (file)
@@ -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 \
index 40ef195..ee387f8 100644 (file)
@@ -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)
index df704d2..c31e34f 100644 (file)
  * 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;;
index 3fd4ce9..c469020 100644 (file)
@@ -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;;
index 91a87f9..df42212 100644 (file)
  * 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;;
index 68c9d84..101642f 100644 (file)
@@ -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;;
index ca89e32..7bd30dc 100644 (file)
@@ -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 ->
index ab5ba47..6356981 100644 (file)
@@ -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)
 
index 14ce07a..37644a5 100644 (file)
@@ -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 (file)
index 0000000..d792d0d
--- /dev/null
@@ -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 (file)
index 0000000..cdd23a0
--- /dev/null
@@ -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. *)
index 293d2de..f8d3f0f 100644 (file)
@@ -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
index a95b770..2d6e9ee 100644 (file)
@@ -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 =