aboutsummaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/test_stacktrace_map.c
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@netronome.com>2019-02-11 12:01:20 +0000
committerAlexei Starovoitov <ast@kernel.org>2019-02-11 20:31:38 -0800
commitbd4aed0ee73ca873bef3cb3ec746dd796f03df28 (patch)
tree1dcd4de735f8ca3dbf672dc5d48d064ea1dea5dc /tools/testing/selftests/bpf/test_stacktrace_map.c
parent4836b4637ef080c2764c44ee40ed354cdb991d79 (diff)
selftests: bpf: centre kernel bpf objects under new subdir "progs"
At the moment, all kernel bpf objects are listed under BPF_OBJ_FILES. Listing them manually sometimes causing patch conflict when people are adding new testcases simultaneously. It is better to centre all the related source files under a subdir "progs", then auto-generate the object file list. Suggested-by: Alexei Starovoitov <ast@kernel.org> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/test_stacktrace_map.c')
-rw-r--r--tools/testing/selftests/bpf/test_stacktrace_map.c75
1 files changed, 0 insertions, 75 deletions
diff --git a/tools/testing/selftests/bpf/test_stacktrace_map.c b/tools/testing/selftests/bpf/test_stacktrace_map.c
deleted file mode 100644
index af111af7ca1a..000000000000
--- a/tools/testing/selftests/bpf/test_stacktrace_map.c
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2018 Facebook
-
-#include <linux/bpf.h>
-#include "bpf_helpers.h"
-
-#ifndef PERF_MAX_STACK_DEPTH
-#define PERF_MAX_STACK_DEPTH 127
-#endif
-
-struct bpf_map_def SEC("maps") control_map = {
- .type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u32),
- .max_entries = 1,
-};
-
-struct bpf_map_def SEC("maps") stackid_hmap = {
- .type = BPF_MAP_TYPE_HASH,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u32),
- .max_entries = 16384,
-};
-
-struct bpf_map_def SEC("maps") stackmap = {
- .type = BPF_MAP_TYPE_STACK_TRACE,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u64) * PERF_MAX_STACK_DEPTH,
- .max_entries = 16384,
-};
-
-struct bpf_map_def SEC("maps") stack_amap = {
- .type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u64) * PERF_MAX_STACK_DEPTH,
- .max_entries = 16384,
-};
-
-/* taken from /sys/kernel/debug/tracing/events/sched/sched_switch/format */
-struct sched_switch_args {
- unsigned long long pad;
- char prev_comm[16];
- int prev_pid;
- int prev_prio;
- long long prev_state;
- char next_comm[16];
- int next_pid;
- int next_prio;
-};
-
-SEC("tracepoint/sched/sched_switch")
-int oncpu(struct sched_switch_args *ctx)
-{
- __u32 max_len = PERF_MAX_STACK_DEPTH * sizeof(__u64);
- __u32 key = 0, val = 0, *value_p;
- void *stack_p;
-
- value_p = bpf_map_lookup_elem(&control_map, &key);
- if (value_p && *value_p)
- return 0; /* skip if non-zero *value_p */
-
- /* The size of stackmap and stackid_hmap should be the same */
- key = bpf_get_stackid(ctx, &stackmap, 0);
- if ((int)key >= 0) {
- bpf_map_update_elem(&stackid_hmap, &key, &val, 0);
- stack_p = bpf_map_lookup_elem(&stack_amap, &key);
- if (stack_p)
- bpf_get_stack(ctx, stack_p, max_len, 0);
- }
-
- return 0;
-}
-
-char _license[] SEC("license") = "GPL";
-__u32 _version SEC("version") = 1; /* ignored by tracepoints, required by libbpf.a */