Merge tag 'tty-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
[linux-2.6-microblaze.git] / include / linux / perf_event.h
index e83f13c..e85cd1c 100644 (file)
@@ -444,7 +444,8 @@ struct pmu {
 
        /*
         * Will return the value for perf_event_mmap_page::index for this event,
-        * if no implementation is provided it will default to: event->hw.idx + 1.
+        * if no implementation is provided it will default to 0 (see
+        * perf_event_idx_default).
         */
        int (*event_idx)                (struct perf_event *event); /*optional */
 
@@ -1316,15 +1317,31 @@ extern int perf_event_output(struct perf_event *event,
                             struct pt_regs *regs);
 
 static inline bool
-is_default_overflow_handler(struct perf_event *event)
+__is_default_overflow_handler(perf_overflow_handler_t overflow_handler)
 {
-       if (likely(event->overflow_handler == perf_event_output_forward))
+       if (likely(overflow_handler == perf_event_output_forward))
                return true;
-       if (unlikely(event->overflow_handler == perf_event_output_backward))
+       if (unlikely(overflow_handler == perf_event_output_backward))
                return true;
        return false;
 }
 
+#define is_default_overflow_handler(event) \
+       __is_default_overflow_handler((event)->overflow_handler)
+
+#ifdef CONFIG_BPF_SYSCALL
+static inline bool uses_default_overflow_handler(struct perf_event *event)
+{
+       if (likely(is_default_overflow_handler(event)))
+               return true;
+
+       return __is_default_overflow_handler(event->orig_overflow_handler);
+}
+#else
+#define uses_default_overflow_handler(event) \
+       is_default_overflow_handler(event)
+#endif
+
 extern void
 perf_event_header__init_id(struct perf_event_header *header,
                           struct perf_sample_data *data,