perf counters: clean up 'raw' type API
Impact: cleanup Introduce a separate hw_event type. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
4ac13294e4
Коммит
eab656ae04
|
@ -38,6 +38,7 @@ enum hw_event_types {
|
|||
* If this bit is set in the type, then trigger NMI sampling:
|
||||
*/
|
||||
PERF_COUNT_NMI = (1 << 30),
|
||||
PERF_COUNT_RAW = (1 << 31),
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -49,6 +50,12 @@ enum perf_record_type {
|
|||
PERF_RECORD_GROUP,
|
||||
};
|
||||
|
||||
struct perf_counter_event {
|
||||
u32 hw_event_type;
|
||||
u32 hw_event_period;
|
||||
u64 hw_raw_ctrl;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hw_perf_counter - performance counter hardware details
|
||||
*/
|
||||
|
|
|
@ -54,6 +54,7 @@ struct compat_stat;
|
|||
struct compat_timeval;
|
||||
struct robust_list_head;
|
||||
struct getcpu_cache;
|
||||
struct perf_counter_event;
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/aio_abi.h>
|
||||
|
@ -625,9 +626,6 @@ asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len);
|
|||
int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
|
||||
|
||||
asmlinkage int
|
||||
sys_perf_counter_open(u32 hw_event_type,
|
||||
u32 hw_event_period,
|
||||
u32 record_type,
|
||||
pid_t pid,
|
||||
int cpu);
|
||||
sys_perf_counter_open(struct perf_counter_event __user *uevent, u32 record_type,
|
||||
pid_t pid, int cpu, int masterfd);
|
||||
#endif
|
||||
|
|
|
@ -734,26 +734,27 @@ perf_counter_alloc(u32 hw_event_period, int cpu, u32 record_type)
|
|||
* @pid: target pid
|
||||
*/
|
||||
asmlinkage int
|
||||
sys_perf_counter_open(u32 hw_event_type,
|
||||
u32 hw_event_period,
|
||||
u32 record_type,
|
||||
pid_t pid,
|
||||
int cpu)
|
||||
sys_perf_counter_open(struct perf_counter_event __user *uevent, u32 record_type,
|
||||
pid_t pid, int cpu, int masterfd)
|
||||
{
|
||||
struct perf_counter_context *ctx;
|
||||
struct perf_counter_event event;
|
||||
struct perf_counter *counter;
|
||||
int ret;
|
||||
|
||||
if (copy_from_user(&event, uevent, sizeof(event)) != 0)
|
||||
return -EFAULT;
|
||||
|
||||
ctx = find_get_context(pid, cpu);
|
||||
if (IS_ERR(ctx))
|
||||
return PTR_ERR(ctx);
|
||||
|
||||
ret = -ENOMEM;
|
||||
counter = perf_counter_alloc(hw_event_period, cpu, record_type);
|
||||
counter = perf_counter_alloc(event.hw_event_period, cpu, record_type);
|
||||
if (!counter)
|
||||
goto err_put_context;
|
||||
|
||||
ret = hw_perf_counter_init(counter, hw_event_type);
|
||||
ret = hw_perf_counter_init(counter, event.hw_event_type);
|
||||
if (ret)
|
||||
goto err_free_put_context;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче