lock_stat
lock_stat);
ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_stat);
ctrl_lock_status(struct drx_demod_instance *demod, enum drx_lock_status *lock_stat)
if ((demod == NULL) || (lock_stat == NULL))
*lock_stat = DRX_NOT_LOCKED;
*lock_stat = DRX_NOT_LOCKED;
*lock_stat = DRXJ_DEMOD_LOCK;
*lock_stat = DRX_LOCKED;
*lock_stat = DRX_NEVER_LOCK;
if (!lock_stat)
if (unlikely(!lock_stat || !lockdep_enabled()))
if (unlikely(!lock_stat || !lockdep_enabled()))
static int lock_stat = 1;
module_param(lock_stat, int, 0644);
.data = &lock_stat,
struct lock_stat *ls;
struct lock_stat *st;
static int compare_maps(struct lock_stat *a, struct lock_stat *b)
struct lock_stat *st;
struct lock_stat *st;
struct lock_stat *st;
static int lock_stat_key_ ## member(struct lock_stat *one, \
struct lock_stat *two) \
static void print_lock_stat_stdio(struct lock_contention *con, struct lock_stat *st)
static void print_lock_stat_csv(struct lock_contention *con, struct lock_stat *st,
static int lock_stat_key_wait_time_min(struct lock_stat *one,
static void print_lock_stat(struct lock_contention *con, struct lock_stat *st)
struct lock_stat *two)
struct lock_stat *st;
int (*key)(struct lock_stat*, struct lock_stat*);
void (*print)(struct lock_key*, struct lock_stat*);
struct lock_stat *ls) \
struct lock_stat *ls) \
struct lock_stat *ls)
static int (*compare)(struct lock_stat *, struct lock_stat *);
static void combine_lock_stats(struct lock_stat *st)
struct lock_stat *p;
p = container_of(*rb, struct lock_stat, rb);
static void insert_to(struct rb_root *rr, struct lock_stat *st,
int (*bigger)(struct lock_stat *, struct lock_stat *))
struct lock_stat *p;
p = container_of(*rb, struct lock_stat, rb);
static inline void insert_to_result(struct lock_stat *st,
int (*bigger)(struct lock_stat *,
struct lock_stat *))
static inline struct lock_stat *pop_from(struct rb_root *rr)
return container_of(node, struct lock_stat, rb);
static struct lock_stat *pop_from_result(void)
struct lock_stat *ls;
struct lock_stat *ls;
struct lock_stat *ls;
struct lock_stat *ls;
struct lock_stat *ls;
bpf_map__set_max_entries(skel->maps.lock_stat, con->map_nr_entries);
stat_fd = bpf_map__fd(skel->maps.lock_stat);
struct lock_stat *pop_owner_stack_trace(struct lock_contention *con)
struct lock_stat *st = NULL;
st = zalloc(sizeof(struct lock_stat));
struct lock_stat *st = NULL;
fd = bpf_map__fd(skel->maps.lock_stat);
data = bpf_map_lookup_elem(&lock_stat, &key);
err = bpf_map_update_elem(&lock_stat, &key, &first, BPF_NOEXIST);
data = bpf_map_lookup_elem(&lock_stat, &key);
} lock_stat SEC(".maps");
struct lock_stat *lock_stat_find(u64 addr)
struct lock_stat *ret;
struct lock_stat *lock_stat_findnew(u64 addr, const char *name, int flags)
struct lock_stat *ret, *new;
new = zalloc(sizeof(struct lock_stat));
struct lock_stat *lock_stat_find(u64 addr);
struct lock_stat *lock_stat_findnew(u64 addr, const char *name, int flags);
struct lock_stat *pop_owner_stack_trace(struct lock_contention *con);
static inline struct lock_stat *pop_owner_stack_trace(struct lock_contention *con __maybe_unused)