Signed-off-by: Robert Richter <[EMAIL PROTECTED]> --- docs/man3/libpfm.3 | 75 ++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 55 insertions(+), 20 deletions(-)
diff --git a/docs/man3/libpfm.3 b/docs/man3/libpfm.3 index fe6a741..b8793fc 100644 --- a/docs/man3/libpfm.3 +++ b/docs/man3/libpfm.3 @@ -1,39 +1,44 @@ -.TH LIBPFM 3 "November, 2003" "" "Linux Programmer's Manual" +.TH LIBPFM 3 "March, 2008" "" "Linux Programmer's Manual" .SH NAME -libpfm \- a helper library to program the hardware performance counters of IA-64 CPUs +libpfm \- a helper library to program Hardware Performance Units (PMUs) .SH SYNOPSIS .nf .B #include <perfmon/pfmlib.h> .SH DESCRIPTION -The libpfm library is a helper library which can be used by applications to program -the IA-64 Performance Monitoring Unit (PMU). While it is being developed on Linux -in conjunction with the Linux/ia64 subsystem. It is generic enough to be used on -other IA-64 operating systems. It is important to realize that the library does -not make the actual kernel calls to program the PMU, it simply helps you figure -out which PMU registers to use to measure certain events. On Linux/ia64, for -instance, it does not make any \fBperfmonctl\fR call. +The libpfm library is a helper library which can be used by +applications to program the Performance Monitoring Unit (PMU). It +provides a generic programing interface that is part of the Perfmon2 +architecture and portable across various PMU models/architectures. A +diversity of PMU hardware is supported, a list can be found below +under \fBSUPPORTED HARDWARE\fR. Perfmon2 has been developed initially +on Linux in conjunction with the Linux/ia64 subsystem. + +It is important to realize that the library does not make the actual +kernel calls to program the PMU, it simply helps you figure out which +PMU registers to use to measure certain events. On Linux/ia64, for +instance, it does not make any system call. There are two categories of PMU registers. The performance monitoring data registers (PMD) -are used to collects counts or serve as hardware buffers. The performance monitoring control +are used to collect counts or serve as hardware buffers. The performance monitoring control registers (PMCS) are used to indicate what events need to be monitored. Programming the PMU -consists in setting up the PMC registers to monitor certain events. The PMDS are commonly set +consists in setting up the PMC registers to monitor certain events. The PMDs are commonly set to zero unless sampling is used. -The number of PMC and PMD registers varies from one implementation of the IA-64 -architecture to another. The association of PMC to PMD can also change. Moreover -the number and encoding of events can also widely change. Finally, the structure -of a PMC register can also change. All these factors make it quite difficult to -write monitoring tools. +The number of PMC and PMD registers varies between architectures and +CPU models. The association of PMC to PMD can also change. Moreover +the number and encoding of events can also widely change. Finally, the +structure of a PMC register can also change. All these factors make it +quite difficult to write monitoring tools. This library is designed to simplify the programming of the PMC registers by hiding the complexity behind simple interfaces. The library does this without limiting accessibility to model specific features by using a layered design. The library is structured in two layers. The common layer provides an interface -that is shared across all PMU models.This layer is good enough to setup simple monitoring +that is shared across all PMU models. This layer is good enough to setup simple monitoring sessions which count occurrences of events. Then, there is a model-specific layer which gives access to the model-specific features. For instance, on Itanium, you can use the library -to setup the registers for the the Branch Trace Buffer. Model-specific interfaces have the +to setup the registers for the Branch Trace Buffer. Model-specific interfaces have the abbreviated PMU model name in their names. For instance, \fBpfm_ita2_get_event_umask()\fR is an Itanium2 (ita2) specific function. @@ -44,8 +49,38 @@ The common interface is defined in the \fBpfmlib.h\fR header file. Model-specifi are defined in model-specific header files. For instance, \fBpfmlib_itanium2.h\fR provides the Itanium2 interface. -.SH AUTHOR +.SS SUPPORTED HARDWARE +.nf +libpfm_amd64(3) AMD64 processors K8 and Barcelona (families 0Fh and 10h) +libpfm_core(3) Intel Core processor family, including the Core 2 + Duo series +libpfm_itanium(3) Intel Itanium +libpfm_itanium2(3) Intel Itanium 2 +libpfm_montecito(3) Intel Itanium 2 9000 (Montecito) +libpfm_p6(3) P6 processor family including the Pentium M + processor +libpfm_powerpc(3) IBM PowerPC and POWER processor families + (PPC970(FX,GX), PPC970MP POWER4, POWER4+, POWER5, + POWER5+, and POWER6) +.fi +.SH AUTHORS +.nf Stephane Eranian <[EMAIL PROTECTED]> +Robert Richter <[EMAIL PROTECTED]> +.if +.PP .SH SEE ALSO -pfmlib_itanium(3), pfmlib_itanium2(3) and the set of examples shipped with the library +.nf +.PP +libpfm(3), libpfm_amd64(3), libpfm_core(3), libpfm_itanium2(3), +libpfm_itanium(3), libpfm_montecito(3), libpfm_p6(3), +libpfm_powerpc(3). +.PP +pfm_dispatch_events(3), pfm_find_event(3), +pfm_get_cycle_event(3), pfm_get_event_name(3), pfm_get_impl_pmcs(3), +pfm_get_pmu_name(3), pfm_get_version(3), pfm_initialize(3), +pfm_regmask_set(3), pfm_set_options(3), pfm_strerror(3). +.PP +Examples shipped with the library +.if .PP -- 1.5.3.7 -- Advanced Micro Devices, Inc. Operating System Research Center email: [EMAIL PROTECTED] ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ perfmon2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/perfmon2-devel
