+(** 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