trace_seq.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef _LINUX_TRACE_SEQ_H
  2. #define _LINUX_TRACE_SEQ_H
  3. /*
  4. * Trace sequences are used to allow a function to call several other functions
  5. * to create a string of data to use (up to a max of PAGE_SIZE.
  6. */
  7. struct trace_seq {
  8. unsigned char buffer[PAGE_SIZE];
  9. unsigned int len;
  10. unsigned int readpos;
  11. };
  12. static inline void
  13. trace_seq_init(struct trace_seq *s)
  14. {
  15. s->len = 0;
  16. s->readpos = 0;
  17. }
  18. /*
  19. * Currently only defined when tracing is enabled.
  20. */
  21. #ifdef CONFIG_TRACING
  22. extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
  23. __attribute__ ((format (printf, 2, 3)));
  24. extern int
  25. trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary);
  26. extern void trace_print_seq(struct seq_file *m, struct trace_seq *s);
  27. extern ssize_t trace_seq_to_user(struct trace_seq *s, char __user *ubuf,
  28. size_t cnt);
  29. extern int trace_seq_puts(struct trace_seq *s, const char *str);
  30. extern int trace_seq_putc(struct trace_seq *s, unsigned char c);
  31. extern int trace_seq_putmem(struct trace_seq *s, const void *mem, size_t len);
  32. extern int trace_seq_putmem_hex(struct trace_seq *s, const void *mem,
  33. size_t len);
  34. extern void *trace_seq_reserve(struct trace_seq *s, size_t len);
  35. extern int trace_seq_path(struct trace_seq *s, struct path *path);
  36. #else /* CONFIG_TRACING */
  37. static inline int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
  38. __attribute__ ((format (printf, 2, 3)))
  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 */