trace_seq.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. __attribute__ ((format (printf, 2, 3)))
  40. {
  41. return 0;
  42. }
  43. static inline int
  44. trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary)
  45. {
  46. return 0;
  47. }
  48. static inline void trace_print_seq(struct seq_file *m, struct trace_seq *s)
  49. {
  50. }
  51. static inline ssize_t trace_seq_to_user(struct trace_seq *s, char __user *ubuf,
  52. size_t cnt)
  53. {
  54. return 0;
  55. }
  56. static inline int trace_seq_puts(struct trace_seq *s, const char *str)
  57. {
  58. return 0;
  59. }
  60. static inline int trace_seq_putc(struct trace_seq *s, unsigned char c);
  61. {
  62. return 0;
  63. }
  64. static inline int
  65. trace_seq_putmem(struct trace_seq *s, const void *mem, size_t len)
  66. {
  67. return 0;
  68. }
  69. static inline int trace_seq_putmem_hex(struct trace_seq *s, const void *mem,
  70. size_t len)
  71. {
  72. return 0;
  73. }
  74. static inline void *trace_seq_reserve(struct trace_seq *s, size_t len)
  75. {
  76. return NULL;
  77. }
  78. static inline int trace_seq_path(struct trace_seq *s, struct path *path)
  79. {
  80. return 0;
  81. }
  82. #endif /* CONFIG_TRACING */
  83. #endif /* _LINUX_TRACE_SEQ_H */