]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - tools/perf/util/event.h
perf tools: A thread's machine can be found via thread->mg->machine
[mirror_ubuntu-artful-kernel.git] / tools / perf / util / event.h
index 7eb7107731eca8a47db95d590a091b176e70d8f7..5f0e0b89e130649fec5329b739b40380817e7550 100644 (file)
@@ -190,6 +190,32 @@ enum perf_user_event_type { /* above any possible kernel type */
        PERF_RECORD_HEADER_MAX
 };
 
+/*
+ * The kernel collects the number of events it couldn't send in a stretch and
+ * when possible sends this number in a PERF_RECORD_LOST event. The number of
+ * such "chunks" of lost events is stored in .nr_events[PERF_EVENT_LOST] while
+ * total_lost tells exactly how many events the kernel in fact lost, i.e. it is
+ * the sum of all struct lost_event.lost fields reported.
+ *
+ * The total_period is needed because by default auto-freq is used, so
+ * multipling nr_events[PERF_EVENT_SAMPLE] by a frequency isn't possible to get
+ * the total number of low level events, it is necessary to to sum all struct
+ * sample_event.period and stash the result in total_period.
+ */
+struct events_stats {
+       u64 total_period;
+       u64 total_non_filtered_period;
+       u64 total_lost;
+       u64 total_invalid_chains;
+       u32 nr_events[PERF_RECORD_HEADER_MAX];
+       u32 nr_non_filtered_samples;
+       u32 nr_lost_warned;
+       u32 nr_unknown_events;
+       u32 nr_invalid_chains;
+       u32 nr_unknown_id;
+       u32 nr_unprocessable_samples;
+};
+
 struct attr_event {
        struct perf_event_header header;
        struct perf_event_attr attr;
@@ -296,7 +322,6 @@ bool is_bts_event(struct perf_event_attr *attr);
 bool sample_addr_correlates_sym(struct perf_event_attr *attr);
 void perf_event__preprocess_sample_addr(union perf_event *event,
                                        struct perf_sample *sample,
-                                       struct machine *machine,
                                        struct thread *thread,
                                        struct addr_location *al);