Changeset View
Changeset View
Standalone View
Standalone View
lib/libpmc/pmclog.c
Show First 20 Lines • Show All 350 Lines • ▼ Show 20 Lines | case PMCLOG_TYPE_MAP_OUT: | ||||
PMCLOG_READADDR(le,ev->pl_u.pl_mo.pl_end); | PMCLOG_READADDR(le,ev->pl_u.pl_mo.pl_end); | ||||
break; | break; | ||||
case PMCLOG_TYPE_PMCALLOCATE: | case PMCLOG_TYPE_PMCALLOCATE: | ||||
PMCLOG_READ32(le,ev->pl_u.pl_a.pl_pmcid); | PMCLOG_READ32(le,ev->pl_u.pl_a.pl_pmcid); | ||||
PMCLOG_READ32(le,ev->pl_u.pl_a.pl_event); | PMCLOG_READ32(le,ev->pl_u.pl_a.pl_event); | ||||
PMCLOG_READ32(le,ev->pl_u.pl_a.pl_flags); | PMCLOG_READ32(le,ev->pl_u.pl_a.pl_flags); | ||||
PMCLOG_READ32(le,noop); | PMCLOG_READ32(le,noop); | ||||
PMCLOG_READ64(le,ev->pl_u.pl_a.pl_rate); | PMCLOG_READ64(le,ev->pl_u.pl_a.pl_rate); | ||||
ev->pl_u.pl_a.pl_evname = pmc_pmu_event_get_by_idx(ps->ps_cpuid, ev->pl_u.pl_a.pl_event); | |||||
if (ev->pl_u.pl_a.pl_evname != NULL) | /* | ||||
break; | * Could be either a PMC event code or a PMU event index; | ||||
else if ((ev->pl_u.pl_a.pl_evname = | * assume that their encodings don't overlap (i.e. no PMU event | ||||
_pmc_name_of_event(ev->pl_u.pl_a.pl_event, ps->ps_arch)) | * table is more than 0x1000 entries) to distinguish them here. | ||||
== NULL) { | * Otherwise pmc_pmu_event_get_by_idx will go out of bounds if | ||||
* given a PMC event code when it knows about that CPU. | |||||
* | |||||
* XXX: Ideally we'd have user flags to give us that context. | |||||
*/ | |||||
if (ev->pl_u.pl_a.pl_event < PMC_EVENT_FIRST) | |||||
ev->pl_u.pl_a.pl_evname = | |||||
pmc_pmu_event_get_by_idx(ps->ps_cpuid, | |||||
ev->pl_u.pl_a.pl_event); | |||||
else if (ev->pl_u.pl_a.pl_event <= PMC_EVENT_LAST) | |||||
ev->pl_u.pl_a.pl_evname = | |||||
_pmc_name_of_event(ev->pl_u.pl_a.pl_event, | |||||
ps->ps_arch); | |||||
else | |||||
ev->pl_u.pl_a.pl_evname = NULL; | |||||
if (ev->pl_u.pl_a.pl_evname == NULL) { | |||||
printf("unknown event\n"); | printf("unknown event\n"); | ||||
goto error; | goto error; | ||||
} | } | ||||
break; | break; | ||||
case PMCLOG_TYPE_PMCALLOCATEDYN: | case PMCLOG_TYPE_PMCALLOCATEDYN: | ||||
PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_pmcid); | PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_pmcid); | ||||
PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_event); | PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_event); | ||||
PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_flags); | PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_flags); | ||||
▲ Show 20 Lines • Show All 228 Lines • Show Last 20 Lines |