// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) /* Data structures shared between BPF and tools. */ #ifndef UTIL_BPF_SKEL_LOCK_DATA_H #define UTIL_BPF_SKEL_LOCK_DATA_H struct tstamp_data { u64 timestamp; u64 lock; u32 flags; u32 stack_id; }; struct contention_key { u32 stack_id; u32 pid; u64 lock_addr_or_cgroup; }; #define TASK_COMM_LEN 16 struct contention_task_data { char comm[TASK_COMM_LEN]; }; /* default buffer size */ #define MAX_ENTRIES 16384 /* * Upper bits of the flags in the contention_data are used to identify * some well-known locks which do not have symbols (non-global locks). */ #define LCD_F_MMAP_LOCK (1U << 31) #define LCD_F_SIGHAND_LOCK (1U << 30) #define LCB_F_MAX_FLAGS (1U << 7) struct contention_data { u64 total_time; u64 min_time; u64 max_time; u32 count; u32 flags; }; enum lock_aggr_mode { LOCK_AGGR_ADDR = 0, LOCK_AGGR_TASK, LOCK_AGGR_CALLER, LOCK_AGGR_CGROUP, }; enum lock_class_sym { LOCK_CLASS_NONE, LOCK_CLASS_RQLOCK, }; #endif /* UTIL_BPF_SKEL_LOCK_DATA_H */