Re: [PATCH v4 09/16] perf tools: Enable indices setting syntax for BPF maps

Alexei Starovoitov
2015-12-14T04:28:07Z

On Mon, Dec 14, 2015 at 11:27:36AM +0800, Wangnan (F) wrote:
>
>
> On 2015/12/12 2:21, Alexei Starovoitov wrote:
> >On Fri, Dec 11, 2015 at 08:39:35PM +0800, pi3orama wrote:
> >>>static u64 (*bpf_ktime_get_ns)(void) =
> >>> (void *)5;
> >>>static int (*bpf_trace_printk)(const char *fmt, int fmt_size, ...) =
> >>> (void *)6;
> >>>static int (*bpf_get_smp_processor_id)(void) =
> >>> (void *)8;
> >>>static int (*bpf_perf_event_output)(void *, struct bpf_map_def *, int,
> >>>void *, unsigned long) =
> >>> (void *)23;
> >>>
> >>>Where can I get this magical mistery table? Could this be hidden away in
> >>>some .h file automagically included in bpf scriptlets so that n00bies
> >>>like me don't have to be wtf'ing?
> >>>
> >>They are function numbers defined in bpf.h and bpf-common.h, but they are Linux
> >>headers. Directly include them causes many error for llvm. Also, the function
> >>prototypes are BPF specific and can't included in Linux source. We should have
> >>a place holds those indices and prototypes together.
> >wait, what kind of errors?
> >they are in uapi, so gets installed into /usr/include eventually
> >and I haven't seen any erros either with gcc or clang.
> >
> Sorry. I saw error because I use
>
> #include <linux/bpf.h>
>
> It is okay if I use
>
> #include <uapi/linux/bpf.h>

then let's use that instead of copy-paste. thanks