[PATCH 6/6] sh: oprofile: Use perf-events oprofile backend
From: Robert Richter <hidden>
Date: 2010-09-27 22:45:51
Also in:
linux-arch, linux-sh
On 27.09.10 18:26:27, Matt Fleming wrote:
On Tue, Sep 28, 2010 at 12:07:03AM +0200, Robert Richter wrote:quoted
On 27.09.10 16:01:38, Matt Fleming wrote:quoted
On Thu, Sep 16, 2010 at 04:32:54PM +0200, Robert Richter wrote:quoted
quoted
diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c index 2cb9ad5..3c3fc9a 100644 --- a/arch/sh/kernel/perf_event.c +++ b/arch/sh/kernel/perf_event.c@@ -59,6 +59,14 @@ static inline int sh_pmu_initialized(void) return !!sh_pmu; } +const char *sh_pmu_name(void) +{ + if (!sh_pmu) + return NULL; + + return sh_pmu->name; +}Couldn't we make this a generic function like perf_num_counters()?Well, ARM doesn't have names as strings for its pmus currently. What's more, ARM wouldn't use it; SH would be the only user of this function. I don't think this one makes sense to be a generic function.I didn't catch this with my first review, the function will need an EXPORT_SYMBOL_GPL() to allow building modules. This will mean an interface extension what should be non-arch. So, for architectures we need the pmu name like SH we just implement the generic function. For ARM we don't need to provide this function.Yeah my bad, I just hit this EXPORT_SYMBOL_GPL issue when compiling oprofile as a module.quoted
Most of the interface is defined in linux/perf_event.h. We shouldn't move this to asm/perf_event.h, so this is one more argument for the non-arch implementation.I'm not advocating moving this function to asm/perf_event.h.quoted
As the implementation of the function would be optional, why should we make it architectural?I don't see why we should pollute the perf namespace with a function that is only being used inside the SH oprofile code? There would be exactly one use of this function and I doubt the perf guys will want this function exposed. In it's current state, it really is no use to any architecture other than SH. We can always add a generic perf_pmu_name() function later if needed, but it's definitely not needed at the moment.
Ok, so then let's implement sh_pmu_name() in arch/sh/oprofile/common.c, we import asm/perf_event.h to get access to struct sh_pmu. This could be implemented as a static function then and we also get rid of this interface thing. -Robert -- Advanced Micro Devices, Inc. Operating System Research Center