[PATCH] perf/core: introduced stub APIs for exported APIs

From: Manish Bhardwaj
Date: Sun Mar 05 2023 - 00:39:55 EST


Introduced stub APIs for exported APIs so that we can build
independent module without any error if CONFIG_PERF_EVENT
feature is disabled in kernel.

drivers/platform/tegra/uncore_pmu/tegra23x_perf_uncore.c:
In function _scf_pmu_device_probe_:
drivers/platform/tegra/uncore_pmu/tegra23x_perf_uncore.c:596: 8:
error: implicit declaration of function _perf_pmu_register_
[-Werror=implicit-function-declaration]
err = perf_pmu_register(&uncore_pmu->pmu, uncore_pmu->pmu.name,
531 | ^~~~~~~~~~~~~~~~~
drivers/platform/tegra/uncore_pmu/tegra23x_perf_uncore.c: In
function _scf_pmu_device_remove_:
drivers/platform/tegra/uncore_pmu/tegra23x_perf_uncore.c:611: 2:
error: implicit declaration of function _perf_pmu_unregister_; did you
mean _device_unregister_? [-Werror=implicit-function-declaration]
611 | perf_pmu_unregister(&uncore_pmu->pmu);
| ^~~~~~~~~~~~~~~~~~~
| device_unregister
cc1: some warnings being treated as errors
scripts/Makefile.build:297: recipe for target
'drivers/platform/tegra/uncore_pmu/tegra23x_perf_uncore.o' failed
make[7]: *** [drivers/platform/tegra/
uncore_pmu/tegra23x_perf_uncore.o] Error 1

Signed-off-by: Manish Bhardwaj <bhardwajmanish18@xxxxxxxxx>
---
include/linux/perf_event.h | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)

diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index d5628a7b5eaa..f3361f6f348e 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1679,6 +1679,42 @@ extern int perf_event_account_interrupt(struct perf_event *event);
extern int perf_event_period(struct perf_event *event, u64 value);
extern u64 perf_event_pause(struct perf_event *event, bool reset);
#else /* !CONFIG_PERF_EVENTS: */
+static void perf_event_addr_filters_sync(struct perf_event *event) { }
+static u64 perf_event_read_value(struct perf_event *event,
+ u64 *enabled, u64 *running)
+{
+ return 0;
+}
+static void perf_event_update_userpage(struct perf_event *event) { }
+static void perf_register_guest_info_callbacks(struct perf_guest_info_callbacks *cbs) { }
+static void perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks *cbs) { }
+static void perf_report_aux_output_id(struct perf_event *event, u64 hw_id) { }
+static void perf_tp_event(u16 event_type, u64 count, void *record,
+ int entry_size, struct pt_regs *regs,
+ struct hlist_head *head, int rctx,
+ struct task_struct *task)
+{
+}
+static int perf_pmu_register(struct pmu *pmu, const char *name, int type)
+{
+ return -1;
+}
+extern void perf_pmu_unregister(struct pmu *pmu) { }
+static struct perf_event *
+perf_event_create_kernel_counter(struct perf_event_attr *attr,
+ int cpu,
+ struct task_struct *task,
+ perf_overflow_handler_t callback,
+ void *context)
+{
+ return NULL;
+}
+static void perf_pmu_migrate_context(struct pmu *pmu, int src_cpu, int dst_cpu) { }
+static ssize_t perf_event_sysfs_show(struct device *dev, struct device_attribute *attr,
+ char *page)
+{
+ return -1;
+}
static inline void *
perf_aux_output_begin(struct perf_output_handle *handle,
struct perf_event *event) { return NULL; }
--
2.39.2