// 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;
	s32 stack_id;
};

struct contention_key {
	s32 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 */
