1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2/* Data structures shared between BPF and tools. */
3#ifndef UTIL_BPF_SKEL_LOCK_DATA_H
4#define UTIL_BPF_SKEL_LOCK_DATA_H
5
6struct tstamp_data {
7	u64 timestamp;
8	u64 lock;
9	u32 flags;
10	u32 stack_id;
11};
12
13struct contention_key {
14	u32 stack_id;
15	u32 pid;
16	u64 lock_addr_or_cgroup;
17};
18
19#define TASK_COMM_LEN  16
20
21struct contention_task_data {
22	char comm[TASK_COMM_LEN];
23};
24
25/* default buffer size */
26#define MAX_ENTRIES  16384
27
28/*
29 * Upper bits of the flags in the contention_data are used to identify
30 * some well-known locks which do not have symbols (non-global locks).
31 */
32#define LCD_F_MMAP_LOCK		(1U << 31)
33#define LCD_F_SIGHAND_LOCK	(1U << 30)
34
35#define LCB_F_MAX_FLAGS		(1U << 7)
36
37struct contention_data {
38	u64 total_time;
39	u64 min_time;
40	u64 max_time;
41	u32 count;
42	u32 flags;
43};
44
45enum lock_aggr_mode {
46	LOCK_AGGR_ADDR = 0,
47	LOCK_AGGR_TASK,
48	LOCK_AGGR_CALLER,
49	LOCK_AGGR_CGROUP,
50};
51
52enum lock_class_sym {
53	LOCK_CLASS_NONE,
54	LOCK_CLASS_RQLOCK,
55};
56
57#endif /* UTIL_BPF_SKEL_LOCK_DATA_H */
58