(** A kernel symbol name. *)
type image =
- string
+ int option
+ * string
* Virt_mem_utils.architecture
- * ([`Wordsize], [`Endian]) Virt_mem_mmap.t
+ * ([`Wordsize], [`Endian], [`HasMapping]) Virt_mem_mmap.t
+ (** A memory image from a domain. *)
+
+type image_with_ksyms =
+ int option
+ * string
+ * Virt_mem_utils.architecture
+ * ([`Wordsize], [`Endian], [`HasMapping]) Virt_mem_mmap.t
* (ksym -> Virt_mem_mmap.addr)
- (** An image after it has been processed by the code common to
- all commands.
+ (** An image after it has been processed to find kernel symbols.
The tuple fields are:
- - name
+ - domain ID (if known)
+ - name, usually the domain name
- architecture (eg. I386)
- kernel memory map (wordsize & endianness already determined)
- a function to look up kernel symbols. It raises [Not_found]
table could not be found at all.
*)
-val start : Arg.usage_msg -> bool * image list
- (** Programs call this to parse the standard command-line arguments
- and do all the standard processing of domains into images.
+val register :
+ ?external_cmd:bool ->
+ ?extra_args:(Arg.key * Arg.spec * Arg.doc) list ->
+ ?argcheck:(bool -> unit) ->
+ ?beforeksyms:(bool -> image list -> unit) ->
+ ?run:(bool -> image_with_ksyms list -> unit) ->
+ string -> string -> Arg.usage_msg ->
+ unit
+ (** Tools register themselves with this call.
+
+ The anonymous parameters are:
+ - tool name (eg. "uname")
+ - short summary
+ - full usage message
- The returned tuple is:
- - verbose mode
- - list of 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,
+ - [?run] called after kernel symbols have been analyzed
+ (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
+ (** Entry point for the combined virt-mem executable. *)