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