trace_seq.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef _LINUX_TRACE_SEQ_H
  2. #define _LINUX_TRACE_SEQ_H
  3. #include <linux/fs.h>
  4. #include <asm/page.h>
  5. /*
  6. * Trace sequences are used to allow a function to call several other functions
  7. * to create a string of data to use (up to a max of PAGE_SIZE).
  8. */
  9. struct trace_seq {
  10. unsigned char buffer[PAGE_SIZE];
  11. unsigned int len;
  12. unsigned int readpos;
  13. };
  14. static inline void
  15. trace_seq_init(struct trace_seq *s)
  16. {
  17. s->len = 0;
  18. s->readpos = 0;
  19. }
  20. /*
  21. * Currently only defined when tracing is enabled.
  22. */
  23. #ifdef CONFIG_TRACING
  24. extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
  25. __attribute__ ((format (printf, 2, 3)));
  26. extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args)
  27. __attribute__ ((format (printf, 2, 0)));
  28. extern int
  29. trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary);
  30. extern int trace_print_seq(struct seq_file *m, struct trace_seq *s);
  31. extern ssize_t trace_seq_to_user(struct trace_seq *s, char __user *ubuf,
  32. size_t cnt);
  33. extern int trace_seq_puts(struct trace_seq *s, const char *str);
  34. extern int trace_seq_putc(struct trace_seq *s, unsigned char c);
  35. extern int trace_seq_putmem(struct trace_seq *s, const void *mem, size_t len);
  36. extern int trace_seq_putmem_hex(struct trace_seq *s, const void *mem,
  37. size_t len);
  38. extern void *trace_seq_reserve(struct trace_seq *s, size_t len);
  39. extern int trace_seq_path(struct trace_seq *s, struct path *path);
  40. #else /* CONFIG_TRACING */
  41. static inline int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
  42. {
  43. return 0;
  44. }
  45. static inline int
  46. trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary)
  47. {
  48. return 0;
  49. }
  50. static inline int trace_print_seq(struct seq_file *m, struct trace_seq *s)
  51. {
  52. return 0;
  53. }
  54. static inline ssize_t trace_seq_to_user(struct trace_seq *s, char __user *ubuf,
  55. size_t cnt)
  56. {
  57. return 0;
  58. }
  59. static inline int trace_seq_puts(struct trace_seq *s, const char *str)
  60. {
  61. return 0;
  62. }
  63. static inline int trace_seq_putc(struct trace_seq *s, unsigned char c)
  64. {
  65. return 0;
  66. }
  67. static inline int
  68. trace_seq_putmem(struct trace_seq *s, const void *mem, size_t len)
  69. {
  70. return 0;
  71. }
  72. static inline int trace_seq_putmem_hex(struct trace_seq *s, const void *mem,
  73. size_t len)
  74. {
  75. return 0;
  76. }
  77. static inline void *trace_seq_reserve(struct trace_seq *s, size_t len)
  78. {
  79. return NULL;
  80. }
  81. static inline int trace_seq_path(struct trace_seq *s, struct path *path)
  82. {
  83. return 0;
  84. }
  85. #endif /* CONFIG_TRACING */
  86. #endif /* _LINUX_TRACE_SEQ_H */