Extracted kernel structures for device addressing in ifconfig.
[virt-mem.git] / lib / virt_mem.mli
index eae488e..6356981 100644 (file)
  *)
 
 val register :
+  ?needs_ksyms:bool ->
+  ?needs_utsname:bool ->
+  ?needs_tasks:bool ->
+  ?needs_net_devices:bool ->
+  ?needs_everything:bool ->
+  run:(bool -> Virt_mem_types.image -> Virt_mem_types.kdata -> unit) ->
   ?external_cmd:bool ->
   ?extra_args:(Arg.key * Arg.spec * Arg.doc) list ->
   ?argcheck:(bool -> unit) ->
-  ?beforeksyms:(bool -> Virt_mem_types.image0 list -> unit) ->
-  ?run:(bool -> Virt_mem_types.image1 list -> 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,
-      - [?run] called after kernel symbols have been analyzed
-      (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