root / scripts / tracetool / backend / ftrace.py @ 781e9545
History | View | Annotate | Download (1.5 kB)
1 | 781e9545 | Eiichi Tsukata | #!/usr/bin/env python
|
---|---|---|---|
2 | 781e9545 | Eiichi Tsukata | # -*- coding: utf-8 -*-
|
3 | 781e9545 | Eiichi Tsukata | |
4 | 781e9545 | Eiichi Tsukata | """
|
5 | 781e9545 | Eiichi Tsukata | Ftrace built-in backend.
|
6 | 781e9545 | Eiichi Tsukata | """
|
7 | 781e9545 | Eiichi Tsukata | |
8 | 781e9545 | Eiichi Tsukata | __author__ = "Eiichi Tsukata <eiichi.tsukata.xh@hitachi.com>"
|
9 | 781e9545 | Eiichi Tsukata | __copyright__ = "Copyright (C) 2013 Hitachi, Ltd."
|
10 | 781e9545 | Eiichi Tsukata | __license__ = "GPL version 2 or (at your option) any later version"
|
11 | 781e9545 | Eiichi Tsukata | |
12 | 781e9545 | Eiichi Tsukata | __maintainer__ = "Stefan Hajnoczi"
|
13 | 781e9545 | Eiichi Tsukata | __email__ = "stefanha@redhat.com"
|
14 | 781e9545 | Eiichi Tsukata | |
15 | 781e9545 | Eiichi Tsukata | |
16 | 781e9545 | Eiichi Tsukata | from tracetool import out |
17 | 781e9545 | Eiichi Tsukata | |
18 | 781e9545 | Eiichi Tsukata | |
19 | 781e9545 | Eiichi Tsukata | PUBLIC = True
|
20 | 781e9545 | Eiichi Tsukata | |
21 | 781e9545 | Eiichi Tsukata | |
22 | 781e9545 | Eiichi Tsukata | def c(events): |
23 | 781e9545 | Eiichi Tsukata | pass
|
24 | 781e9545 | Eiichi Tsukata | |
25 | 781e9545 | Eiichi Tsukata | def h(events): |
26 | 781e9545 | Eiichi Tsukata | out('#include "trace/ftrace.h"',
|
27 | 781e9545 | Eiichi Tsukata | '#include "trace/control.h"',
|
28 | 781e9545 | Eiichi Tsukata | '',
|
29 | 781e9545 | Eiichi Tsukata | ) |
30 | 781e9545 | Eiichi Tsukata | |
31 | 781e9545 | Eiichi Tsukata | for e in events: |
32 | 781e9545 | Eiichi Tsukata | argnames = ", ".join(e.args.names())
|
33 | 781e9545 | Eiichi Tsukata | if len(e.args) > 0: |
34 | 781e9545 | Eiichi Tsukata | argnames = ", " + argnames
|
35 | 781e9545 | Eiichi Tsukata | |
36 | 781e9545 | Eiichi Tsukata | out('static inline void trace_%(name)s(%(args)s)',
|
37 | 781e9545 | Eiichi Tsukata | '{',
|
38 | 781e9545 | Eiichi Tsukata | ' char ftrace_buf[MAX_TRACE_STRLEN];',
|
39 | 781e9545 | Eiichi Tsukata | ' int unused __attribute__ ((unused));',
|
40 | 781e9545 | Eiichi Tsukata | ' int trlen;',
|
41 | 781e9545 | Eiichi Tsukata | ' bool _state = trace_event_get_state(%(event_id)s);',
|
42 | 781e9545 | Eiichi Tsukata | ' if (_state) {',
|
43 | 781e9545 | Eiichi Tsukata | ' trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,',
|
44 | 781e9545 | Eiichi Tsukata | ' "%(name)s " %(fmt)s "\\n" %(argnames)s);',
|
45 | 781e9545 | Eiichi Tsukata | ' trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);',
|
46 | 781e9545 | Eiichi Tsukata | ' unused = write(trace_marker_fd, ftrace_buf, trlen);',
|
47 | 781e9545 | Eiichi Tsukata | ' }',
|
48 | 781e9545 | Eiichi Tsukata | '}',
|
49 | 781e9545 | Eiichi Tsukata | name = e.name, |
50 | 781e9545 | Eiichi Tsukata | args = e.args, |
51 | 781e9545 | Eiichi Tsukata | event_id = "TRACE_" + e.name.upper(),
|
52 | 781e9545 | Eiichi Tsukata | fmt = e.fmt.rstrip("\n"),
|
53 | 781e9545 | Eiichi Tsukata | argnames = argnames, |
54 | 781e9545 | Eiichi Tsukata | ) |