FILE
lock_data.h
File preview with syntax highlighting.
linux-6.19.14/tools/perf/util/bpf_skel/lock_data.h
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 owner_tracing_data { 7 u32 pid; // Who has the lock. 8 u32 count; // How many waiters for this lock. 9 u64 timestamp; // The time while the owner acquires lock and contention is going on. 10 s32 stack_id; // Identifier for `owner_stat`, which stores as value in `owner_stacks` 11}; 12 13struct tstamp_data { 14 u64 timestamp; 15 u64 lock; 16 u32 flags; 17 s32 stack_id; 18}; 19 20struct contention_key { 21 s32 stack_id; 22 u32 pid; 23 u64 lock_addr_or_cgroup; 24}; 25 26#define TASK_COMM_LEN 16 27 28struct contention_task_data { 29 char comm[TASK_COMM_LEN]; 30}; 31 32/* default buffer size */ 33#define MAX_ENTRIES 16384 34 35/* 36 * Upper bits of the flags in the contention_data are used to identify 37 * some well-known locks which do not have symbols (non-global locks). 38 */ 39#define LCD_F_MMAP_LOCK (1U << 31) 40#define LCD_F_SIGHAND_LOCK (1U << 30) 41 42#define LCB_F_SLAB_ID_SHIFT 16 43#define LCB_F_SLAB_ID_START (1U << 16) 44#define LCB_F_SLAB_ID_END (1U << 26) 45#define LCB_F_SLAB_ID_MASK 0x03FF0000U 46 47#define LCB_F_TYPE_MAX (1U << 7) 48#define LCB_F_TYPE_MASK 0x0000007FU 49 50#define SLAB_NAME_MAX 28 51 52struct contention_data { 53 u64 total_time; 54 u64 min_time; 55 u64 max_time; 56 u32 count; 57 u32 flags; 58}; 59 60enum lock_aggr_mode { 61 LOCK_AGGR_ADDR = 0, 62 LOCK_AGGR_TASK, 63 LOCK_AGGR_CALLER, 64 LOCK_AGGR_CGROUP, 65}; 66 67enum lock_class_sym { 68 LOCK_CLASS_NONE, 69 LOCK_CLASS_RQLOCK, 70 LOCK_CLASS_ZONE_LOCK, 71}; 72 73struct slab_cache_data { 74 u32 id; 75 char name[SLAB_NAME_MAX]; 76}; 77 78#endif /* UTIL_BPF_SKEL_LOCK_DATA_H */
~/
Read-only file preview.