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 */
48