Added another kernel.
[virt-mem.git] / dmesg / virt_dmesg.ml
index 1886a92..153d5e4 100644 (file)
@@ -24,23 +24,24 @@ open Virt_mem_utils
 open Virt_mem_types
 open Virt_mem_mmap
 
 open Virt_mem_types
 open Virt_mem_mmap
 
-let run debug (_, name, arch, mem, lookup_ksym, _) =
+let run debug { domname = domname; mem = mem } { ksyms = ksyms } =
+  let ksyms = Option.get ksyms in
   try
     (* I don't know why but this symbol doesn't exist in 2.6.9
      * even in kallsyms.  Hence this won't work with that kernel.
      * It's possible we can fall back to memory scanning. XXX
      *)
   try
     (* I don't know why but this symbol doesn't exist in 2.6.9
      * even in kallsyms.  Hence this won't work with that kernel.
      * It's possible we can fall back to memory scanning. XXX
      *)
-    let log_buf = lookup_ksym "log_buf" in
+    let log_buf = Ksymmap.find "log_buf" ksyms in
     let log_buf = follow_pointer mem log_buf in
     let log_buf = follow_pointer mem log_buf in
-    let log_buf_len = lookup_ksym "log_buf_len" in
+    let log_buf_len = Ksymmap.find "log_buf_len" ksyms in
     let log_buf_len = Int64.of_int32 (get_C_int mem log_buf_len) in
     let log_buf_len = Int64.of_int32 (get_C_int mem log_buf_len) in
-    (* let log_start = lookup_ksym "log_start" in
+    (* let log_start = Ksymmap.find "log_start" ksyms in
        let log_start = get_C_long mem log_start in *)
        let log_start = get_C_long mem log_start in *)
-    let log_end = lookup_ksym "log_end" in
+    let log_end = Ksymmap.find "log_end" ksyms in
     let log_end = get_C_long mem log_end in
     let log_end = get_C_long mem log_end in
-    (* let con_start = lookup_ksym "con_start" in
+    (* let con_start = Ksymmap.find "con_start" ksyms in
        let con_start = get_C_long mem con_start in *)
        let con_start = get_C_long mem con_start in *)
-    let logged_chars = lookup_ksym "logged_chars" in
+    let logged_chars = Ksymmap.find "logged_chars" ksyms in
     let logged_chars = get_C_long mem logged_chars in
 
     (* This is basically the same algorithm from printk.c:do_syslog
     let logged_chars = get_C_long mem logged_chars in
 
     (* This is basically the same algorithm from printk.c:do_syslog
@@ -70,7 +71,7 @@ let run debug (_, name, arch, mem, lookup_ksym, _) =
   with
     Not_found ->
       eprintf (f_"%s: could not find kernel log buffer in kernel image\n")
   with
     Not_found ->
       eprintf (f_"%s: could not find kernel log buffer in kernel image\n")
-       name
+       domname
 
 let summary = s_"display kernel messages"
 let description = s_"\
 
 let summary = s_"display kernel messages"
 let description = s_"\
@@ -78,4 +79,4 @@ virt-dmesg prints the kernel messages for virtual machines running
 under libvirt.  The output is similar to the ordinary dmesg command
 run inside the virtual machine."
 
 under libvirt.  The output is similar to the ordinary dmesg command
 run inside the virtual machine."
 
-let () = Virt_mem.register "dmesg" summary description ~run
+let () = Virt_mem.register "dmesg" summary description ~needs_ksyms:true ~run