ftrace.py 1.3 KB

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