*)
val register :
+ ?needs_ksyms:bool ->
+ ?needs_utsname:bool ->
+ ?needs_tasks:bool ->
+ ?needs_net_devices:bool ->
+ ?needs_everything:bool ->
+ run:(bool -> Virt_mem_types.kimage -> unit) ->
?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 anonymous parameters are:
+ The required parameters are:
- tool name (eg. "uname")
- short summary
- full usage message
- 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).
+ The boolean parameters specify what kernel structures the
+ tool needs before it can run. The main program will read
+ these structures in before calling [~run].
+ - [~needs_ksyms:true] if kernel symbols are needed
+ - [~needs_utsname:true] if kernel version (utsname) is needed
+ - [~needs_tasks:true] if all task_struct (processes) are needed
+ - [~needs_net_devices:true] if all net devices are needed
+ - [~needs_everything:true] if the tool requires as much as
+ possible (but will not fail if we cannot determine everything)
+
+ The [~run] function is the tool's run function. This function
+ is run once for each separate domain. It may throw any exception,
+ which is printed out, but does not abort the program. (If for
+ some reason you need to abort the whole program, call [exit].)
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.
+
+ Pass [~argcheck:...] so that the tool can do any additional
+ parameter checks needed (eg. for [~extra_args]).
*)
val main : unit -> unit