41#define NUM_PMCS PFMLIB_MAX_PMCS
42#define NUM_PMDS PFMLIB_MAX_PMDS
80 unsigned int num_counters;
81 uint32_t
i, j, l, k,
ncpus, npmds;
92 memset(&ctx, 0,
sizeof(ctx));
93 memset(pc, 0,
sizeof(pc));
95 ncpus = (uint32_t)sysconf(_SC_NPROCESSORS_ONLN);
97 fatal_error(
"cannot retrieve number of online processors\n");
100 cpu_list = strtoul(argv[1],NULL,0);
104 cpu_list = ((1<<
ncpus)-1);
110 memset(&inp,0,
sizeof(inp));
111 memset(&outp,0,
sizeof(outp));
116 name = malloc(len+1);
118 fatal_error(
"cannot allocate memory for event name\n");
131 if (
i > num_counters) {
133 printf(
"too many events provided (max=%d events), using first %d event(s)\n", num_counters,
i);
155 printf(
"ncpus=%u npmds=%u\n",
ncpus, npmds);
177 for(l=0, k= 0; l <
ncpus; l++) {
193 ret =
pfms_create(&cpu_list, 1, &ctx, NULL, &desc);
218 printf(
"monitoring for 10s on all CPUs\n");
255 for(j=0, k= 0; j <
ncpus; j++) {
258 printf(
"CPU%-3d PMD%u %20"PRIu64
" %s\n",
static double c[MATRIX_SIZE][MATRIX_SIZE]
#define PFM_FL_SYSTEM_WIDE
int pfms_write_pmcs(void *desc, pfarg_pmc_t *pmcs, uint32_t n)
int pfms_write_pmds(void *desc, pfarg_pmd_t *pmds, uint32_t n)
int pfms_create(uint64_t *cpu_list, size_t n, pfarg_ctx_t *ctx, pfms_ovfl_t *ovfl, void **desc)
int pfms_stop(void *desc)
int pfms_load(void *desc)
int pfms_close(void *desc)
int pfms_initialize(void)
int pfms_read_pmds(void *desc, pfarg_pmd_t *pmds, uint32_t n)
int pfms_start(void *desc)
unsigned long AO_t __attribute__((__aligned__(4)))
pfm_err_t pfm_get_inst_retired_event(pfmlib_event_t *e)
char * pfm_strerror(int code)
pfm_err_t pfm_dispatch_events(pfmlib_input_param_t *p, void *model_in, pfmlib_output_param_t *q, void *model_out)
pfm_err_t pfm_get_full_event_name(pfmlib_event_t *e, char *name, size_t maxlen)
pfm_err_t pfm_get_cycle_event(pfmlib_event_t *e)
pfm_err_t pfm_initialize(void)
pfm_err_t pfm_get_max_event_name_len(size_t *len)
#define PFMLIB_PFP_SYSTEMWIDE
pfm_err_t pfm_get_num_counters(unsigned int *num)
pfmlib_reg_t pfp_pmds[PFMLIB_MAX_PMDS]
pfmlib_reg_t pfp_pmcs[PFMLIB_MAX_PMCS]
unsigned int pfp_pmc_count
unsigned int pfp_pmd_count
unsigned long long reg_value
static void fatal_error(char *fmt,...) __attribute__((noreturn))
static uint32_t popcount(uint64_t c)