2022-12-09 11:07:24 -08:00
|
|
|
// 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
|
|
|
|
|
2024-02-27 21:33:35 -08:00
|
|
|
struct tstamp_data {
|
|
|
|
u64 timestamp;
|
|
|
|
u64 lock;
|
|
|
|
u32 flags;
|
2024-08-12 10:25:33 -07:00
|
|
|
s32 stack_id;
|
2024-02-27 21:33:35 -08:00
|
|
|
};
|
|
|
|
|
2022-12-09 11:07:24 -08:00
|
|
|
struct contention_key {
|
2024-08-12 10:25:33 -07:00
|
|
|
s32 stack_id;
|
2023-02-02 18:13:24 -08:00
|
|
|
u32 pid;
|
2023-09-06 10:49:01 -07:00
|
|
|
u64 lock_addr_or_cgroup;
|
2022-12-09 11:07:24 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
#define TASK_COMM_LEN 16
|
|
|
|
|
|
|
|
struct contention_task_data {
|
|
|
|
char comm[TASK_COMM_LEN];
|
|
|
|
};
|
|
|
|
|
2023-04-06 14:06:07 -07:00
|
|
|
/* default buffer size */
|
|
|
|
#define MAX_ENTRIES 16384
|
|
|
|
|
2023-03-13 13:48:22 -07:00
|
|
|
/*
|
|
|
|
* 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).
|
|
|
|
*/
|
2023-03-13 13:48:23 -07:00
|
|
|
#define LCD_F_MMAP_LOCK (1U << 31)
|
|
|
|
#define LCD_F_SIGHAND_LOCK (1U << 30)
|
2023-03-13 13:48:22 -07:00
|
|
|
|
2023-03-13 13:48:25 -07:00
|
|
|
#define LCB_F_MAX_FLAGS (1U << 7)
|
|
|
|
|
2022-12-09 11:07:24 -08:00
|
|
|
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,
|
2023-09-06 10:49:01 -07:00
|
|
|
LOCK_AGGR_CGROUP,
|
2022-12-09 11:07:24 -08:00
|
|
|
};
|
|
|
|
|
2023-03-13 13:48:24 -07:00
|
|
|
enum lock_class_sym {
|
|
|
|
LOCK_CLASS_NONE,
|
|
|
|
LOCK_CLASS_RQLOCK,
|
|
|
|
};
|
|
|
|
|
2022-12-09 11:07:24 -08:00
|
|
|
#endif /* UTIL_BPF_SKEL_LOCK_DATA_H */
|