let { ksyms = ksyms; have_ksyms = have_ksyms; utsname = utsname;
addrmap = addrmap } = kimage in
match have_ksyms, utsname with
- | true, Some { uts_kernel_release = kversion } ->
+ | true, Some { uts_kernel_release = kernel_version } ->
let kimage = ref kimage in
let load struct_name addr size =
if debug then
let bits = Virt_mem_mmap.get_bytes !kimage.mem addr size in
Bitstring.bitstring_of_string bits
in
- let init_task = Ksymmap.find "init_task" ksyms in
let addrmap =
- Kernel.task_struct_follower kversion load addrmap init_task in
- { !kimage with addrmap = addrmap }
+ try
+ let init_task = Ksymmap.find "init_task" ksyms in
+ Some (Kernel.task_struct_follower debug kernel_version
+ load addrmap init_task)
+ with
+ Not_found ->
+ eprintf (f_"%s: cannot find init_task symbol in kernel image.\n") !kimage.domname;
+ None in
+ (match addrmap with
+ | None -> !kimage
+ | Some addrmap ->
+ { !kimage with addrmap = addrmap; have_tasks = true }
+ )
| _, _ -> kimage
) in
let { ksyms = ksyms; have_ksyms = have_ksyms; utsname = utsname;
addrmap = addrmap } = kimage in
match have_ksyms, utsname with
- | true, Some { uts_kernel_release = kversion } ->
+ | true, Some { uts_kernel_release = kernel_version } ->
let kimage = ref kimage in
let load struct_name addr size =
if debug then
let addrmap =
try
let dev_base = Ksymmap.find "dev_base" ksyms in
- Kernel.net_device_follower kversion load addrmap dev_base
+ Some (Kernel.net_device_follower debug kernel_version
+ load addrmap dev_base)
with Not_found ->
try
let dev_base_head = Ksymmap.find "dev_base_head" ksyms in
with Not_found ->
try
let init_net = Ksymmap.find "init_net" ksyms in
- Kernel.net_follower kversion load addrmap init_net
+ Some (Kernel.net_follower debug kernel_version
+ load addrmap init_net)
with Not_found ->
eprintf (f_"%s: cannot find dev_base, dev_base_head or init_net symbols in kernel image.\n") !kimage.domname;
- addrmap in
- { !kimage with addrmap = addrmap }
+ None in
+ (match addrmap with
+ | None -> !kimage
+ | Some addrmap ->
+ { !kimage with addrmap = addrmap; have_net_devices = true }
+ )
| _, _ -> kimage
) in