On Wed, 2011-05-11 at 11:55 -0400, Avi Kivity wrote:
> +++ b/include/linux/perf_event.h
> @@ -709,7 +709,9 @@ struct perf_buffer {
>
> struct perf_sample_data;
>
> -typedef void (*perf_overflow_handler_t)(struct perf_event *, int,
> +typedef void (*perf_overflow_handler_t)(void *context,
> + struct perf_event *event,
> + int,
> struct perf_sample_data *,
> struct pt_regs *regs);
>
> @@ -855,6 +857,7 @@ struct perf_event {
> u64 id;
>
> perf_overflow_handler_t overflow_handler;
> + void *overflow_handler_context;
>
> #ifdef CONFIG_EVENT_TRACING
> struct ftrace_event_call *tp_event;
If you're adding a pointer here, then why pass it along in the callback
thing if it already has the perf_event *?
It seems to me the callback can easily do
event->overflow_handler_context if it needs the thing.