parse-events: Rename struct record to struct pevent_record
[linux-2.6-block.git] / tools / perf / util / trace-event.h
index 58ae14c5baacba738b48ff8b97e3bd1bbde351f9..639852ac1117109849adc8386c66efbf0ccba24f 100644 (file)
@@ -1,20 +1,21 @@
-#ifndef __PERF_TRACE_EVENTS_H
-#define __PERF_TRACE_EVENTS_H
+#ifndef _PERF_UTIL_TRACE_EVENT_H
+#define _PERF_UTIL_TRACE_EVENT_H
 
-#include <stdbool.h>
 #include "parse-events.h"
+#include "event-parse.h"
+#include "session.h"
 
 struct machine;
 struct perf_sample;
 union perf_event;
 struct thread;
 
-#define __unused __attribute__((unused))
-
+extern int header_page_size_size;
+extern int header_page_ts_size;
+extern int header_page_data_offset;
 
-#ifndef PAGE_MASK
-#define PAGE_MASK (page_size - 1)
-#endif
+extern bool latency_format;
+extern struct pevent *perf_pevent;
 
 enum {
        RINGBUF_TYPE_PADDING            = 29,
@@ -26,246 +27,37 @@ enum {
 #define TS_SHIFT               27
 #endif
 
-#define NSECS_PER_SEC          1000000000ULL
-#define NSECS_PER_USEC         1000ULL
-
-enum format_flags {
-       FIELD_IS_ARRAY          = 1,
-       FIELD_IS_POINTER        = 2,
-       FIELD_IS_SIGNED         = 4,
-       FIELD_IS_STRING         = 8,
-       FIELD_IS_DYNAMIC        = 16,
-       FIELD_IS_FLAG           = 32,
-       FIELD_IS_SYMBOLIC       = 64,
-};
-
-struct format_field {
-       struct format_field     *next;
-       char                    *type;
-       char                    *name;
-       int                     offset;
-       int                     size;
-       unsigned long           flags;
-};
-
-struct format {
-       int                     nr_common;
-       int                     nr_fields;
-       struct format_field     *common_fields;
-       struct format_field     *fields;
-};
-
-struct print_arg_atom {
-       char                    *atom;
-};
-
-struct print_arg_string {
-       char                    *string;
-       int                     offset;
-};
-
-struct print_arg_field {
-       char                    *name;
-       struct format_field     *field;
-};
-
-struct print_flag_sym {
-       struct print_flag_sym   *next;
-       char                    *value;
-       char                    *str;
-};
-
-struct print_arg_typecast {
-       char                    *type;
-       struct print_arg        *item;
-};
-
-struct print_arg_flags {
-       struct print_arg        *field;
-       char                    *delim;
-       struct print_flag_sym   *flags;
-};
-
-struct print_arg_symbol {
-       struct print_arg        *field;
-       struct print_flag_sym   *symbols;
-};
-
-struct print_arg;
-
-struct print_arg_op {
-       char                    *op;
-       int                     prio;
-       struct print_arg        *left;
-       struct print_arg        *right;
-};
-
-struct print_arg_func {
-       char                    *name;
-       struct print_arg        *args;
-};
-
-enum print_arg_type {
-       PRINT_NULL,
-       PRINT_ATOM,
-       PRINT_FIELD,
-       PRINT_FLAGS,
-       PRINT_SYMBOL,
-       PRINT_TYPE,
-       PRINT_STRING,
-       PRINT_OP,
-};
-
-struct print_arg {
-       struct print_arg                *next;
-       enum print_arg_type             type;
-       union {
-               struct print_arg_atom           atom;
-               struct print_arg_field          field;
-               struct print_arg_typecast       typecast;
-               struct print_arg_flags          flags;
-               struct print_arg_symbol         symbol;
-               struct print_arg_func           func;
-               struct print_arg_string         string;
-               struct print_arg_op             op;
-       };
-};
-
-struct print_fmt {
-       char                    *format;
-       struct print_arg        *args;
-};
-
-struct event {
-       struct event            *next;
-       char                    *name;
-       int                     id;
-       int                     flags;
-       struct format           format;
-       struct print_fmt        print_fmt;
-       char                    *system;
-};
-
-enum {
-       EVENT_FL_ISFTRACE       = 0x01,
-       EVENT_FL_ISPRINT        = 0x02,
-       EVENT_FL_ISBPRINT       = 0x04,
-       EVENT_FL_ISFUNC         = 0x08,
-       EVENT_FL_ISFUNCENT      = 0x10,
-       EVENT_FL_ISFUNCRET      = 0x20,
-
-       EVENT_FL_FAILED         = 0x80000000
-};
-
-struct record {
-       unsigned long long ts;
-       int size;
-       void *data;
-};
-
-struct record *trace_peek_data(int cpu);
-struct record *trace_read_data(int cpu);
-
-void parse_set_info(int nr_cpus, int long_sz);
-
-ssize_t trace_report(int fd, bool repipe);
-
-void *malloc_or_die(unsigned int size);
+int bigendian(void);
 
-void parse_cmdlines(char *file, int size);
-void parse_proc_kallsyms(char *file, unsigned int size);
-void parse_ftrace_printk(char *file, unsigned int size);
+int read_trace_init(int file_bigendian, int host_bigendian);
+void print_trace_event(int cpu, void *data, int size);
 
-void print_funcs(void);
-void print_printk(void);
+void print_event(int cpu, void *data, int size, unsigned long long nsecs,
+                 char *comm);
 
 int parse_ftrace_file(char *buf, unsigned long size);
 int parse_event_file(char *buf, unsigned long size, char *sys);
-void print_trace_event(int cpu, void *data, int size);
-
-extern int file_bigendian;
-extern int host_bigendian;
-
-int bigendian(void);
-
-static inline unsigned short __data2host2(unsigned short data)
-{
-       unsigned short swap;
-
-       if (host_bigendian == file_bigendian)
-               return data;
 
-       swap = ((data & 0xffULL) << 8) |
-               ((data & (0xffULL << 8)) >> 8);
+struct pevent_record *trace_peek_data(int cpu);
+struct event_format *trace_find_event(int type);
 
-       return swap;
-}
-
-static inline unsigned int __data2host4(unsigned int data)
-{
-       unsigned int swap;
-
-       if (host_bigendian == file_bigendian)
-               return data;
-
-       swap = ((data & 0xffULL) << 24) |
-               ((data & (0xffULL << 8)) << 8) |
-               ((data & (0xffULL << 16)) >> 8) |
-               ((data & (0xffULL << 24)) >> 24);
-
-       return swap;
-}
-
-static inline unsigned long long __data2host8(unsigned long long data)
-{
-       unsigned long long swap;
-
-       if (host_bigendian == file_bigendian)
-               return data;
-
-       swap = ((data & 0xffULL) << 56) |
-               ((data & (0xffULL << 8)) << 40) |
-               ((data & (0xffULL << 16)) << 24) |
-               ((data & (0xffULL << 24)) << 8) |
-               ((data & (0xffULL << 32)) >> 8) |
-               ((data & (0xffULL << 40)) >> 24) |
-               ((data & (0xffULL << 48)) >> 40) |
-               ((data & (0xffULL << 56)) >> 56);
-
-       return swap;
-}
+unsigned long long
+raw_field_value(struct event_format *event, const char *name, void *data);
+void *raw_field_ptr(struct event_format *event, const char *name, void *data);
 
-#define data2host2(ptr)                __data2host2(*(unsigned short *)ptr)
-#define data2host4(ptr)                __data2host4(*(unsigned int *)ptr)
-#define data2host8(ptr)                ({                              \
-       unsigned long long __val;                               \
-                                                               \
-       memcpy(&__val, (ptr), sizeof(unsigned long long));      \
-       __data2host8(__val);                                    \
-})
+void parse_proc_kallsyms(char *file, unsigned int size __unused);
+void parse_ftrace_printk(char *file, unsigned int size __unused);
 
