| // SPDX-License-Identifier: GPL-2.0 |
| #ifndef __TRACE_STAT_H |
| #define __TRACE_STAT_H |
| |
| #include <linux/seq_file.h> |
| |
| /* |
| * If you want to provide a stat file (one-shot statistics), fill |
| * an iterator with stat_start/stat_next and a stat_show callbacks. |
| * The others callbacks are optional. |
| */ |
| struct tracer_stat { |
| /* The name of your stat file */ |
| const char *name; |
| /* Iteration over statistic entries */ |
| void *(*stat_start)(struct tracer_stat *trace); |
| void *(*stat_next)(void *prev, int idx); |
| /* Compare two entries for stats sorting */ |
| cmp_func_t stat_cmp; |
| /* Print a stat entry */ |
| int (*stat_show)(struct seq_file *s, void *p); |
| /* Release an entry */ |
| void (*stat_release)(void *stat); |
| /* Print the headers of your stat entries */ |
| int (*stat_headers)(struct seq_file *s); |
| }; |
| |
| /* |
| * Destroy or create a stat file |
| */ |
| extern int register_stat_tracer(struct tracer_stat *trace); |
| extern void unregister_stat_tracer(struct tracer_stat *trace); |
| |
| #endif /* __TRACE_STAT_H */ |