Skip to content

Commit

Permalink
perf bpf_skel: Do not use typedef to avoid error on old clang
Browse files Browse the repository at this point in the history
[ Upstream commit 5a89753 ]

When building bpf_skel with clang-10, typedef causes confusions like:

  libbpf: map 'prev_readings': unexpected def kind var.

Fix this by removing the typedef.

Fixes: 7fac83a ("perf stat: Introduce 'bperf' to share hardware PMCs with BPF")
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lore.kernel.org/lkml/BEF5C312-4331-4A60-AEC0-AD7617CB2BC4@fb.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
liu-song-6 authored and gregkh committed Dec 17, 2021
1 parent 134151c commit cff7282
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 20 deletions.
14 changes: 0 additions & 14 deletions tools/perf/util/bpf_skel/bperf.h

This file was deleted.

16 changes: 13 additions & 3 deletions tools/perf/util/bpf_skel/bperf_follower.bpf.c
Expand Up @@ -4,11 +4,21 @@
#include <linux/perf_event.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
#include "bperf.h"
#include "bperf_u.h"

reading_map diff_readings SEC(".maps");
reading_map accum_readings SEC(".maps");
struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__uint(key_size, sizeof(__u32));
__uint(value_size, sizeof(struct bpf_perf_event_value));
__uint(max_entries, 1);
} diff_readings SEC(".maps");

struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__uint(key_size, sizeof(__u32));
__uint(value_size, sizeof(struct bpf_perf_event_value));
__uint(max_entries, 1);
} accum_readings SEC(".maps");

struct {
__uint(type, BPF_MAP_TYPE_HASH);
Expand Down
16 changes: 13 additions & 3 deletions tools/perf/util/bpf_skel/bperf_leader.bpf.c
Expand Up @@ -4,7 +4,6 @@
#include <linux/perf_event.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
#include "bperf.h"

struct {
__uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
Expand All @@ -13,8 +12,19 @@ struct {
__uint(map_flags, BPF_F_PRESERVE_ELEMS);
} events SEC(".maps");

reading_map prev_readings SEC(".maps");
reading_map diff_readings SEC(".maps");
struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__uint(key_size, sizeof(__u32));
__uint(value_size, sizeof(struct bpf_perf_event_value));
__uint(max_entries, 1);
} prev_readings SEC(".maps");

struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__uint(key_size, sizeof(__u32));
__uint(value_size, sizeof(struct bpf_perf_event_value));
__uint(max_entries, 1);
} diff_readings SEC(".maps");

SEC("raw_tp/sched_switch")
int BPF_PROG(on_switch)
Expand Down

0 comments on commit cff7282

Please sign in to comment.