forked from Imagelibrary/binutils-gdb
gprofng: 31123 improvements to hardware event implementation
Our hardware counter profiling is based on perf_event_open(). Our HWC tables are absent for new machines. I have added HWC tables for the following events: PERF_TYPE_HARDWARE, PERF_TYPE_SOFTWARE, PERF_TYPE_HW_CACHE. Other events require additional fixes. Did a little cleaning: marked the symbols as static, used Stringbuilder, created a function to read /proc/cpuinfo. gprofng/ChangeLog 2024-01-08 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/31123 * common/core_pcbe.c: Mark the symbols as static. Add events_generic[]. * common/hwc_cpus.h: Declare a new function read_cpuinfo. * common/hwcdrv.c: Add a new parameter in init_perf_event(). * common/hwcentry.h: Add use_perf_event_type in Hwcentry. * common/hwcfuncs.c (process_data_descriptor): Read use_perf_event_type, type, config. * common/hwctable.c: Add a new HWC table generic_list[]. * common/opteron_pcbe.c (opt_pcbe_init): Accept AMD machines. * src/collctrl.cc: Use StringBuilder in Coll_Ctrl::build_data_desc(). Add a new function read_cpuinfo.
This commit is contained in:
@@ -112,11 +112,12 @@ extern "C"
|
||||
int timecvt; /* multiplier to convert metric to time, 0 if N/A */
|
||||
ABST_type memop; /* type of backtracking allowed */
|
||||
char *short_desc; /* optional one-liner description, or NULL */
|
||||
int type; /* Type of perf_event_attr */
|
||||
long long config; /* perf_event_type -specific configuration */
|
||||
/* the fields above this line are expected, in order, by the tables in hwctable.c */
|
||||
/* ================================================== */
|
||||
/* the fields below this line are more flexible */
|
||||
unsigned int use_perf_event_type : 16; /* Set 1 to use two fields below */
|
||||
unsigned int type : 16; /* Type of perf_event_attr */
|
||||
long long config; /* perf_event_type -specific configuration */
|
||||
int sort_order; /* "tag" to associate experiment record with HWC def */
|
||||
regno_t *reg_list; /* if not NULL, legal values for <reg_num> field above */
|
||||
/* Note: reg_list will be terminated by REGNO_ANY */
|
||||
|
||||
Reference in New Issue
Block a user