From 3601ad205e74a0af22de4421f12a5f0ee0559057 Mon Sep 17 00:00:00 2001 From: Pawel Moll Date: Fri, 1 Feb 2013 14:03:56 +0000 Subject: [PATCH 16/45] perf: Add ioctl to return current time value To co-relate user space events with the perf events stream a current (as in: "what time(stamp) is it now?") time value must be made available. This patch adds a perf ioctl that makes this possible. Signed-off-by: Pawel Moll --- include/uapi/linux/perf_event.h | 1 + kernel/events/core.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h index 0b1df41..41cb39e 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -321,6 +321,7 @@ struct perf_event_attr { #define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64) #define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5) #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *) +#define PERF_EVENT_IOC_GET_TIME _IOR('$', 7, __u64) enum perf_event_ioc_flags { PERF_IOC_FLAG_GROUP = 1U << 0, diff --git a/kernel/events/core.c b/kernel/events/core.c index 1833bc5..62a44d9 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -3543,6 +3543,14 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg) case PERF_EVENT_IOC_SET_FILTER: return perf_event_set_filter(event, (void __user *)arg); + case PERF_EVENT_IOC_GET_TIME: + { + u64 time = perf_clock(); + if (copy_to_user((void __user *)arg, &time, sizeof(time))) + return -EFAULT; + return 0; + } + default: return -ENOTTY; } -- 1.7.10.1