X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fvirt_mem.mli;h=ab5ba4730a37ead4a27370a2ad059c1ab1a67069;hb=70d3dc854c18fb1148239eee305eebffdc81f521;hp=58b879e5b9311b765b62ff2295a6fcc53df68eb1;hpb=97131d94f5513b732f8f8d310984e71d8201cadf;p=virt-mem.git diff --git a/lib/virt_mem.mli b/lib/virt_mem.mli index 58b879e..ab5ba47 100644 --- a/lib/virt_mem.mli +++ b/lib/virt_mem.mli @@ -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/ @@ -17,63 +18,46 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *) -type ksym = string - (** A kernel symbol name. *) - -type image = - int option - * string - * Virt_mem_utils.architecture - * ([`Wordsize], [`Endian]) Virt_mem_mmap.t - (** A memory image from a domain. *) - -type image_with_ksyms = - int option - * string - * Virt_mem_utils.architecture - * ([`Wordsize], [`Endian]) Virt_mem_mmap.t - * (ksym -> Virt_mem_mmap.addr) - (** An image after it has been processed to find kernel symbols. - - The tuple fields are: - - 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] - if a kernel symbol could not be found or if the kernel symbol - table could not be found at all. - *) - val register : + ?needs_ksyms:bool -> + ?needs_utsname:bool -> + ?needs_tasks: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 -> 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: + 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_task_struct:true] if all task_struct (processes) 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