I386_PMC_INFO(2) | System Calls Manual (i386) | I386_PMC_INFO(2) |
int
i386_pmc_info(struct i386_pmc_info_args *ia);
int
i386_pmc_startstop(struct i386_pmc_startstop_args *ssa);
int
i386_pmc_read(struct i386_pmc_read_args *ra);
i386_pmc_info() will return information about the available CPU counters. The information is returned in ia having the following structure:
struct i386_pmc_info_args { int type; int flags; };
The type member describes the class of performance counters available. Valid values are:
The flags member describes additional capabilities of the processor. Valid values are:
i386_pmc_startstop() is used to start and stop the measurement of the CPU performance counters. The argument ssa has the following structure:
struct i386_pmc_startstop_args { int counter; uint64_t val; uint8_t event; uint8_t unit; uint8_t compare; uint8_t flags; };
The counter specified by the member counter is started if the member flags has PMC_SETUP_KERNEL or PMC_SETUP_USER set, otherwise the counter is stopped. The initial value of the counter is set to val. Additional values for the flags member are PMC_SETUP_EDGE and PMC_SETUP_INV. The event member specifies some event written to the control register. The unit member specifies the measurement units. The compare member is a mask for the counter.
i386_pmc_read() will return information about a specific CPU counter measured during the last measurement period determined by the calling of i386_pmc_startstop(). The information is returned in ra having the following structure:
struct i386_pmc_read_args { int counter; uint64_t val; uint64_t time; };
The counter to read should be specified by the counter member. Counters are numbered from 0 to PMC_NCOUNTERS. The value of the counter is returned in the val member. The time since epoch, measured in CPU clock cycles, is returned in the time member.
November 10, 2001 | NetBSD 6.1 |