trace_seq.h 2.3 KB

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