s390/perf,oprofile: Share sampling facility
Introduce reserve/release functions to share the sampling facility between perf and oprofile. Also improve error handling for the sampling facility support in perf. Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
55baa2f831
commit
e28bb79d99
@@ -208,3 +208,33 @@ ssize_t cpumf_events_sysfs_show(struct device *dev,
|
||||
return sprintf(page, "event=0x%04llx,name=%s\n",
|
||||
pmu_attr->id, attr->attr.name);
|
||||
}
|
||||
|
||||
/* Reserve/release functions for sharing perf hardware */
|
||||
static DEFINE_SPINLOCK(perf_hw_owner_lock);
|
||||
static void *perf_sampling_owner;
|
||||
|
||||
int perf_reserve_sampling(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = 0;
|
||||
spin_lock(&perf_hw_owner_lock);
|
||||
if (perf_sampling_owner) {
|
||||
pr_warn("The sampling facility is already reserved by %p\n",
|
||||
perf_sampling_owner);
|
||||
err = -EBUSY;
|
||||
} else
|
||||
perf_sampling_owner = __builtin_return_address(0);
|
||||
spin_unlock(&perf_hw_owner_lock);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(perf_reserve_sampling);
|
||||
|
||||
void perf_release_sampling(void)
|
||||
{
|
||||
spin_lock(&perf_hw_owner_lock);
|
||||
WARN_ON(!perf_sampling_owner);
|
||||
perf_sampling_owner = NULL;
|
||||
spin_unlock(&perf_hw_owner_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(perf_release_sampling);
|
||||
|
Reference in New Issue
Block a user