| 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 *, void *); |
| 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, void *arg); |
| 46 | |
| 47 | #endif /* _IOSTAT_H */ |