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

Wangnan (F)
2015-12-14T03:28:18Z

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>

Thank you.