Changeset View
Changeset View
Standalone View
Standalone View
lib/libpmc/libpmc_pmu_util.c
Show First 20 Lines • Show All 571 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
#elif defined(__aarch64__) | #elif defined(__aarch64__) | ||||
int | int | ||||
pmc_pmu_pmcallocate(const char *event_name, struct pmc_op_pmcallocate *pm) | pmc_pmu_pmcallocate(const char *event_name, struct pmc_op_pmcallocate *pm) | ||||
{ | { | ||||
const struct pmu_event *pe; | const struct pmu_event *pe; | ||||
struct pmu_event_desc ped; | |||||
int idx = -1; | int idx = -1; | ||||
event_name = pmu_alias_get(event_name); | event_name = pmu_alias_get(event_name); | ||||
if ((pe = pmu_event_get(NULL, event_name, &idx)) == NULL) | if ((pe = pmu_event_get(NULL, event_name, &idx)) == NULL) | ||||
return (ENOENT); | return (ENOENT); | ||||
if (pe->event == NULL) | if (pe->event == NULL) | ||||
return (ENOENT); | return (ENOENT); | ||||
if (pmu_parse_event(&ped, pe->event)) | |||||
return (ENOENT); | |||||
assert(idx >= 0); | assert(idx >= 0); | ||||
pm->pm_ev = idx; | |||||
pm->pm_md.pm_md_config = ped.ped_event; | |||||
pm->pm_md.pm_md_flags |= PM_MD_RAW_EVENT; | pm->pm_md.pm_md_flags |= PM_MD_RAW_EVENT; | ||||
pm->pm_class = PMC_CLASS_ARMV8; | pm->pm_class = PMC_CLASS_ARMV8; | ||||
pm->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); | pm->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); | ||||
return (0); | return (0); | ||||
} | } | ||||
#else | #else | ||||
int | int | ||||
pmc_pmu_pmcallocate(const char *e __unused, struct pmc_op_pmcallocate *p __unused) | pmc_pmu_pmcallocate(const char *e __unused, struct pmc_op_pmcallocate *p __unused) | ||||
{ | { | ||||
return (EOPNOTSUPP); | return (EOPNOTSUPP); | ||||
} | } | ||||
#endif | #endif |