xref: /qemu/trace/simple.h (revision edb47ec498a5c00607e8d428668d5141822a9eac)
126f7227bSStefan Hajnoczi /*
226f7227bSStefan Hajnoczi  * Simple trace backend
326f7227bSStefan Hajnoczi  *
426f7227bSStefan Hajnoczi  * Copyright IBM, Corp. 2010
526f7227bSStefan Hajnoczi  *
626f7227bSStefan Hajnoczi  * This work is licensed under the terms of the GNU GPL, version 2.  See
726f7227bSStefan Hajnoczi  * the COPYING file in the top-level directory.
826f7227bSStefan Hajnoczi  *
926f7227bSStefan Hajnoczi  */
1026f7227bSStefan Hajnoczi 
11*edb47ec4SLluís #ifndef TRACE_SIMPLE_H
12*edb47ec4SLluís #define TRACE_SIMPLE_H
1326f7227bSStefan Hajnoczi 
1426f7227bSStefan Hajnoczi #include <stdint.h>
1522890ab5SPrerna Saxena #include <stdbool.h>
1622890ab5SPrerna Saxena #include <stdio.h>
1726f7227bSStefan Hajnoczi 
186d8a764eSLluís #ifdef CONFIG_TRACE_SIMPLE
1926f7227bSStefan Hajnoczi typedef uint64_t TraceEventID;
2026f7227bSStefan Hajnoczi 
2122890ab5SPrerna Saxena typedef struct {
2222890ab5SPrerna Saxena     const char *tp_name;
2322890ab5SPrerna Saxena     bool state;
2422890ab5SPrerna Saxena } TraceEvent;
2522890ab5SPrerna Saxena 
2626f7227bSStefan Hajnoczi void trace0(TraceEventID event);
2726f7227bSStefan Hajnoczi void trace1(TraceEventID event, uint64_t x1);
2826f7227bSStefan Hajnoczi void trace2(TraceEventID event, uint64_t x1, uint64_t x2);
2926f7227bSStefan Hajnoczi void trace3(TraceEventID event, uint64_t x1, uint64_t x2, uint64_t x3);
3026f7227bSStefan Hajnoczi void trace4(TraceEventID event, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4);
3126f7227bSStefan Hajnoczi void trace5(TraceEventID event, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5);
3226f7227bSStefan Hajnoczi void trace6(TraceEventID event, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6);
330b2c5088SStefan Weil void st_print_trace(FILE *stream, fprintf_function stream_printf);
340b2c5088SStefan Weil void st_print_trace_events(FILE *stream, fprintf_function stream_printf);
35f871d689SBlue Swirl bool st_change_trace_event_state(const char *tname, bool tstate);
360b2c5088SStefan Weil void st_print_trace_file_status(FILE *stream, fprintf_function stream_printf);
37c5ceb523SStefan Hajnoczi void st_set_trace_file_enabled(bool enable);
38c5ceb523SStefan Hajnoczi bool st_set_trace_file(const char *file);
39c5ceb523SStefan Hajnoczi void st_flush_trace_buffer(void);
4031d3c9b8SStefan Hajnoczi bool st_init(const char *file);
410b5538c3SStefan Hajnoczi #else
4231d3c9b8SStefan Hajnoczi static inline bool st_init(const char *file)
430b5538c3SStefan Hajnoczi {
4431d3c9b8SStefan Hajnoczi     return true;
450b5538c3SStefan Hajnoczi }
466d8a764eSLluís #endif /* !CONFIG_TRACE_SIMPLE */
4726f7227bSStefan Hajnoczi 
48*edb47ec4SLluís #endif /* TRACE_SIMPLE_H */
49