perf: Report maximum values for counter overflow
[akaros.git] / tools / profile / perf / perf_core.h
index d305f37..ef67083 100644 (file)
@@ -26,9 +26,13 @@ struct perf_arch_info {
        uint32_t fix_counters_x_proc;
 };
 
+#define MAX_FQSTR_SZ 128
 struct perf_eventsel {
        struct perfmon_event ev;
-       int eidx;
+       bool attr_emitted;
+       uint32_t type;
+       uint64_t config;
+       char fq_str[MAX_FQSTR_SZ];
 };
 
 struct perf_event {
@@ -37,7 +41,14 @@ struct perf_event {
        int ped;
 };
 
+struct perf_context_config {
+       const char *perf_file;
+       const char *kpctl_file;
+       const char *kpdata_file;
+};
+
 struct perf_context {
+       struct perf_context_config *cfg;
        int perf_fd;
        int kpctl_fd;
        struct perf_arch_info pai;
@@ -45,28 +56,22 @@ struct perf_context {
        struct perf_event events[MAX_CPU_EVENTS];
 };
 
-struct perf_context_config {
-       const char *perf_file;
-       const char *kpctl_file;
-};
-
-void perf_initialize(int argc, char *argv[]);
+void perf_initialize(void);
 void perf_finalize(void);
-void perf_parse_event(const char *str, struct perf_eventsel *sel);
-struct perf_context *perf_create_context(const struct perf_context_config *cfg);
+struct perf_eventsel *perf_parse_event(const char *str);
+struct perf_context *perf_create_context(struct perf_context_config *cfg);
 void perf_free_context(struct perf_context *pctx);
-void perf_flush_context_traces(struct perf_context *pctx);
 void perf_context_event_submit(struct perf_context *pctx,
                                                           const struct core_set *cores,
                                                           const struct perf_eventsel *sel);
-void perf_context_show_values(struct perf_context *pctx, FILE *file);
+void perf_stop_events(struct perf_context *pctx);
+void perf_start_sampling(struct perf_context *pctx);
+void perf_stop_sampling(struct perf_context *pctx);
+uint64_t perf_get_event_count(struct perf_context *pctx, unsigned int idx);
+void perf_context_show_events(struct perf_context *pctx, FILE *file);
 void perf_show_events(const char *rx, FILE *file);
-void perf_get_event_string(const struct perf_eventsel *sel, char *sbuf,
-                                                  size_t size);
-void perf_make_eventsel_from_event_mask(struct perf_eventsel *sel,
-                                                                               uint32_t event, uint32_t mask);
 void perf_convert_trace_data(struct perfconv_context *cctx, const char *input,
-                                                        const char *output);
+                                                        FILE *outfile);
 
 static inline const struct perf_arch_info *perf_context_get_arch_info(
        const struct perf_context *pctx)