hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// SPDX-License-Identifier: GPL-2.0
#ifndef __PERF_EVSEL_CONFIG_H
#define __PERF_EVSEL_CONFIG_H 1
 
#include <linux/types.h>
#include <stdbool.h>
 
/*
 * The 'struct evsel_config_term' is used to pass event
 * specific configuration data to evsel__config routine.
 * It is allocated within event parsing and attached to
 * evsel::config_terms list head.
*/
enum evsel_term_type {
   EVSEL__CONFIG_TERM_PERIOD,
   EVSEL__CONFIG_TERM_FREQ,
   EVSEL__CONFIG_TERM_TIME,
   EVSEL__CONFIG_TERM_CALLGRAPH,
   EVSEL__CONFIG_TERM_STACK_USER,
   EVSEL__CONFIG_TERM_INHERIT,
   EVSEL__CONFIG_TERM_MAX_STACK,
   EVSEL__CONFIG_TERM_MAX_EVENTS,
   EVSEL__CONFIG_TERM_OVERWRITE,
   EVSEL__CONFIG_TERM_DRV_CFG,
   EVSEL__CONFIG_TERM_BRANCH,
   EVSEL__CONFIG_TERM_PERCORE,
   EVSEL__CONFIG_TERM_AUX_OUTPUT,
   EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE,
   EVSEL__CONFIG_TERM_CFG_CHG,
};
 
struct evsel_config_term {
   struct list_head      list;
   enum evsel_term_type  type;
   bool              free_str;
   union {
       u64          period;
       u64          freq;
       bool          time;
       u64          stack_user;
       int          max_stack;
       bool          inherit;
       bool          overwrite;
       unsigned long max_events;
       bool          percore;
       bool          aux_output;
       u32          aux_sample_size;
       u64          cfg_chg;
       char          *str;
   } val;
   bool weak;
};
 
struct evsel;
 
struct evsel_config_term *__evsel__get_config_term(struct evsel *evsel, enum evsel_term_type type);
 
#define evsel__get_config_term(evsel, type) \
   __evsel__get_config_term(evsel, EVSEL__CONFIG_TERM_ ## type)
 
#endif // __PERF_EVSEL_CONFIG_H