From 75924457863e9dc90475b5cbd9bcabfff87cfc0d Mon Sep 17 00:00:00 2001 From: Remy Noel Date: Wed, 18 Apr 2018 19:21:42 +0200 Subject: perfmon: Add overflow handling. Only architectural version 1 handled so far. --- kern/perfmon.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'kern/perfmon.h') diff --git a/kern/perfmon.h b/kern/perfmon.h index 0e5cd19..60e40e0 100644 --- a/kern/perfmon.h +++ b/kern/perfmon.h @@ -65,6 +65,7 @@ struct perfmon_pmu_ops { void (*stop)(unsigned int pmc_id); uint64_t (*read)(unsigned int pmc_id); uint8_t (*get_pmc_width)(void); + void (*handle_of_intr)(struct trap_frame *frame); }; /* @@ -216,17 +217,28 @@ INIT_OP_DECLARE(perfmon_bootstrap); */ INIT_OP_DECLARE(perfmon_setup); +/* + * Handle overflow interrupt. + */ +void perfmon_handle_of_intr(struct trap_frame *frame); + +int perfmon_on_overflow(struct perfmon_pmu_ops *driver); + /* * Register an architecture-specific driver. */ -int -perfmon_pmu_register(struct perfmon_pmu_ops *driver); +int perfmon_pmu_register(struct perfmon_pmu_ops *driver); /* * Get the last value of given pmc. */ uint64_t perfmon_cpu_pmc_get_prev(unsigned int pmc_id); +/* + * Set the last value of given pmc. + */ +void perfmon_cpu_pmc_set_prev(unsigned int pmc_id, uint64_t prev); + /* * Increment overflow counter for given pmc. */ -- cgit v1.2.3