Lines Matching defs:con

22 int lock_contention_prepare(struct lock_contention *con)
26 struct evlist *evlist = con->evlist;
27 struct target *target = con->target;
35 bpf_map__set_value_size(skel->maps.stacks, con->max_stack * sizeof(u64));
36 bpf_map__set_max_entries(skel->maps.lock_stat, con->map_nr_entries);
37 bpf_map__set_max_entries(skel->maps.tstamp, con->map_nr_entries);
39 if (con->aggr_mode == LOCK_AGGR_TASK)
40 bpf_map__set_max_entries(skel->maps.task_data, con->map_nr_entries);
44 if (con->save_callstack)
45 bpf_map__set_max_entries(skel->maps.stacks, con->map_nr_entries);
53 if (con->filters->nr_types)
54 ntypes = con->filters->nr_types;
55 if (con->filters->nr_cgrps)
56 ncgrps = con->filters->nr_cgrps;
59 if (con->filters->nr_syms) {
64 for (i = 0; i < con->filters->nr_syms; i++) {
65 sym = machine__find_kernel_symbol_by_name(con->machine,
66 con->filters->syms[i],
70 con->filters->syms[i]);
74 addrs = realloc(con->filters->addrs,
75 (con->filters->nr_addrs + 1) * sizeof(*addrs));
81 addrs[con->filters->nr_addrs++] = map__unmap_ip(kmap, sym->start);
82 con->filters->addrs = addrs;
84 naddrs = con->filters->nr_addrs;
133 if (con->filters->nr_types) {
139 for (i = 0; i < con->filters->nr_types; i++)
140 bpf_map_update_elem(fd, &con->filters->types[i], &val, BPF_ANY);
143 if (con->filters->nr_addrs) {
149 for (i = 0; i < con->filters->nr_addrs; i++)
150 bpf_map_update_elem(fd, &con->filters->addrs[i], &val, BPF_ANY);
153 if (con->filters->nr_cgrps) {
159 for (i = 0; i < con->filters->nr_cgrps; i++)
160 bpf_map_update_elem(fd, &con->filters->cgrps[i], &val, BPF_ANY);
164 skel->bss->stack_skip = con->stack_skip;
165 skel->bss->aggr_mode = con->aggr_mode;
166 skel->bss->needs_callstack = con->save_callstack;
167 skel->bss->lock_owner = con->owner;
169 if (con->aggr_mode == LOCK_AGGR_CGROUP) {
173 read_all_cgroups(&con->cgroups);
244 static void account_end_timestamp(struct lock_contention *con)
250 enum lock_aggr_mode aggr_mode = con->aggr_mode;
262 if (aggr_mode == LOCK_AGGR_TASK && con->owner)
312 static const char *lock_contention_get_name(struct lock_contention *con,
322 struct machine *machine = con->machine;
324 if (con->aggr_mode == LOCK_AGGR_TASK) {
342 if (con->aggr_mode == LOCK_AGGR_ADDR) {
365 if (con->aggr_mode == LOCK_AGGR_CGROUP) {
367 struct cgroup *cgrp = __cgroup__find(&con->cgroups, cgrp_id);
378 idx < con->max_stack - 1)
400 int lock_contention_read(struct lock_contention *con)
406 struct machine *machine = con->machine;
408 size_t stack_size = con->max_stack * sizeof(*stack_trace);
413 con->fails.task = skel->bss->task_fail;
414 con->fails.stack = skel->bss->stack_fail;
415 con->fails.time = skel->bss->time_fail;
416 con->fails.data = skel->bss->data_fail;
422 account_end_timestamp(con);
424 if (con->aggr_mode == LOCK_AGGR_TASK) {
431 if (con->aggr_mode == LOCK_AGGR_ADDR) {
452 if (con->save_callstack) {
456 con->nr_filtered += data.count;
461 switch (con->aggr_mode) {
490 name = lock_contention_get_name(con, &key, stack_trace, data.flags);
503 if (con->aggr_mode == LOCK_AGGR_CALLER && verbose > 0) {
521 int lock_contention_finish(struct lock_contention *con)
528 while (!RB_EMPTY_ROOT(&con->cgroups)) {
529 struct rb_node *node = rb_first(&con->cgroups);
532 rb_erase(node, &con->cgroups);