Code generation of parsing functions now working.
[virt-mem.git] / lib / virt_mem.mli
index 1dc1c23..c807365 100644 (file)
@@ -1,3 +1,4 @@
+(** Memory info for virtual domains. *)
 (* Memory info for virtual domains.
    (C) Copyright 2008 Richard W.M. Jones, Red Hat Inc.
    http://libvirt.org/
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *)
 
-type ksym = string
-  (** A kernel symbol name. *)
-
-type image =
-    string
-    * Virt_mem_utils.architecture
-    * ([`Wordsize], [`Endian]) Virt_mem_mmap.t
-    * (ksym -> Virt_mem_mmap.addr)
-  (** An image after it has been processed by the code common to
-      all commands.
-
-      The tuple fields are:
-      - name
-      - architecture (eg. I386)
-      - kernel memory map (wordsize & endianness already determined)
-      - a function to look up kernel symbols.  It raises [Not_found]
-        if a kernel symbol could not be found or if the kernel symbol
-        table could not be found at all.
-  *)
-
-val register : string -> string -> Arg.usage_msg -> bool -> (bool -> image list -> unit) -> unit
+val register :
+  ?external_cmd:bool ->
+  ?extra_args:(Arg.key * Arg.spec * Arg.doc) list ->
+  ?argcheck:(bool -> unit) ->
+  ?beforeksyms:(bool -> Virt_mem_types.image0 list -> unit) ->
+  ?beforeutsname:(bool -> Virt_mem_types.image1 -> unit) ->
+  ?run:(bool -> Virt_mem_types.image2 -> unit) ->
+  string -> string -> Arg.usage_msg ->
+  unit
   (** Tools register themselves with this call.
 
-      The parameters are:
+      The anonymous parameters are:
       - tool name (eg. "uname")
       - short summary
       - full usage message
-      - is it a virt-cmd?
-      - run function (invoked as [run verbose images])
+
+      The optional callback functions are:
+      - [?argcheck] called after arguments have been fully parsed
+      so that the program can do any additional checks needed (eg.
+      on [extra_args]),
+      - [?beforeksyms] called after images are loaded and before
+      kernel symbols are analyzed,
+      - [?beforeutsname] called after kernel symbols are analyzed
+      and before the kernel version is detected
+      - [?run] called after everything
+      (almost all tools supply this callback function).
+
+      Pass [~external_cmd:false] if this tool doesn't have an
+      external 'virt-tool' link.
+
+      Pass [~extra_args:...] if this tool needs extra command
+      line options.
   *)
 
 val main : unit -> unit