Merge tag 'drm-misc-next-2021-07-22' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / tools / perf / util / iostat.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * perf iostat
4  *
5  * Copyright (C) 2020, Intel Corporation
6  *
7  * Authors: Alexander Antonov <alexander.antonov@linux.intel.com>
8  */
9
10 #ifndef _IOSTAT_H
11 #define _IOSTAT_H
12
13 #include <subcmd/parse-options.h>
14 #include "util/stat.h"
15 #include "util/parse-events.h"
16 #include "util/evlist.h"
17
18 struct option;
19 struct perf_stat_config;
20 struct evlist;
21 struct timespec;
22
23 enum iostat_mode_t {
24         IOSTAT_NONE             = -1,
25         IOSTAT_RUN              = 0,
26         IOSTAT_LIST             = 1
27 };
28
29 extern enum iostat_mode_t iostat_mode;
30
31 typedef void (*iostat_print_counter_t)(struct perf_stat_config *, struct evsel *, char *);
32
33 int iostat_prepare(struct evlist *evlist, struct perf_stat_config *config);
34 int iostat_parse(const struct option *opt, const char *str,
35                  int unset __maybe_unused);
36 void iostat_list(struct evlist *evlist, struct perf_stat_config *config);
37 void iostat_release(struct evlist *evlist);
38 void iostat_prefix(struct evlist *evlist, struct perf_stat_config *config,
39                    char *prefix, struct timespec *ts);
40 void iostat_print_header_prefix(struct perf_stat_config *config);
41 void iostat_print_metric(struct perf_stat_config *config, struct evsel *evsel,
42                          struct perf_stat_output_ctx *out);
43 void iostat_print_counters(struct evlist *evlist,
44                            struct perf_stat_config *config, struct timespec *ts,
45                            char *prefix, iostat_print_counter_t print_cnt_cb);
46
47 #endif /* _IOSTAT_H */