#ifndef PERF_UTIL_BPF_SKEL_SAMPLE_FILTER_H
#define PERF_UTIL_BPF_SKEL_SAMPLE_FILTER_H
#define MAX_FILTERS 64
#define MAX_IDX_HASH (16 * 1024)
#define MAX_EVT_HASH (1024 * 1024)
enum perf_bpf_filter_op {
PBF_OP_EQ,
PBF_OP_NEQ,
PBF_OP_GT,
PBF_OP_GE,
PBF_OP_LT,
PBF_OP_LE,
PBF_OP_AND,
PBF_OP_GROUP_BEGIN,
PBF_OP_GROUP_END,
PBF_OP_DONE,
};
enum perf_bpf_filter_term {
PBF_TERM_NONE = 0,
PBF_TERM_SAMPLE_START = PBF_TERM_NONE + 1,
PBF_TERM_IP = PBF_TERM_SAMPLE_START + 0,
PBF_TERM_TID = PBF_TERM_SAMPLE_START + 1,
PBF_TERM_TIME = PBF_TERM_SAMPLE_START + 2,
PBF_TERM_ADDR = PBF_TERM_SAMPLE_START + 3,
__PBF_UNUSED_TERM4 = PBF_TERM_SAMPLE_START + 4,
__PBF_UNUSED_TERM5 = PBF_TERM_SAMPLE_START + 5,
PBF_TERM_ID = PBF_TERM_SAMPLE_START + 6,
PBF_TERM_CPU = PBF_TERM_SAMPLE_START + 7,
PBF_TERM_PERIOD = PBF_TERM_SAMPLE_START + 8,
__PBF_UNUSED_TERM9 = PBF_TERM_SAMPLE_START + 9,
__PBF_UNUSED_TERM10 = PBF_TERM_SAMPLE_START + 10,
__PBF_UNUSED_TERM11 = PBF_TERM_SAMPLE_START + 11,
__PBF_UNUSED_TERM12 = PBF_TERM_SAMPLE_START + 12,
__PBF_UNUSED_TERM13 = PBF_TERM_SAMPLE_START + 13,
PBF_TERM_WEIGHT = PBF_TERM_SAMPLE_START + 14,
PBF_TERM_DATA_SRC = PBF_TERM_SAMPLE_START + 15,
__PBF_UNUSED_TERM16 = PBF_TERM_SAMPLE_START + 16,
PBF_TERM_TRANSACTION = PBF_TERM_SAMPLE_START + 17,
__PBF_UNUSED_TERM18 = PBF_TERM_SAMPLE_START + 18,
PBF_TERM_PHYS_ADDR = PBF_TERM_SAMPLE_START + 19,
__PBF_UNUSED_TERM20 = PBF_TERM_SAMPLE_START + 20,
PBF_TERM_CGROUP = PBF_TERM_SAMPLE_START + 21,
PBF_TERM_DATA_PAGE_SIZE = PBF_TERM_SAMPLE_START + 22,
PBF_TERM_CODE_PAGE_SIZE = PBF_TERM_SAMPLE_START + 23,
PBF_TERM_WEIGHT_STRUCT = PBF_TERM_SAMPLE_START + 24,
PBF_TERM_SAMPLE_END = PBF_TERM_WEIGHT_STRUCT,
PBF_TERM_UID,
PBF_TERM_GID,
};
struct perf_bpf_filter_entry {
enum perf_bpf_filter_op op;
__u32 part;
enum perf_bpf_filter_term term;
__u64 value;
};
struct idx_hash_key {
__u64 evt_id;
__u32 tgid;
__u32 reserved;
};
#endif