init initializes the module and binds the kernel profile device onto the /prof directory. It should be called before any other functions in this module.
profile takes a module name or a path name as its argument and indicates a module to be profiled. Repeated calls of this function allow a number of modules to be profiled together. In the absence of any calls to this routine, the profile device profiles all modules loaded by the kernel.
sample sets the sampling interval of the profiling. The argument is in ms. The default value in the profile device is 100ms.
start starts profiling.
stop stops profiling.
stats returns profiling statistics. It is recommended that this is called once profiling has been stopped, otherwise the results may be slightly inaccurate. It returns an adt of type Prof. Its first field mods is a list of profile statistics for each module under profile. Its second field total is the number of samples made altogether. The statistics for each module are represented in the Modprof adt. Its fields are
10n name The name of the module.
10n path The path of the module's corresponding dis file.
10n srcpath The path of the module's corresponding source file.
10n linetab The line frequency count table. The number of samples made on a particular line of the above source file is found by indexing this table.
10n funtab The function frequency count table. This array of Funprof adt gives the name, line number and number of samples made for each function in the above source file.
10n total The total number of samples made in this module.
stats will ignore modules if it fails to locate the symbol (.sbl) file for a particular dis file.
show simply prints out the profile information returned by stats. For each module it will print out either the line number statistics or the function statistics or both. The former gives the line number, percentage of time spent on this line and the source code for each line in the source file. The latter gives the line number, function name and percentage of time spent in this function for each function in the source file. The amount of output can be controlled by the second argument to show. The following should be ored together in the required combination to get the desired effect.
10n FUNCTION Print the function table.
10n LINE Print the line number table.
10n VERBOSE Normally lines and functions are not shown if the sample frequency for them is zero. This option prevents this.
10n FULLHDR Prints the file name as well as the line number in a form that can be selected in acme to show that particular line in a window.
show will ignore modules if it fails to locate the source (.b) file for a particular dis file.
end ends the profiling session. This should be called when all statistics have been gathered in order to clean up the device profile's data structures.
In order to support coverage profiling as well the following new routines are provided.
cpstart Start coverage profiling on the process whose pid is given.
cpstats Returns coverage profiling statistics from the profile device. If the first argument is true, the raw results will be stored in a profile file whose name is <file>.prf where <file> is the prefix of the corresponding dis file.
cpfstats Returns coverage profiling statistics from any saved profile files.
cpshow Shows the coverage profiling statistics.
coverage Given the coverage profiler statistics this returns the list of modules profiled. Each module has a name, a boolean indicating whether all instructions in the module were executed and a list of lines. Each line consists of a list of ranges and the source code. The list of ranges contains the character positions on the line of code corresponding to instructions that were not executed and an indicator of whether partial execution was performed.
For the further support of memory profiling the following routines are available.
memstart Start memory profiling.
memstats Return the memory profile statisics.
memshow Send memory profile statistics to standard output.