diff options
Diffstat (limited to 'source/hal/source/components/platform_pmu/include/platform_pmu.h')
-rw-r--r-- | source/hal/source/components/platform_pmu/include/platform_pmu.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/source/hal/source/components/platform_pmu/include/platform_pmu.h b/source/hal/source/components/platform_pmu/include/platform_pmu.h new file mode 100644 index 0000000..3724e57 --- /dev/null +++ b/source/hal/source/components/platform_pmu/include/platform_pmu.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2022 Arm Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef PLATFORM_PMU_INTERFACE_H +#define PLATFORM_PMU_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> +#include <stdbool.h> + +#define NUM_PMU_COUNTERS (10) /**< Maximum number of available counters. */ + +/** + * @brief Container for a single unit for a PMU counter. + */ +typedef struct _pmu_counter_unit { + uint64_t value; /**< Value of the counter expressed as 64 bits unsigned integer. */ + const char* name; /**< Name for the counter. */ + const char* unit; /**< Unit that the counter value represents (like cycles, beats, or milliseconds). */ +} pmu_counter_unit; + +/** + * @brief Container for a an array of counters + */ +typedef struct _pmu_counters { + pmu_counter_unit counters[NUM_PMU_COUNTERS]; /**< Counter array. */ + uint32_t num_counters; /**< Number of valid counters. */ + bool initialised; /**< Initialised or not. */ +} pmu_counters; + +/** + * @brief Resets the counters. + */ +void platform_reset_counters(void); + +/** + * @brief Gets the current counter values. + * @returns A populated instance of pmu_counters struct. + **/ +pmu_counters platform_get_counters(void); + +#ifdef __cplusplus +} +#endif + +#endif /* PLATFORM_PMU_INTERFACE_H */ |