mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
perf_counter: add ioctl(PERF_COUNTER_IOC_RESET)
Provide a way to reset an existing counter - this eases PAPI libraries around perfcounters. Similar to read() it doesn't collapse pending child counters. [ Impact: new perfcounter fd ioctl method to reset counters ] Suggested-by: Corey Ashford <cjashfor@linux.vnet.ibm.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <20090505155437.022272933@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
c66de4a5be
commit
6de6a7b957
2 changed files with 9 additions and 0 deletions
|
@ -160,6 +160,7 @@ struct perf_counter_hw_event {
|
|||
#define PERF_COUNTER_IOC_ENABLE _IO ('$', 0)
|
||||
#define PERF_COUNTER_IOC_DISABLE _IO ('$', 1)
|
||||
#define PERF_COUNTER_IOC_REFRESH _IOW('$', 2, u32)
|
||||
#define PERF_COUNTER_IOC_RESET _IO ('$', 3)
|
||||
|
||||
/*
|
||||
* Structure of the page that can be mapped via mmap
|
||||
|
|
|
@ -1288,6 +1288,11 @@ static unsigned int perf_poll(struct file *file, poll_table *wait)
|
|||
return events;
|
||||
}
|
||||
|
||||
static void perf_counter_reset(struct perf_counter *counter)
|
||||
{
|
||||
atomic_set(&counter->count, 0);
|
||||
}
|
||||
|
||||
static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct perf_counter *counter = file->private_data;
|
||||
|
@ -1303,6 +1308,9 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
|||
case PERF_COUNTER_IOC_REFRESH:
|
||||
perf_counter_refresh(counter, arg);
|
||||
break;
|
||||
case PERF_COUNTER_IOC_RESET:
|
||||
perf_counter_reset(counter);
|
||||
break;
|
||||
default:
|
||||
err = -ENOTTY;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue