| 1 | // SPDX-License-Identifier: GPL-2.0 | 
|---|
| 2 | #ifndef __TRACE_STAT_H | 
|---|
| 3 | #define __TRACE_STAT_H | 
|---|
| 4 |  | 
|---|
| 5 | #include <linux/seq_file.h> | 
|---|
| 6 |  | 
|---|
| 7 | /* | 
|---|
| 8 | * If you want to provide a stat file (one-shot statistics), fill | 
|---|
| 9 | * an iterator with stat_start/stat_next and a stat_show callbacks. | 
|---|
| 10 | * The others callbacks are optional. | 
|---|
| 11 | */ | 
|---|
| 12 | struct tracer_stat { | 
|---|
| 13 | /* The name of your stat file */ | 
|---|
| 14 | const char		*name; | 
|---|
| 15 | /* Iteration over statistic entries */ | 
|---|
| 16 | void			*(*stat_start)(struct tracer_stat *trace); | 
|---|
| 17 | void			*(*stat_next)(void *prev, int idx); | 
|---|
| 18 | /* Compare two entries for stats sorting */ | 
|---|
| 19 | cmp_func_t		stat_cmp; | 
|---|
| 20 | /* Print a stat entry */ | 
|---|
| 21 | int			(*stat_show)(struct seq_file *s, void *p); | 
|---|
| 22 | /* Release an entry */ | 
|---|
| 23 | void			(*stat_release)(void *stat); | 
|---|
| 24 | /* Print the headers of your stat entries */ | 
|---|
| 25 | int			(*)(struct seq_file *s); | 
|---|
| 26 | }; | 
|---|
| 27 |  | 
|---|
| 28 | /* | 
|---|
| 29 | * Destroy or create a stat file | 
|---|
| 30 | */ | 
|---|
| 31 | extern int register_stat_tracer(struct tracer_stat *trace); | 
|---|
| 32 | extern void unregister_stat_tracer(struct tracer_stat *trace); | 
|---|
| 33 |  | 
|---|
| 34 | #endif /* __TRACE_STAT_H */ | 
|---|
| 35 |  | 
|---|