2
0

ftrace.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. """
  3. Ftrace built-in backend.
  4. """
  5. __author__ = "Eiichi Tsukata <eiichi.tsukata.xh@hitachi.com>"
  6. __copyright__ = "Copyright (C) 2013 Hitachi, Ltd."
  7. __license__ = "GPL version 2 or (at your option) any later version"
  8. __maintainer__ = "Stefan Hajnoczi"
  9. __email__ = "stefanha@redhat.com"
  10. from tracetool import out
  11. PUBLIC = True
  12. def generate_h_begin(events, group):
  13. out('#include "trace/ftrace.h"',
  14. '')
  15. def generate_h(event, group):
  16. argnames = ", ".join(event.args.names())
  17. if len(event.args) > 0:
  18. argnames = ", " + argnames
  19. out(' {',
  20. ' char ftrace_buf[MAX_TRACE_STRLEN];',
  21. ' int unused __attribute__ ((unused));',
  22. ' int trlen;',
  23. ' if (trace_event_get_state(%(event_id)s)) {',
  24. '#line %(event_lineno)d "%(event_filename)s"',
  25. ' trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,',
  26. ' "%(name)s " %(fmt)s "\\n" %(argnames)s);',
  27. '#line %(out_next_lineno)d "%(out_filename)s"',
  28. ' trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);',
  29. ' unused = write(trace_marker_fd, ftrace_buf, trlen);',
  30. ' }',
  31. ' }',
  32. name=event.name,
  33. args=event.args,
  34. event_id="TRACE_" + event.name.upper(),
  35. event_lineno=event.lineno,
  36. event_filename=event.filename,
  37. fmt=event.fmt.rstrip("\n"),
  38. argnames=argnames)
  39. def generate_h_backend_dstate(event, group):
  40. out(' trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
  41. event_id="TRACE_" + event.name.upper())