1
1
// SPDX-License-Identifier: GPL-2.0
2
2
#include <test_progs.h>
3
+ #include "stacktrace_map.skel.h"
3
4
4
5
void test_stacktrace_map (void )
5
6
{
7
+ struct stacktrace_map * skel ;
6
8
int control_map_fd , stackid_hmap_fd , stackmap_fd , stack_amap_fd ;
7
- const char * prog_name = "oncpu" ;
8
- int err , prog_fd , stack_trace_len ;
9
- const char * file = "./test_stacktrace_map.bpf.o" ;
9
+ int err , stack_trace_len ;
10
10
__u32 key , val , duration = 0 ;
11
- struct bpf_program * prog ;
12
- struct bpf_object * obj ;
13
- struct bpf_link * link ;
14
11
15
- err = bpf_prog_test_load ( file , BPF_PROG_TYPE_TRACEPOINT , & obj , & prog_fd );
16
- if (CHECK ( err , "prog_load" , "err %d errno %d\n" , err , errno ))
12
+ skel = stacktrace_map__open_and_load ( );
13
+ if (! ASSERT_OK_PTR ( skel , "skel_open_and_load" ))
17
14
return ;
18
15
19
- prog = bpf_object__find_program_by_name (obj , prog_name );
20
- if (CHECK (!prog , "find_prog" , "prog '%s' not found\n" , prog_name ))
21
- goto close_prog ;
22
-
23
- link = bpf_program__attach_tracepoint (prog , "sched" , "sched_switch" );
24
- if (!ASSERT_OK_PTR (link , "attach_tp" ))
25
- goto close_prog ;
26
-
27
- /* find map fds */
28
- control_map_fd = bpf_find_map (__func__ , obj , "control_map" );
29
- if (CHECK_FAIL (control_map_fd < 0 ))
30
- goto disable_pmu ;
31
-
32
- stackid_hmap_fd = bpf_find_map (__func__ , obj , "stackid_hmap" );
33
- if (CHECK_FAIL (stackid_hmap_fd < 0 ))
34
- goto disable_pmu ;
35
-
36
- stackmap_fd = bpf_find_map (__func__ , obj , "stackmap" );
37
- if (CHECK_FAIL (stackmap_fd < 0 ))
38
- goto disable_pmu ;
39
-
40
- stack_amap_fd = bpf_find_map (__func__ , obj , "stack_amap" );
41
- if (CHECK_FAIL (stack_amap_fd < 0 ))
42
- goto disable_pmu ;
16
+ control_map_fd = bpf_map__fd (skel -> maps .control_map );
17
+ stackid_hmap_fd = bpf_map__fd (skel -> maps .stackid_hmap );
18
+ stackmap_fd = bpf_map__fd (skel -> maps .stackmap );
19
+ stack_amap_fd = bpf_map__fd (skel -> maps .stack_amap );
43
20
21
+ err = stacktrace_map__attach (skel );
22
+ if (!ASSERT_OK (err , "skel_attach" ))
23
+ goto out ;
44
24
/* give some time for bpf program run */
45
25
sleep (1 );
46
26
@@ -55,21 +35,19 @@ void test_stacktrace_map(void)
55
35
err = compare_map_keys (stackid_hmap_fd , stackmap_fd );
56
36
if (CHECK (err , "compare_map_keys stackid_hmap vs. stackmap" ,
57
37
"err %d errno %d\n" , err , errno ))
58
- goto disable_pmu ;
38
+ goto out ;
59
39
60
40
err = compare_map_keys (stackmap_fd , stackid_hmap_fd );
61
41
if (CHECK (err , "compare_map_keys stackmap vs. stackid_hmap" ,
62
42
"err %d errno %d\n" , err , errno ))
63
- goto disable_pmu ;
43
+ goto out ;
64
44
65
45
stack_trace_len = PERF_MAX_STACK_DEPTH * sizeof (__u64 );
66
46
err = compare_stack_ips (stackmap_fd , stack_amap_fd , stack_trace_len );
67
47
if (CHECK (err , "compare_stack_ips stackmap vs. stack_amap" ,
68
48
"err %d errno %d\n" , err , errno ))
69
- goto disable_pmu ;
49
+ goto out ;
70
50
71
- disable_pmu :
72
- bpf_link__destroy (link );
73
- close_prog :
74
- bpf_object__close (obj );
51
+ out :
52
+ stacktrace_map__destroy (skel );
75
53
}
0 commit comments