* that you do 'make update-kernel-structs'.
*)
-type ('a, 'b) task_struct =
- { task_struct_shape : 'a; task_struct_content : 'b
- };;
-type task_struct_shape_fields_2 =
- { task_struct_shape_fields_2_tasks'next : Virt_mem_mmap.addr;
- task_struct_shape_fields_2_tasks'prev : Virt_mem_mmap.addr
- };;
+module StringMap = Map.Make(String);;
+module AddrMap = Map.Make(Int64);;
+type kernel_version = string;;
+let match_err = "failed to match kernel structure";;
+let struct_missing_err = "struct does not exist in this kernel version";;
+let unknown_kernel_version version struct_name =
+ invalid_arg
+ (Printf.sprintf
+ "%s: unknown kernel version or
+struct %s is not supported in this kernel.
+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
+"
+ version struct_name);;
+let zero = 0;;
+type ('a, 'b) task_struct = ('a * 'b);;
type task_struct_shape_fields_1 =
- { task_struct_shape_fields_1_run_list'next : Virt_mem_mmap.addr;
- task_struct_shape_fields_1_run_list'prev : Virt_mem_mmap.addr;
- task_struct_shape_fields_1_tasks'next : Virt_mem_mmap.addr;
- task_struct_shape_fields_1_tasks'prev : Virt_mem_mmap.addr
- };;
-type task_struct_content_fields_3 =
- { task_struct_content_fields_3_comm : string;
- task_struct_content_fields_3_normal_prio : int64;
- task_struct_content_fields_3_pid : int64;
- task_struct_content_fields_3_prio : int64;
- task_struct_content_fields_3_state : int64;
- task_struct_content_fields_3_static_prio : int64
+ { task_struct_shape_fields_1_tasks'next : Virt_mem_mmap.addr
};;
-type ('a, 'b) net_device = { net_device_shape : 'a; net_device_content : 'b };;
-type net_device_shape_fields_12 =
- { net_device_shape_fields_12_ip6_ptr : Virt_mem_mmap.addr;
- net_device_shape_fields_12_ip_ptr : Virt_mem_mmap.addr;
- net_device_shape_fields_12_next : Virt_mem_mmap.addr
+type task_struct_content_fields_2 =
+ { task_struct_content_fields_2_comm : string;
+ task_struct_content_fields_2_normal_prio : int64;
+ task_struct_content_fields_2_pid : int64;
+ task_struct_content_fields_2_prio : int64;
+ task_struct_content_fields_2_state : int64;
+ task_struct_content_fields_2_static_prio : int64;
+ task_struct_content_fields_2_tasks'prev : Virt_mem_mmap.addr
};;
-type net_device_shape_fields_13 =
- { net_device_shape_fields_13_dev_list'next : Virt_mem_mmap.addr;
- net_device_shape_fields_13_dev_list'prev : Virt_mem_mmap.addr;
- net_device_shape_fields_13_ip6_ptr : Virt_mem_mmap.addr;
- net_device_shape_fields_13_ip_ptr : Virt_mem_mmap.addr
+type ('a, 'b) net_device = ('a * 'b);;
+type net_device_shape_fields_8 =
+ { net_device_shape_fields_8_dev_list'next : Virt_mem_mmap.addr;
+ net_device_shape_fields_8_ip6_ptr : Virt_mem_mmap.addr;
+ net_device_shape_fields_8_ip_ptr : Virt_mem_mmap.addr
};;
-type net_device_content_fields_14 =
- { net_device_content_fields_14_addr_len : int64;
- net_device_content_fields_14_flags : int64;
- net_device_content_fields_14_mtu : int64;
- net_device_content_fields_14_name : string;
- net_device_content_fields_14_operstate : int64;
- net_device_content_fields_14_perm_addr : string
+type net_device_content_fields_9 =
+ { net_device_content_fields_9_addr_len : int64;
+ net_device_content_fields_9_dev_list'prev : Virt_mem_mmap.addr;
+ net_device_content_fields_9_flags : int64;
+ net_device_content_fields_9_mtu : int64;
+ net_device_content_fields_9_name : string;
+ net_device_content_fields_9_operstate : int64;
+ net_device_content_fields_9_perm_addr : string
};;
-type ('a, 'b) net = { net_shape : 'a; net_content : 'b };;
-type net_shape_fields_22 =
- { net_shape_fields_22_dev_base_head'next : Virt_mem_mmap.addr;
- net_shape_fields_22_dev_base_head'prev : Virt_mem_mmap.addr
+type ('a, 'b) net = ('a * 'b);;
+type net_shape_fields_14 =
+ { net_shape_fields_14_dev_base_head'next : Virt_mem_mmap.addr;
+ net_shape_fields_14_dev_base_head'prev : Virt_mem_mmap.addr
};;
-type net_content_fields_23 = unit;;
-type ('a, 'b) in_device = { in_device_shape : 'a; in_device_content : 'b };;
-type in_device_shape_fields_28 =
- { in_device_shape_fields_28_ifa_list : Virt_mem_mmap.addr
+type net_content_fields_15 = unit;;
+type ('a, 'b) in_device = ('a * 'b);;
+type in_device_shape_fields_20 =
+ { in_device_shape_fields_20_ifa_list : Virt_mem_mmap.addr
};;
-type in_device_content_fields_29 = unit;;
-type ('a, 'b) inet6_dev = { inet6_dev_shape : 'a; inet6_dev_content : 'b };;
-type inet6_dev_shape_fields_34 =
- { inet6_dev_shape_fields_34_addr_list : Virt_mem_mmap.addr
+type in_device_content_fields_21 = unit;;
+type ('a, 'b) inet6_dev = ('a * 'b);;
+type inet6_dev_shape_fields_26 =
+ { inet6_dev_shape_fields_26_addr_list : Virt_mem_mmap.addr
};;
-type inet6_dev_content_fields_35 = unit;;
-type ('a, 'b) in_ifaddr = { in_ifaddr_shape : 'a; in_ifaddr_content : 'b };;
-type in_ifaddr_shape_fields_40 =
- { in_ifaddr_shape_fields_40_ifa_next : Virt_mem_mmap.addr
+type inet6_dev_content_fields_27 = unit;;
+type ('a, 'b) in_ifaddr = ('a * 'b);;
+type in_ifaddr_shape_fields_32 =
+ { in_ifaddr_shape_fields_32_ifa_next : Virt_mem_mmap.addr
};;
-type in_ifaddr_content_fields_41 =
- { in_ifaddr_content_fields_41_ifa_address : int64;
- in_ifaddr_content_fields_41_ifa_broadcast : int64;
- in_ifaddr_content_fields_41_ifa_local : int64;
- in_ifaddr_content_fields_41_ifa_mask : int64
+type in_ifaddr_content_fields_33 =
+ { in_ifaddr_content_fields_33_ifa_address : int64;
+ in_ifaddr_content_fields_33_ifa_broadcast : int64;
+ in_ifaddr_content_fields_33_ifa_local : int64;
+ in_ifaddr_content_fields_33_ifa_mask : int64
};;
-type ('a, 'b) inet6_ifaddr =
- { inet6_ifaddr_shape : 'a; inet6_ifaddr_content : 'b
+type ('a, 'b) inet6_ifaddr = ('a * 'b);;
+type inet6_ifaddr_shape_fields_38 =
+ { inet6_ifaddr_shape_fields_38_lst_next : Virt_mem_mmap.addr
};;
-type inet6_ifaddr_shape_fields_46 =
- { inet6_ifaddr_shape_fields_46_lst_next : Virt_mem_mmap.addr
+type inet6_ifaddr_content_fields_39 =
+ { inet6_ifaddr_content_fields_39_prefix_len : int64
};;
-type inet6_ifaddr_content_fields_47 =
- { inet6_ifaddr_content_fields_47_prefix_len : int64
- };;
-module StringMap = Map.Make(String);;
let offset_of_net_device_dev_list'next =
let map =
- StringMap.add "2.6.27-0.226.rc1.git5.fc10.ppc" 48
- (StringMap.add "2.6.26.1-9.fc9.ppc64" 72
- (StringMap.add "2.6.25.14-69.fc8.x86_64" 72
- (StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" 72
- (StringMap.add "2.6.22-0.23.rc7.git6.fc8.ppc" 48 StringMap.
- empty))))
+ StringMap.add "2.6.25.14-69.fc8.i686" 48
+ (StringMap.add "2.6.25.14-108.fc9.ppc" 48
+ (StringMap.add "2.6.25.11-97.fc9.i686" 48
+ (StringMap.add "2.6.25.14-69.fc8.ppc64" 72
+ (StringMap.add "2.6.25.14-69.fc8.i586" 48
+ (StringMap.add "2.6.25.11-97.fc9.x86_64" 72
+ (StringMap.add "2.6.25.14-108.fc9.x86_64" 72
+ (StringMap.add "2.6.25.14-69.fc8.ppc" 48
+ (StringMap.add "2.6.25.14-108.fc9.i686" 48
+ (StringMap.add "2.6.25.14-108.fc9.i586" 48
+ (StringMap.add "2.6.25.14-108.fc9.ppc64" 72
+ (StringMap.add "2.6.25.14-69.fc8.x86_64"
+ 72 StringMap.empty)))))))))))
in fun kernel_version -> StringMap.find kernel_version map;;
-let match_err = "failed to match kernel structure";;
-let zero = 0;;
+let task_struct_parser_3 kernel_version bits =
+ bitmatch bits with
+ | { state : zero+64 : offset(0), littleendian;
+ prio : zero+32 : offset(224), littleendian;
+ static_prio : zero+32 : offset(256), littleendian;
+ normal_prio : zero+32 : offset(288), littleendian;
+ tasks'next : zero+64 : offset(3840), littleendian;
+ tasks'prev : zero+64 : offset(3904), littleendian;
+ pid : zero+32 : offset(4352), littleendian;
+ comm : 128 : offset(8392), string } ->
+ let s =
+ { task_struct_shape_fields_1_tasks'next = (if tasks'next <> 0L then Int64.sub tasks'next 480L else tasks'next) } in
+ let c =
+ { task_struct_content_fields_2_comm = comm;
+ task_struct_content_fields_2_normal_prio = normal_prio;
+ task_struct_content_fields_2_pid = pid;
+ task_struct_content_fields_2_prio = prio;
+ task_struct_content_fields_2_state = state;
+ task_struct_content_fields_2_static_prio = static_prio;
+ task_struct_content_fields_2_tasks'prev = tasks'prev } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_3", match_err));;
let task_struct_parser_4 kernel_version bits =
bitmatch bits with
- | { state : zero+32 : offset(0), littleendian;
- prio : zero+32 : offset(192), littleendian;
- static_prio : zero+32 : offset(224), littleendian;
- normal_prio : zero+32 : offset(256), littleendian;
- run_list'next : zero+32 : offset(288), littleendian;
- run_list'prev : zero+32 : offset(320), littleendian;
- tasks'next : zero+32 : offset(992), littleendian;
- tasks'prev : zero+32 : offset(1024), littleendian;
- pid : zero+32 : offset(1344), littleendian;
- comm : 128 : offset(3232), string } ->
- let shape =
- { task_struct_shape_fields_1_run_list'next = Int64.sub run_list'next 36L;
- task_struct_shape_fields_1_run_list'prev = Int64.sub run_list'prev 40L;
- task_struct_shape_fields_1_tasks'next = Int64.sub tasks'next 124L;
- task_struct_shape_fields_1_tasks'prev = Int64.sub tasks'prev 128L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
+ | { state : zero+64 : offset(0), bigendian;
+ prio : zero+32 : offset(224), bigendian;
+ static_prio : zero+32 : offset(256), bigendian;
+ normal_prio : zero+32 : offset(288), bigendian;
+ tasks'next : zero+64 : offset(3840), bigendian;
+ tasks'prev : zero+64 : offset(3904), bigendian;
+ pid : zero+32 : offset(4352), bigendian;
+ comm : 128 : offset(8392), string } ->
+ let s =
+ { task_struct_shape_fields_1_tasks'next = (if tasks'next <> 0L then Int64.sub tasks'next 480L else tasks'next) } in
+ let c =
+ { task_struct_content_fields_2_comm = comm;
+ task_struct_content_fields_2_normal_prio = normal_prio;
+ task_struct_content_fields_2_pid = pid;
+ task_struct_content_fields_2_prio = prio;
+ task_struct_content_fields_2_state = state;
+ task_struct_content_fields_2_static_prio = static_prio;
+ task_struct_content_fields_2_tasks'prev = tasks'prev } in
+ (s, c)
| { _ } ->
raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_4", match_err));;
let task_struct_parser_5 kernel_version bits =
bitmatch bits with
- | { state : zero+64 : offset(0), bigendian;
- prio : zero+32 : offset(320), bigendian;
- static_prio : zero+32 : offset(352), bigendian;
- normal_prio : zero+32 : offset(384), bigendian;
- run_list'next : zero+64 : offset(448), bigendian;
- run_list'prev : zero+64 : offset(512), bigendian;
- tasks'next : zero+64 : offset(1600), bigendian;
- tasks'prev : zero+64 : offset(1664), bigendian;
- pid : zero+32 : offset(2208), bigendian;
- comm : 128 : offset(5440), string } ->
- let shape =
- { task_struct_shape_fields_1_run_list'next = Int64.sub run_list'next 36L;
- task_struct_shape_fields_1_run_list'prev = Int64.sub run_list'prev 40L;
- task_struct_shape_fields_1_tasks'next = Int64.sub tasks'next 124L;
- task_struct_shape_fields_1_tasks'prev = Int64.sub tasks'prev 128L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
+ | { state : zero+32 : offset(0), littleendian;
+ prio : zero+32 : offset(160), littleendian;
+ static_prio : zero+32 : offset(192), littleendian;
+ normal_prio : zero+32 : offset(224), littleendian;
+ tasks'next : zero+32 : offset(3200), littleendian;
+ tasks'prev : zero+32 : offset(3232), littleendian;
+ pid : zero+32 : offset(3552), littleendian;
+ comm : 128 : offset(5896), string } ->
+ let s =
+ { task_struct_shape_fields_1_tasks'next = (if tasks'next <> 0L then Int64.sub tasks'next 400L else tasks'next) } in
+ let c =
+ { task_struct_content_fields_2_comm = comm;
+ task_struct_content_fields_2_normal_prio = normal_prio;
+ task_struct_content_fields_2_pid = pid;
+ task_struct_content_fields_2_prio = prio;
+ task_struct_content_fields_2_state = state;
+ task_struct_content_fields_2_static_prio = static_prio;
+ task_struct_content_fields_2_tasks'prev = tasks'prev } in
+ (s, c)
| { _ } ->
raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_5", match_err));;
let task_struct_parser_6 kernel_version bits =
bitmatch bits with
- | { state : zero+64 : offset(0), littleendian;
- prio : zero+32 : offset(320), littleendian;
- static_prio : zero+32 : offset(352), littleendian;
- normal_prio : zero+32 : offset(384), littleendian;
- run_list'next : zero+64 : offset(448), littleendian;
- run_list'prev : zero+64 : offset(512), littleendian;
- tasks'next : zero+64 : offset(1536), littleendian;
- tasks'prev : zero+64 : offset(1600), littleendian;
- pid : zero+32 : offset(2144), littleendian;
- comm : 128 : offset(5440), string } ->
- let shape =
- { task_struct_shape_fields_1_run_list'next = Int64.sub run_list'next 36L;
- task_struct_shape_fields_1_run_list'prev = Int64.sub run_list'prev 40L;
- task_struct_shape_fields_1_tasks'next = Int64.sub tasks'next 124L;
- task_struct_shape_fields_1_tasks'prev = Int64.sub tasks'prev 128L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
+ | { state : zero+32 : offset(0), littleendian;
+ prio : zero+32 : offset(160), littleendian;
+ static_prio : zero+32 : offset(192), littleendian;
+ normal_prio : zero+32 : offset(224), littleendian;
+ tasks'next : zero+32 : offset(3232), littleendian;
+ tasks'prev : zero+32 : offset(3264), littleendian;
+ pid : zero+32 : offset(3584), littleendian;
+ comm : 128 : offset(5928), string } ->
+ let s =
+ { task_struct_shape_fields_1_tasks'next = (if tasks'next <> 0L then Int64.sub tasks'next 404L else tasks'next) } in
+ let c =
+ { task_struct_content_fields_2_comm = comm;
+ task_struct_content_fields_2_normal_prio = normal_prio;
+ task_struct_content_fields_2_pid = pid;
+ task_struct_content_fields_2_prio = prio;
+ task_struct_content_fields_2_state = state;
+ task_struct_content_fields_2_static_prio = static_prio;
+ task_struct_content_fields_2_tasks'prev = tasks'prev } in
+ (s, c)
| { _ } ->
raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_6", match_err));;
let task_struct_parser_7 kernel_version bits =
prio : zero+32 : offset(160), bigendian;
static_prio : zero+32 : offset(192), bigendian;
normal_prio : zero+32 : offset(224), bigendian;
- run_list'next : zero+32 : offset(256), bigendian;
- run_list'prev : zero+32 : offset(288), bigendian;
- tasks'next : zero+32 : offset(2176), bigendian;
- tasks'prev : zero+32 : offset(2208), bigendian;
- pid : zero+32 : offset(2528), bigendian;
- comm : 128 : offset(4416), string } ->
- let shape =
- { task_struct_shape_fields_1_run_list'next = Int64.sub run_list'next 36L;
- task_struct_shape_fields_1_run_list'prev = Int64.sub run_list'prev 40L;
- task_struct_shape_fields_1_tasks'next = Int64.sub tasks'next 124L;
- task_struct_shape_fields_1_tasks'prev = Int64.sub tasks'prev 128L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
+ tasks'next : zero+32 : offset(3328), bigendian;
+ tasks'prev : zero+32 : offset(3360), bigendian;
+ pid : zero+32 : offset(3680), bigendian;
+ comm : 128 : offset(6056), string } ->
+ let s =
+ { task_struct_shape_fields_1_tasks'next = (if tasks'next <> 0L then Int64.sub tasks'next 416L else tasks'next) } in
+ let c =
+ { task_struct_content_fields_2_comm = comm;
+ task_struct_content_fields_2_normal_prio = normal_prio;
+ task_struct_content_fields_2_pid = pid;
+ task_struct_content_fields_2_prio = prio;
+ task_struct_content_fields_2_state = state;
+ task_struct_content_fields_2_static_prio = static_prio;
+ task_struct_content_fields_2_tasks'prev = tasks'prev } in
+ (s, c)
| { _ } ->
raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_7", match_err));;
-let task_struct_parser_8 kernel_version bits =
- bitmatch bits with
- | { state : zero+64 : offset(0), bigendian;
- prio : zero+32 : offset(224), bigendian;
- static_prio : zero+32 : offset(256), bigendian;
- normal_prio : zero+32 : offset(288), bigendian;
- run_list'next : zero+64 : offset(320), bigendian;
- run_list'prev : zero+64 : offset(384), bigendian;
- tasks'next : zero+64 : offset(3648), bigendian;
- tasks'prev : zero+64 : offset(3712), bigendian;
- pid : zero+32 : offset(4160), bigendian;
- comm : 128 : offset(7752), string } ->
- let shape =
- { task_struct_shape_fields_1_run_list'next = Int64.sub run_list'next 36L;
- task_struct_shape_fields_1_run_list'prev = Int64.sub run_list'prev 40L;
- task_struct_shape_fields_1_tasks'next = Int64.sub tasks'next 124L;
- task_struct_shape_fields_1_tasks'prev = Int64.sub tasks'prev 128L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_8", match_err));;
-let task_struct_parser_9 kernel_version bits =
- bitmatch bits with
- | { state : zero+64 : offset(0), littleendian;
- prio : zero+32 : offset(224), littleendian;
- static_prio : zero+32 : offset(256), littleendian;
- normal_prio : zero+32 : offset(288), littleendian;
- tasks'next : zero+64 : offset(3840), littleendian;
- tasks'prev : zero+64 : offset(3904), littleendian;
- pid : zero+32 : offset(4352), littleendian;
- comm : 128 : offset(8392), string } ->
- let shape =
- { task_struct_shape_fields_2_tasks'next = Int64.sub tasks'next 480L;
- task_struct_shape_fields_2_tasks'prev = Int64.sub tasks'prev 488L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_9", match_err));;
-let task_struct_parser_10 kernel_version bits =
- bitmatch bits with
- | { state : zero+64 : offset(0), bigendian;
- prio : zero+32 : offset(256), bigendian;
- static_prio : zero+32 : offset(288), bigendian;
- normal_prio : zero+32 : offset(320), bigendian;
- tasks'next : zero+64 : offset(4096), bigendian;
- tasks'prev : zero+64 : offset(4160), bigendian;
- pid : zero+32 : offset(4608), bigendian;
- comm : 128 : offset(8712), string } ->
- let shape =
- { task_struct_shape_fields_2_tasks'next = Int64.sub tasks'next 480L;
- task_struct_shape_fields_2_tasks'prev = Int64.sub tasks'prev 488L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_10", match_err));;
-let task_struct_parser_11 kernel_version bits =
- bitmatch bits with
- | { state : zero+32 : offset(0), bigendian;
- prio : zero+32 : offset(192), bigendian;
- static_prio : zero+32 : offset(224), bigendian;
- normal_prio : zero+32 : offset(256), bigendian;
- tasks'next : zero+32 : offset(3712), bigendian;
- tasks'prev : zero+32 : offset(3744), bigendian;
- pid : zero+32 : offset(4064), bigendian;
- comm : 128 : offset(6464), string } ->
- let shape =
- { task_struct_shape_fields_2_tasks'next = Int64.sub tasks'next 480L;
- task_struct_shape_fields_2_tasks'prev = Int64.sub tasks'prev 488L } in
- let content =
- { task_struct_content_fields_3_comm = comm;
- task_struct_content_fields_3_normal_prio = normal_prio;
- task_struct_content_fields_3_pid = pid;
- task_struct_content_fields_3_prio = prio;
- task_struct_content_fields_3_state = state;
- task_struct_content_fields_3_static_prio = static_prio } in
- { task_struct_shape = shape; task_struct_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_11", match_err));;
-let net_device_parser_15 kernel_version bits =
+let net_device_parser_10 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
- next : zero+32 : offset(384), littleendian;
- flags : zero+32 : offset(704), littleendian;
- operstate : zero+8 : offset(784), littleendian;
- mtu : zero+32 : offset(800), littleendian;
- perm_addr : 256 : offset(896), string;
- addr_len : zero+8 : offset(1152), littleendian;
- ip_ptr : zero+32 : offset(1344), littleendian;
- ip6_ptr : zero+32 : offset(1408), littleendian } ->
- let shape =
- { net_device_shape_fields_12_ip6_ptr = ip6_ptr;
- net_device_shape_fields_12_ip_ptr = ip_ptr;
- net_device_shape_fields_12_next = next } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_15", match_err));;
-let net_device_parser_16 kernel_version bits =
- bitmatch bits with
- | { name : 128 : offset(0), string;
- next : zero+64 : offset(576), bigendian;
- flags : zero+32 : offset(1152), bigendian;
- operstate : zero+8 : offset(1232), bigendian;
- mtu : zero+32 : offset(1248), bigendian;
- perm_addr : 256 : offset(1408), string;
- addr_len : zero+8 : offset(1664), bigendian;
- ip_ptr : zero+64 : offset(1984), bigendian;
- ip6_ptr : zero+64 : offset(2112), bigendian } ->
- let shape =
- { net_device_shape_fields_12_ip6_ptr = ip6_ptr;
- net_device_shape_fields_12_ip_ptr = ip_ptr;
- net_device_shape_fields_12_next = next } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_16", match_err));;
-let net_device_parser_17 kernel_version bits =
- bitmatch bits with
- | { name : 128 : offset(0), string;
- next : zero+64 : offset(576), littleendian;
- flags : zero+32 : offset(1152), littleendian;
- operstate : zero+8 : offset(1232), littleendian;
- mtu : zero+32 : offset(1248), littleendian;
- perm_addr : 256 : offset(1408), string;
- addr_len : zero+8 : offset(1664), littleendian;
- ip_ptr : zero+64 : offset(1984), littleendian;
- ip6_ptr : zero+64 : offset(2112), littleendian } ->
- let shape =
- { net_device_shape_fields_12_ip6_ptr = ip6_ptr;
- net_device_shape_fields_12_ip_ptr = ip_ptr;
- net_device_shape_fields_12_next = next } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_17", match_err));;
-let net_device_parser_18 kernel_version bits =
- bitmatch bits with
- | { name : 128 : offset(0), string;
- dev_list'next : zero+32 : offset(384), bigendian;
- dev_list'prev : zero+32 : offset(416), bigendian;
- flags : zero+32 : offset(1472), bigendian;
- operstate : zero+8 : offset(1552), bigendian;
- mtu : zero+32 : offset(1568), bigendian;
- perm_addr : 256 : offset(1664), string;
- addr_len : zero+8 : offset(1920), bigendian;
- ip_ptr : zero+32 : offset(2112), bigendian;
- ip6_ptr : zero+32 : offset(2176), bigendian } ->
- let shape =
- { net_device_shape_fields_13_dev_list'next = Int64.sub dev_list'next 48L;
- net_device_shape_fields_13_dev_list'prev = Int64.sub dev_list'prev 52L;
- net_device_shape_fields_13_ip6_ptr = ip6_ptr;
- net_device_shape_fields_13_ip_ptr = ip_ptr } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_18", match_err));;
-let net_device_parser_19 kernel_version bits =
+ dev_list'next : zero+64 : offset(576), littleendian;
+ dev_list'prev : zero+64 : offset(640), littleendian;
+ flags : zero+32 : offset(2880), littleendian;
+ operstate : zero+8 : offset(2960), littleendian;
+ mtu : zero+32 : offset(2976), littleendian;
+ perm_addr : 256 : offset(3136), string;
+ addr_len : zero+8 : offset(3392), littleendian;
+ ip_ptr : zero+64 : offset(3840), littleendian;
+ ip6_ptr : zero+64 : offset(3968), littleendian } ->
+ let s =
+ { net_device_shape_fields_8_dev_list'next = (if dev_list'next <> 0L then Int64.sub dev_list'next 72L else dev_list'next);
+ net_device_shape_fields_8_ip6_ptr = ip6_ptr;
+ net_device_shape_fields_8_ip_ptr = ip_ptr } in
+ let c =
+ { net_device_content_fields_9_addr_len = addr_len;
+ net_device_content_fields_9_dev_list'prev = dev_list'prev;
+ net_device_content_fields_9_flags = flags;
+ net_device_content_fields_9_mtu = mtu;
+ net_device_content_fields_9_name = name;
+ net_device_content_fields_9_operstate = operstate;
+ net_device_content_fields_9_perm_addr = perm_addr } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_10", match_err));;
+let net_device_parser_11 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
dev_list'next : zero+64 : offset(576), bigendian;
addr_len : zero+8 : offset(3392), bigendian;
ip_ptr : zero+64 : offset(3840), bigendian;
ip6_ptr : zero+64 : offset(3968), bigendian } ->
- let shape =
- { net_device_shape_fields_13_dev_list'next = Int64.sub dev_list'next 48L;
- net_device_shape_fields_13_dev_list'prev = Int64.sub dev_list'prev 52L;
- net_device_shape_fields_13_ip6_ptr = ip6_ptr;
- net_device_shape_fields_13_ip_ptr = ip_ptr } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_19", match_err));;
-let net_device_parser_20 kernel_version bits =
+ let s =
+ { net_device_shape_fields_8_dev_list'next = (if dev_list'next <> 0L then Int64.sub dev_list'next 72L else dev_list'next);
+ net_device_shape_fields_8_ip6_ptr = ip6_ptr;
+ net_device_shape_fields_8_ip_ptr = ip_ptr } in
+ let c =
+ { net_device_content_fields_9_addr_len = addr_len;
+ net_device_content_fields_9_dev_list'prev = dev_list'prev;
+ net_device_content_fields_9_flags = flags;
+ net_device_content_fields_9_mtu = mtu;
+ net_device_content_fields_9_name = name;
+ net_device_content_fields_9_operstate = operstate;
+ net_device_content_fields_9_perm_addr = perm_addr } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_11", match_err));;
+let net_device_parser_12 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
- dev_list'next : zero+64 : offset(576), littleendian;
- dev_list'prev : zero+64 : offset(640), littleendian;
- flags : zero+32 : offset(2880), littleendian;
- operstate : zero+8 : offset(2960), littleendian;
- mtu : zero+32 : offset(2976), littleendian;
- perm_addr : 256 : offset(3136), string;
- addr_len : zero+8 : offset(3392), littleendian;
- ip_ptr : zero+64 : offset(3840), littleendian;
- ip6_ptr : zero+64 : offset(3968), littleendian } ->
- let shape =
- { net_device_shape_fields_13_dev_list'next = Int64.sub dev_list'next 48L;
- net_device_shape_fields_13_dev_list'prev = Int64.sub dev_list'prev 52L;
- net_device_shape_fields_13_ip6_ptr = ip6_ptr;
- net_device_shape_fields_13_ip_ptr = ip_ptr } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_20", match_err));;
-let net_device_parser_21 kernel_version bits =
+ dev_list'next : zero+32 : offset(384), littleendian;
+ dev_list'prev : zero+32 : offset(416), littleendian;
+ flags : zero+32 : offset(1568), littleendian;
+ operstate : zero+8 : offset(1648), littleendian;
+ mtu : zero+32 : offset(1664), littleendian;
+ perm_addr : 256 : offset(1760), string;
+ addr_len : zero+8 : offset(2016), littleendian;
+ ip_ptr : zero+32 : offset(2304), littleendian;
+ ip6_ptr : zero+32 : offset(2368), littleendian } ->
+ let s =
+ { net_device_shape_fields_8_dev_list'next = (if dev_list'next <> 0L then Int64.sub dev_list'next 48L else dev_list'next);
+ net_device_shape_fields_8_ip6_ptr = ip6_ptr;
+ net_device_shape_fields_8_ip_ptr = ip_ptr } in
+ let c =
+ { net_device_content_fields_9_addr_len = addr_len;
+ net_device_content_fields_9_dev_list'prev = dev_list'prev;
+ net_device_content_fields_9_flags = flags;
+ net_device_content_fields_9_mtu = mtu;
+ net_device_content_fields_9_name = name;
+ net_device_content_fields_9_operstate = operstate;
+ net_device_content_fields_9_perm_addr = perm_addr } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_12", match_err));;
+let net_device_parser_13 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
dev_list'next : zero+32 : offset(384), bigendian;
dev_list'prev : zero+32 : offset(416), bigendian;
- flags : zero+32 : offset(1536), bigendian;
- operstate : zero+8 : offset(1616), bigendian;
- mtu : zero+32 : offset(1632), bigendian;
+ flags : zero+32 : offset(1568), bigendian;
+ operstate : zero+8 : offset(1648), bigendian;
+ mtu : zero+32 : offset(1664), bigendian;
perm_addr : 256 : offset(1760), string;
addr_len : zero+8 : offset(2016), bigendian;
- ip_ptr : zero+32 : offset(2432), bigendian;
- ip6_ptr : zero+32 : offset(2496), bigendian } ->
- let shape =
- { net_device_shape_fields_13_dev_list'next = Int64.sub dev_list'next 48L;
- net_device_shape_fields_13_dev_list'prev = Int64.sub dev_list'prev 52L;
- net_device_shape_fields_13_ip6_ptr = ip6_ptr;
- net_device_shape_fields_13_ip_ptr = ip_ptr } in
- let content =
- { net_device_content_fields_14_addr_len = addr_len;
- net_device_content_fields_14_flags = flags;
- net_device_content_fields_14_mtu = mtu;
- net_device_content_fields_14_name = name;
- net_device_content_fields_14_operstate = operstate;
- net_device_content_fields_14_perm_addr = perm_addr } in
- { net_device_shape = shape; net_device_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_21", match_err));;
-let net_parser_24 kernel_version bits =
- bitmatch bits with
- | { dev_base_head'next : zero+64 : offset(704), bigendian;
- dev_base_head'prev : zero+64 : offset(768), bigendian } ->
- let shape =
- { net_shape_fields_22_dev_base_head'next = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'next offset
+ ip_ptr : zero+32 : offset(2304), bigendian;
+ ip6_ptr : zero+32 : offset(2368), bigendian } ->
+ let s =
+ { net_device_shape_fields_8_dev_list'next = (if dev_list'next <> 0L then Int64.sub dev_list'next 48L else dev_list'next);
+ net_device_shape_fields_8_ip6_ptr = ip6_ptr;
+ net_device_shape_fields_8_ip_ptr = ip_ptr } in
+ let c =
+ { net_device_content_fields_9_addr_len = addr_len;
+ net_device_content_fields_9_dev_list'prev = dev_list'prev;
+ net_device_content_fields_9_flags = flags;
+ net_device_content_fields_9_mtu = mtu;
+ net_device_content_fields_9_name = name;
+ net_device_content_fields_9_operstate = operstate;
+ net_device_content_fields_9_perm_addr = perm_addr } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_13", match_err));;
+let net_parser_18 kernel_version bits =
+ bitmatch bits with
+ | { dev_base_head'next : zero+32 : offset(416), littleendian;
+ dev_base_head'prev : zero+32 : offset(448), littleendian } ->
+ let s =
+ { net_shape_fields_14_dev_base_head'next = (
+ if dev_base_head'next <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'next offset
+ ) else dev_base_head'next
);
- net_shape_fields_22_dev_base_head'prev = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'prev offset
+ net_shape_fields_14_dev_base_head'prev = (
+ if dev_base_head'prev <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'prev offset
+ ) else dev_base_head'prev
) } in
- let content =
+ let c =
() in
- { net_shape = shape; net_content = content }
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("net", "net_parser_18", match_err));;
+let net_parser_19 kernel_version bits =
+ bitmatch bits with
+ | { dev_base_head'next : zero+32 : offset(416), bigendian;
+ dev_base_head'prev : zero+32 : offset(448), bigendian } ->
+ let s =
+ { net_shape_fields_14_dev_base_head'next = (
+ if dev_base_head'next <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'next offset
+ ) else dev_base_head'next
+ );
+ net_shape_fields_14_dev_base_head'prev = (
+ if dev_base_head'prev <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'prev offset
+ ) else dev_base_head'prev
+ ) } in
+ let c =
+ () in
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("net", "net_parser_24", match_err));;
-let net_parser_25 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("net", "net_parser_19", match_err));;
+let net_parser_16 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+64 : offset(768), littleendian;
dev_base_head'prev : zero+64 : offset(832), littleendian } ->
- let shape =
- { net_shape_fields_22_dev_base_head'next = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'next offset
+ let s =
+ { net_shape_fields_14_dev_base_head'next = (
+ if dev_base_head'next <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'next offset
+ ) else dev_base_head'next
);
- net_shape_fields_22_dev_base_head'prev = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'prev offset
+ net_shape_fields_14_dev_base_head'prev = (
+ if dev_base_head'prev <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'prev offset
+ ) else dev_base_head'prev
) } in
- let content =
+ let c =
() in
- { net_shape = shape; net_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("net", "net_parser_25", match_err));;
-let net_parser_26 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("net", "net_parser_16", match_err));;
+let net_parser_17 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+64 : offset(768), bigendian;
dev_base_head'prev : zero+64 : offset(832), bigendian } ->
- let shape =
- { net_shape_fields_22_dev_base_head'next = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'next offset
- );
- net_shape_fields_22_dev_base_head'prev = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'prev offset
- ) } in
- let content =
- () in
- { net_shape = shape; net_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("net", "net_parser_26", match_err));;
-let net_parser_27 kernel_version bits =
- bitmatch bits with
- | { dev_base_head'next : zero+32 : offset(448), bigendian;
- dev_base_head'prev : zero+32 : offset(480), bigendian } ->
- let shape =
- { net_shape_fields_22_dev_base_head'next = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'next offset
+ let s =
+ { net_shape_fields_14_dev_base_head'next = (
+ if dev_base_head'next <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'next offset
+ ) else dev_base_head'next
);
- net_shape_fields_22_dev_base_head'prev = (
- let offset = offset_of_net_device_dev_list'next kernel_version in
- let offset = Int64.of_int offset in
- Int64.sub dev_base_head'prev offset
+ net_shape_fields_14_dev_base_head'prev = (
+ if dev_base_head'prev <> 0L then (
+ let offset = offset_of_net_device_dev_list'next kernel_version in
+ let offset = Int64.of_int offset in
+ Int64.sub dev_base_head'prev offset
+ ) else dev_base_head'prev
) } in
- let content =
+ let c =
() in
- { net_shape = shape; net_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("net", "net_parser_27", match_err));;
-let in_device_parser_30 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("net", "net_parser_17", match_err));;
+let in_device_parser_24 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+32 : offset(96), littleendian } ->
- let shape =
- { in_device_shape_fields_28_ifa_list = ifa_list } in
- let content =
+ let s =
+ { in_device_shape_fields_20_ifa_list = ifa_list } in
+ let c =
() in
- { in_device_shape = shape; in_device_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_30", match_err));;
-let in_device_parser_33 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_24", match_err));;
+let in_device_parser_25 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+32 : offset(96), bigendian } ->
- let shape =
- { in_device_shape_fields_28_ifa_list = ifa_list } in
- let content =
+ let s =
+ { in_device_shape_fields_20_ifa_list = ifa_list } in
+ let c =
() in
- { in_device_shape = shape; in_device_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_33", match_err));;
-let in_device_parser_32 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_25", match_err));;
+let in_device_parser_22 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+64 : offset(128), littleendian } ->
- let shape =
- { in_device_shape_fields_28_ifa_list = ifa_list } in
- let content =
+ let s =
+ { in_device_shape_fields_20_ifa_list = ifa_list } in
+ let c =
() in
- { in_device_shape = shape; in_device_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_32", match_err));;
-let in_device_parser_31 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_22", match_err));;
+let in_device_parser_23 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+64 : offset(128), bigendian } ->
- let shape =
- { in_device_shape_fields_28_ifa_list = ifa_list } in
- let content =
+ let s =
+ { in_device_shape_fields_20_ifa_list = ifa_list } in
+ let c =
() in
- { in_device_shape = shape; in_device_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_31", match_err));;
-let inet6_dev_parser_36 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_23", match_err));;
+let inet6_dev_parser_30 kernel_version bits =
bitmatch bits with
| { addr_list : zero+32 : offset(32), littleendian } ->
- let shape =
- { inet6_dev_shape_fields_34_addr_list = addr_list } in
- let content =
+ let s =
+ { inet6_dev_shape_fields_26_addr_list = addr_list } in
+ let c =
() in
- { inet6_dev_shape = shape; inet6_dev_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_36", match_err));;
-let inet6_dev_parser_39 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_30", match_err));;
+let inet6_dev_parser_31 kernel_version bits =
bitmatch bits with
| { addr_list : zero+32 : offset(32), bigendian } ->
- let shape =
- { inet6_dev_shape_fields_34_addr_list = addr_list } in
- let content =
+ let s =
+ { inet6_dev_shape_fields_26_addr_list = addr_list } in
+ let c =
() in
- { inet6_dev_shape = shape; inet6_dev_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_39", match_err));;
-let inet6_dev_parser_38 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_31", match_err));;
+let inet6_dev_parser_28 kernel_version bits =
bitmatch bits with
| { addr_list : zero+64 : offset(64), littleendian } ->
- let shape =
- { inet6_dev_shape_fields_34_addr_list = addr_list } in
- let content =
+ let s =
+ { inet6_dev_shape_fields_26_addr_list = addr_list } in
+ let c =
() in
- { inet6_dev_shape = shape; inet6_dev_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_38", match_err));;
-let inet6_dev_parser_37 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_28", match_err));;
+let inet6_dev_parser_29 kernel_version bits =
bitmatch bits with
| { addr_list : zero+64 : offset(64), bigendian } ->
- let shape =
- { inet6_dev_shape_fields_34_addr_list = addr_list } in
- let content =
+ let s =
+ { inet6_dev_shape_fields_26_addr_list = addr_list } in
+ let c =
() in
- { inet6_dev_shape = shape; inet6_dev_content = content }
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_37", match_err));;
-let in_ifaddr_parser_42 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_29", match_err));;
+let in_ifaddr_parser_36 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+32 : offset(0), littleendian;
ifa_local : zero+32 : offset(128), littleendian;
ifa_address : zero+32 : offset(160), littleendian;
ifa_mask : zero+32 : offset(192), littleendian;
ifa_broadcast : zero+32 : offset(224), littleendian } ->
- let shape =
- { in_ifaddr_shape_fields_40_ifa_next = ifa_next } in
- let content =
- { in_ifaddr_content_fields_41_ifa_address = ifa_address;
- in_ifaddr_content_fields_41_ifa_broadcast = ifa_broadcast;
- in_ifaddr_content_fields_41_ifa_local = ifa_local;
- in_ifaddr_content_fields_41_ifa_mask = ifa_mask } in
- { in_ifaddr_shape = shape; in_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_42", match_err));;
-let in_ifaddr_parser_45 kernel_version bits =
+ let s =
+ { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
+ let c =
+ { in_ifaddr_content_fields_33_ifa_address = ifa_address;
+ in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
+ in_ifaddr_content_fields_33_ifa_local = ifa_local;
+ in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_36", match_err));;
+let in_ifaddr_parser_37 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+32 : offset(0), bigendian;
ifa_local : zero+32 : offset(128), bigendian;
ifa_address : zero+32 : offset(160), bigendian;
ifa_mask : zero+32 : offset(192), bigendian;
ifa_broadcast : zero+32 : offset(224), bigendian } ->
- let shape =
- { in_ifaddr_shape_fields_40_ifa_next = ifa_next } in
- let content =
- { in_ifaddr_content_fields_41_ifa_address = ifa_address;
- in_ifaddr_content_fields_41_ifa_broadcast = ifa_broadcast;
- in_ifaddr_content_fields_41_ifa_local = ifa_local;
- in_ifaddr_content_fields_41_ifa_mask = ifa_mask } in
- { in_ifaddr_shape = shape; in_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_45", match_err));;
-let in_ifaddr_parser_43 kernel_version bits =
- bitmatch bits with
- | { ifa_next : zero+64 : offset(0), bigendian;
- ifa_local : zero+32 : offset(256), bigendian;
- ifa_address : zero+32 : offset(288), bigendian;
- ifa_mask : zero+32 : offset(320), bigendian;
- ifa_broadcast : zero+32 : offset(352), bigendian } ->
- let shape =
- { in_ifaddr_shape_fields_40_ifa_next = ifa_next } in
- let content =
- { in_ifaddr_content_fields_41_ifa_address = ifa_address;
- in_ifaddr_content_fields_41_ifa_broadcast = ifa_broadcast;
- in_ifaddr_content_fields_41_ifa_local = ifa_local;
- in_ifaddr_content_fields_41_ifa_mask = ifa_mask } in
- { in_ifaddr_shape = shape; in_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_43", match_err));;
-let in_ifaddr_parser_44 kernel_version bits =
+ let s =
+ { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
+ let c =
+ { in_ifaddr_content_fields_33_ifa_address = ifa_address;
+ in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
+ in_ifaddr_content_fields_33_ifa_local = ifa_local;
+ in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_37", match_err));;
+let in_ifaddr_parser_34 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+64 : offset(0), littleendian;
ifa_local : zero+32 : offset(256), littleendian;
ifa_address : zero+32 : offset(288), littleendian;
ifa_mask : zero+32 : offset(320), littleendian;
ifa_broadcast : zero+32 : offset(352), littleendian } ->
- let shape =
- { in_ifaddr_shape_fields_40_ifa_next = ifa_next } in
- let content =
- { in_ifaddr_content_fields_41_ifa_address = ifa_address;
- in_ifaddr_content_fields_41_ifa_broadcast = ifa_broadcast;
- in_ifaddr_content_fields_41_ifa_local = ifa_local;
- in_ifaddr_content_fields_41_ifa_mask = ifa_mask } in
- { in_ifaddr_shape = shape; in_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_44", match_err));;
-let inet6_ifaddr_parser_48 kernel_version bits =
- bitmatch bits with
- | { prefix_len : zero+32 : offset(128), littleendian;
- lst_next : zero+32 : offset(1024), littleendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_48", match_err));;
-let inet6_ifaddr_parser_50 kernel_version bits =
+ let s =
+ { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
+ let c =
+ { in_ifaddr_content_fields_33_ifa_address = ifa_address;
+ in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
+ in_ifaddr_content_fields_33_ifa_local = ifa_local;
+ in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_34", match_err));;
+let in_ifaddr_parser_35 kernel_version bits =
bitmatch bits with
- | { prefix_len : zero+32 : offset(128), littleendian;
- lst_next : zero+64 : offset(1856), littleendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_50", match_err));;
-let inet6_ifaddr_parser_49 kernel_version bits =
- bitmatch bits with
- | { prefix_len : zero+32 : offset(128), bigendian;
- lst_next : zero+64 : offset(1472), bigendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_49", match_err));;
-let inet6_ifaddr_parser_51 kernel_version bits =
+ | { ifa_next : zero+64 : offset(0), bigendian;
+ ifa_local : zero+32 : offset(256), bigendian;
+ ifa_address : zero+32 : offset(288), bigendian;
+ ifa_mask : zero+32 : offset(320), bigendian;
+ ifa_broadcast : zero+32 : offset(352), bigendian } ->
+ let s =
+ { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
+ let c =
+ { in_ifaddr_content_fields_33_ifa_address = ifa_address;
+ in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
+ in_ifaddr_content_fields_33_ifa_local = ifa_local;
+ in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_35", match_err));;
+let inet6_ifaddr_parser_42 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
- lst_next : zero+64 : offset(1472), littleendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
+ lst_next : zero+32 : offset(832), littleendian } ->
+ let s =
+ { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
+ let c =
+ { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_51", match_err));;
-let inet6_ifaddr_parser_52 kernel_version bits =
- bitmatch bits with
- | { prefix_len : zero+32 : offset(128), bigendian;
- lst_next : zero+32 : offset(928), bigendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
- | { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_52", match_err));;
-let inet6_ifaddr_parser_53 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_42", match_err));;
+let inet6_ifaddr_parser_40 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
lst_next : zero+64 : offset(1280), littleendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
+ let s =
+ { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
+ let c =
+ { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_53", match_err));;
-let inet6_ifaddr_parser_54 kernel_version bits =
+ raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_40", match_err));;
+let inet6_ifaddr_parser_41 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
lst_next : zero+64 : offset(1280), bigendian } ->
- let shape =
- { inet6_ifaddr_shape_fields_46_lst_next = lst_next } in
- let content =
- { inet6_ifaddr_content_fields_47_prefix_len = prefix_len } in
- { inet6_ifaddr_shape = shape; inet6_ifaddr_content = content }
+ let s =
+ { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
+ let c =
+ { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
+ (s, c)
| { _ } ->
- raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_54", match_err));;
+ raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_41", match_err));;
+let inet6_ifaddr_parser_43 kernel_version bits =
+ bitmatch bits with
+ | { prefix_len : zero+32 : offset(128), bigendian;
+ lst_next : zero+32 : offset(800), bigendian } ->
+ let s =
+ { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
+ let c =
+ { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
+ (s, c)
+ | { _ } ->
+ raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_43", match_err));;
+let task_struct_shape_fields_1_follower load followers map shape =
+ let (_, _, _, _, _, _, f) = followers in
+ let map = f load followers map shape.task_struct_shape_fields_1_tasks'next
+ in map;;
+let net_device_shape_fields_8_follower load followers map shape =
+ let (_, _, _, _, _, f, _) = followers in
+ let map =
+ f load followers map shape.net_device_shape_fields_8_dev_list'next in
+ let (_, _, f, _, _, _, _) = followers in
+ let map = f load followers map shape.net_device_shape_fields_8_ip6_ptr in
+ let (_, _, _, f, _, _, _) = followers in
+ let map = f load followers map shape.net_device_shape_fields_8_ip_ptr
+ in map;;
+let net_shape_fields_14_follower load followers map shape =
+ let (_, _, _, _, _, f, _) = followers in
+ let map =
+ f load followers map shape.net_shape_fields_14_dev_base_head'next in
+ let (_, _, _, _, _, f, _) = followers in
+ let map = f load followers map shape.net_shape_fields_14_dev_base_head'prev
+ in map;;
+let in_device_shape_fields_20_follower load followers map shape =
+ let (_, f, _, _, _, _, _) = followers in
+ let map = f load followers map shape.in_device_shape_fields_20_ifa_list
+ in map;;
+let inet6_dev_shape_fields_26_follower load followers map shape =
+ let (f, _, _, _, _, _, _) = followers in
+ let map = f load followers map shape.inet6_dev_shape_fields_26_addr_list
+ in map;;
+let in_ifaddr_shape_fields_32_follower load followers map shape =
+ let (_, f, _, _, _, _, _) = followers in
+ let map = f load followers map shape.in_ifaddr_shape_fields_32_ifa_next
+ in map;;
+let inet6_ifaddr_shape_fields_38_follower load followers map shape =
+ let (f, _, _, _, _, _, _) = followers in
+ let map = f load followers map shape.inet6_ifaddr_shape_fields_38_lst_next
+ in map;;
+let kv_follower kernel_version struct_name total_size parserfn followerfn
+ load followers map addr =
+ if (addr <> 0L) && (not (AddrMap.mem addr map))
+ then
+ (let map = AddrMap.add addr (struct_name, total_size) map in
+ let bits = load struct_name addr total_size in
+ let (shape, _) = parserfn kernel_version bits
+ in followerfn load followers map shape)
+ else map;;
+let task_struct_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "task_struct" 2496
+ task_struct_parser_3 task_struct_shape_fields_1_follower;;
+let task_struct_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "task_struct" 2524
+ task_struct_parser_4 task_struct_shape_fields_1_follower;;
+let task_struct_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "task_struct" 1832
+ task_struct_parser_5 task_struct_shape_fields_1_follower;;
+let task_struct_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "task_struct" 1832
+ task_struct_parser_6 task_struct_shape_fields_1_follower;;
+let task_struct_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "task_struct" 1952 task_struct_parser_7
+ task_struct_shape_fields_1_follower;;
+let task_struct_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "task_struct" 2496
+ task_struct_parser_3 task_struct_shape_fields_1_follower;;
+let task_struct_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "task_struct" 2496
+ task_struct_parser_3 task_struct_shape_fields_1_follower;;
+let task_struct_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "task_struct" 1832 task_struct_parser_5
+ task_struct_shape_fields_1_follower;;
+let task_struct_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "task_struct" 2524
+ task_struct_parser_4 task_struct_shape_fields_1_follower;;
+let task_struct_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "task_struct" 1832 task_struct_parser_6
+ task_struct_shape_fields_1_follower;;
+let task_struct_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "task_struct" 1952 task_struct_parser_7
+ task_struct_shape_fields_1_follower;;
+let task_struct_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "task_struct" 1832 task_struct_parser_6
+ task_struct_shape_fields_1_follower;;
+let net_device_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "net_device" 1752
+ net_device_parser_10 net_device_shape_fields_8_follower;;
+let net_device_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "net_device" 1776
+ net_device_parser_11 net_device_shape_fields_8_follower;;
+let net_device_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "net_device" 1212 net_device_parser_12
+ net_device_shape_fields_8_follower;;
+let net_device_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "net_device" 1212 net_device_parser_12
+ net_device_shape_fields_8_follower;;
+let net_device_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "net_device" 904 net_device_parser_13
+ net_device_shape_fields_8_follower;;
+let net_device_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "net_device" 1752
+ net_device_parser_10 net_device_shape_fields_8_follower;;
+let net_device_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "net_device" 1752
+ net_device_parser_10 net_device_shape_fields_8_follower;;
+let net_device_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "net_device" 1212 net_device_parser_12
+ net_device_shape_fields_8_follower;;
+let net_device_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "net_device" 1776 net_device_parser_11
+ net_device_shape_fields_8_follower;;
+let net_device_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "net_device" 1212 net_device_parser_12
+ net_device_shape_fields_8_follower;;
+let net_device_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "net_device" 904 net_device_parser_13
+ net_device_shape_fields_8_follower;;
+let net_device_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "net_device" 1212 net_device_parser_12
+ net_device_shape_fields_8_follower;;
+let net_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "net" 488 net_parser_16
+ net_shape_fields_14_follower;;
+let net_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "net" 488 net_parser_17
+ net_shape_fields_14_follower;;
+let net_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "net" 284 net_parser_18
+ net_shape_fields_14_follower;;
+let net_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "net" 284 net_parser_18
+ net_shape_fields_14_follower;;
+let net_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "net" 276 net_parser_19
+ net_shape_fields_14_follower;;
+let net_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "net" 488 net_parser_16
+ net_shape_fields_14_follower;;
+let net_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "net" 488 net_parser_16
+ net_shape_fields_14_follower;;
+let net_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "net" 284 net_parser_18
+ net_shape_fields_14_follower;;
+let net_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "net" 488 net_parser_17
+ net_shape_fields_14_follower;;
+let net_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "net" 284 net_parser_18
+ net_shape_fields_14_follower;;
+let net_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "net" 276 net_parser_19
+ net_shape_fields_14_follower;;
+let net_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "net" 284 net_parser_18
+ net_shape_fields_14_follower;;
+let in_device_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "in_device" 368 in_device_parser_22
+ in_device_shape_fields_20_follower;;
+let in_device_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "in_device" 368 in_device_parser_23
+ in_device_shape_fields_20_follower;;
+let in_device_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "in_device" 244 in_device_parser_24
+ in_device_shape_fields_20_follower;;
+let in_device_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "in_device" 244 in_device_parser_24
+ in_device_shape_fields_20_follower;;
+let in_device_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "in_device" 236 in_device_parser_25
+ in_device_shape_fields_20_follower;;
+let in_device_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "in_device" 368 in_device_parser_22
+ in_device_shape_fields_20_follower;;
+let in_device_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "in_device" 368 in_device_parser_22
+ in_device_shape_fields_20_follower;;
+let in_device_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "in_device" 244 in_device_parser_24
+ in_device_shape_fields_20_follower;;
+let in_device_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "in_device" 368 in_device_parser_23
+ in_device_shape_fields_20_follower;;
+let in_device_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "in_device" 244 in_device_parser_24
+ in_device_shape_fields_20_follower;;
+let in_device_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "in_device" 236 in_device_parser_25
+ in_device_shape_fields_20_follower;;
+let in_device_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "in_device" 244 in_device_parser_24
+ in_device_shape_fields_20_follower;;
+let inet6_dev_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "inet6_dev" 536 inet6_dev_parser_28
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "inet6_dev" 536 inet6_dev_parser_29
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "inet6_dev" 356 inet6_dev_parser_30
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "inet6_dev" 356 inet6_dev_parser_30
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "inet6_dev" 348 inet6_dev_parser_31
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "inet6_dev" 536 inet6_dev_parser_28
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "inet6_dev" 536 inet6_dev_parser_28
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "inet6_dev" 356 inet6_dev_parser_30
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "inet6_dev" 536 inet6_dev_parser_29
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "inet6_dev" 356 inet6_dev_parser_30
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "inet6_dev" 348 inet6_dev_parser_31
+ inet6_dev_shape_fields_26_follower;;
+let inet6_dev_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "inet6_dev" 356 inet6_dev_parser_30
+ inet6_dev_shape_fields_26_follower;;
+let in_ifaddr_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "in_ifaddr" 71 in_ifaddr_parser_35
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "in_ifaddr" 55 in_ifaddr_parser_36
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "in_ifaddr" 55 in_ifaddr_parser_36
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "in_ifaddr" 55 in_ifaddr_parser_37
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "in_ifaddr" 55 in_ifaddr_parser_36
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "in_ifaddr" 71 in_ifaddr_parser_35
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "in_ifaddr" 55 in_ifaddr_parser_36
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "in_ifaddr" 55 in_ifaddr_parser_37
+ in_ifaddr_shape_fields_32_follower;;
+let in_ifaddr_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "in_ifaddr" 55 in_ifaddr_parser_36
+ in_ifaddr_shape_fields_32_follower;;
+let inet6_ifaddr_kv0_follower =
+ kv_follower "2.6.25.14-69.fc8.x86_64" "inet6_ifaddr" 200
+ inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv1_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc64" "inet6_ifaddr" 200
+ inet6_ifaddr_parser_41 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv2_follower =
+ kv_follower "2.6.25.14-108.fc9.i586" "inet6_ifaddr" 128
+ inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv3_follower =
+ kv_follower "2.6.25.14-108.fc9.i686" "inet6_ifaddr" 128
+ inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv4_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc" "inet6_ifaddr" 124
+ inet6_ifaddr_parser_43 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv5_follower =
+ kv_follower "2.6.25.14-108.fc9.x86_64" "inet6_ifaddr" 200
+ inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv6_follower =
+ kv_follower "2.6.25.11-97.fc9.x86_64" "inet6_ifaddr" 200
+ inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv7_follower =
+ kv_follower "2.6.25.14-69.fc8.i586" "inet6_ifaddr" 128
+ inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv8_follower =
+ kv_follower "2.6.25.14-69.fc8.ppc64" "inet6_ifaddr" 200
+ inet6_ifaddr_parser_41 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv9_follower =
+ kv_follower "2.6.25.11-97.fc9.i686" "inet6_ifaddr" 128
+ inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv10_follower =
+ kv_follower "2.6.25.14-108.fc9.ppc" "inet6_ifaddr" 124
+ inet6_ifaddr_parser_43 inet6_ifaddr_shape_fields_38_follower;;
+let inet6_ifaddr_kv11_follower =
+ kv_follower "2.6.25.14-69.fc8.i686" "inet6_ifaddr" 128
+ inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
+let follower_map =
+ StringMap.add "2.6.25.14-69.fc8.i686"
+ (inet6_ifaddr_kv11_follower, in_ifaddr_kv11_follower,
+ inet6_dev_kv11_follower, in_device_kv11_follower, net_kv11_follower,
+ net_device_kv11_follower, task_struct_kv11_follower)
+ (StringMap.add "2.6.25.14-108.fc9.ppc"
+ (inet6_ifaddr_kv10_follower, in_ifaddr_kv10_follower,
+ inet6_dev_kv10_follower, in_device_kv10_follower, net_kv10_follower,
+ net_device_kv10_follower, task_struct_kv10_follower)
+ (StringMap.add "2.6.25.11-97.fc9.i686"
+ (inet6_ifaddr_kv9_follower, in_ifaddr_kv9_follower,
+ inet6_dev_kv9_follower, in_device_kv9_follower, net_kv9_follower,
+ net_device_kv9_follower, task_struct_kv9_follower)
+ (StringMap.add "2.6.25.14-69.fc8.ppc64"
+ (inet6_ifaddr_kv8_follower, in_ifaddr_kv8_follower,
+ inet6_dev_kv8_follower, in_device_kv8_follower,
+ net_kv8_follower, net_device_kv8_follower,
+ task_struct_kv8_follower)
+ (StringMap.add "2.6.25.14-69.fc8.i586"
+ (inet6_ifaddr_kv7_follower, in_ifaddr_kv7_follower,
+ inet6_dev_kv7_follower, in_device_kv7_follower,
+ net_kv7_follower, net_device_kv7_follower,
+ task_struct_kv7_follower)
+ (StringMap.add "2.6.25.11-97.fc9.x86_64"
+ (inet6_ifaddr_kv6_follower, in_ifaddr_kv6_follower,
+ inet6_dev_kv6_follower, in_device_kv6_follower,
+ net_kv6_follower, net_device_kv6_follower,
+ task_struct_kv6_follower)
+ (StringMap.add "2.6.25.14-108.fc9.x86_64"
+ (inet6_ifaddr_kv5_follower, in_ifaddr_kv5_follower,
+ inet6_dev_kv5_follower, in_device_kv5_follower,
+ net_kv5_follower, net_device_kv5_follower,
+ task_struct_kv5_follower)
+ (StringMap.add "2.6.25.14-69.fc8.ppc"
+ (inet6_ifaddr_kv4_follower, in_ifaddr_kv4_follower,
+ inet6_dev_kv4_follower, in_device_kv4_follower,
+ net_kv4_follower, net_device_kv4_follower,
+ task_struct_kv4_follower)
+ (StringMap.add "2.6.25.14-108.fc9.i686"
+ (inet6_ifaddr_kv3_follower,
+ in_ifaddr_kv3_follower, inet6_dev_kv3_follower,
+ in_device_kv3_follower, net_kv3_follower,
+ net_device_kv3_follower,
+ task_struct_kv3_follower)
+ (StringMap.add "2.6.25.14-108.fc9.i586"
+ (inet6_ifaddr_kv2_follower,
+ in_ifaddr_kv2_follower,
+ inet6_dev_kv2_follower,
+ in_device_kv2_follower, net_kv2_follower,
+ net_device_kv2_follower,
+ task_struct_kv2_follower)
+ (StringMap.add "2.6.25.14-108.fc9.ppc64"
+ (inet6_ifaddr_kv1_follower,
+ in_ifaddr_kv1_follower,
+ inet6_dev_kv1_follower,
+ in_device_kv1_follower, net_kv1_follower,
+ net_device_kv1_follower,
+ task_struct_kv1_follower)
+ (StringMap.add "2.6.25.14-69.fc8.x86_64"
+ (inet6_ifaddr_kv0_follower,
+ in_ifaddr_kv0_follower,
+ inet6_dev_kv0_follower,
+ in_device_kv0_follower,
+ net_kv0_follower,
+ net_device_kv0_follower,
+ task_struct_kv0_follower)
+ StringMap.empty)))))))))));;
+let task_struct_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "task_struct" in
+ let (_, _, _, _, _, _, f) = followers
+ in f load followers AddrMap.empty addr;;
+let net_device_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "net_device" in
+ let (_, _, _, _, _, f, _) = followers
+ in f load followers AddrMap.empty addr;;
+let net_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "net" in
+ let (_, _, _, _, f, _, _) = followers
+ in f load followers AddrMap.empty addr;;
+let in_device_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "in_device" in
+ let (_, _, _, f, _, _, _) = followers
+ in f load followers AddrMap.empty addr;;
+let inet6_dev_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "inet6_dev" in
+ let (_, _, f, _, _, _, _) = followers
+ in f load followers AddrMap.empty addr;;
+let in_ifaddr_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "in_ifaddr" in
+ let (_, f, _, _, _, _, _) = followers
+ in f load followers AddrMap.empty addr;;
+let inet6_ifaddr_follower kernel_version load addr =
+ let followers =
+ try StringMap.find kernel_version follower_map
+ with | Not_found -> unknown_kernel_version kernel_version "inet6_ifaddr" in
+ let (f, _, _, _, _, _, _) = followers
+ in f load followers AddrMap.empty addr;;