-extern int header_page_ts_offset;
-extern int header_page_ts_size;
-extern int header_page_size_offset;
-extern int header_page_size_size;
-extern int header_page_data_offset;
-extern int header_page_data_size;
-
-extern bool latency_format;
+ssize_t trace_report(int fd, bool repipe);
 
 int trace_parse_common_type(void *data);
 int trace_parse_common_pid(void *data);
-int parse_common_pc(void *data);
-int parse_common_flags(void *data);
-int parse_common_lock_depth(void *data);
-struct event *trace_find_event(int id);
-struct event *trace_find_next_event(struct event *event);
+
+struct event_format *trace_find_next_event(struct event_format *event);
 unsigned long long read_size(void *ptr, int size);
-unsigned long long
-raw_field_value(struct event *event, const char *name, void *data);
-void *raw_field_ptr(struct event *event, const char *name, void *data);
 unsigned long long eval_flag(const char *flag);
 
+struct pevent_record *trace_read_data(int cpu);
 int read_tracing_data(int fd, struct list_head *pattrs);
 
 struct tracing_data {
@@ -280,15 +72,6 @@ struct tracing_data *tracing_data_get(struct list_head *pattrs,
 void tracing_data_put(struct tracing_data *tdata);
 
 
-/* taken from kernel/trace/trace.h */
-enum trace_flag_type {
-       TRACE_FLAG_IRQS_OFF             = 0x01,
-       TRACE_FLAG_IRQS_NOSUPPORT       = 0x02,
-       TRACE_FLAG_NEED_RESCHED         = 0x04,
-       TRACE_FLAG_HARDIRQ              = 0x08,
-       TRACE_FLAG_SOFTIRQ              = 0x10,
-};
-
 struct scripting_ops {
        const char *name;
        int (*start_script) (const char *script, int argc, const char **argv);
@@ -314,4 +97,4 @@ int common_pc(struct scripting_context *context);
 int common_flags(struct scripting_context *context);
 int common_lock_depth(struct scripting_context *context);
 
-#endif /* __PERF_TRACE_EVENTS_H */
+#endif /* _PERF_UTIL_TRACE_EVENT_H */