File Index
Files and directories
Sign in
FILE

test_perf_branches.c

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/bpf/progs/test_perf_branches.c C
 1// SPDX-License-Identifier: GPL-2.0
 2// Copyright (c) 2019 Facebook
 3
 4#include <stddef.h>
 5#include <linux/ptrace.h>
 6#include <linux/bpf.h>
 7#include <bpf/bpf_helpers.h>
 8#include <bpf/bpf_tracing.h>
 9
10int valid = 0;
11int run_cnt = 0;
12int required_size_out = 0;
13int written_stack_out = 0;
14int written_global_out = 0;
15
16struct {
17	__u64 _a;
18	__u64 _b;
19	__u64 _c;
20} fpbe[30] = {0};
21
22SEC("perf_event")
23int perf_branches(void *ctx)
24{
25	__u64 entries[4 * 3] = {0};
26	int required_size, written_stack, written_global;
27
28	++run_cnt;
29
30	/* write to stack */
31	written_stack = bpf_read_branch_records(ctx, entries, sizeof(entries), 0);
32	/* ignore spurious events */
33	if (!written_stack)
34		return 1;
35
36	/* get required size */
37	required_size = bpf_read_branch_records(ctx, NULL, 0,
38						BPF_F_GET_BRANCH_RECORDS_SIZE);
39
40	written_global = bpf_read_branch_records(ctx, fpbe, sizeof(fpbe), 0);
41	/* ignore spurious events */
42	if (!written_global)
43		return 1;
44
45	required_size_out = required_size;
46	written_stack_out = written_stack;
47	written_global_out = written_global;
48	valid = 1;
49
50	return 0;
51}
52
53char _license[] SEC("license") = "GPL";
~/ Read-only file preview.