Re: [PATCHv2 perf/core 0/7] Libbpf improvements

2017-01-24 Thread Joe Stringer
On 24 January 2017 at 08:12, Arnaldo Carvalho de Melo  wrote:
> Em Sun, Jan 22, 2017 at 05:11:21PM -0800, Joe Stringer escreveu:
>> Patch 1 fixes an issue when using drastically different BPF map definitions
>> inside ELFs from a client using libbpf, vs the map definition libbpf uses.
>>
>> Patches 2-4 add some simple, useful helper functions for setting prog type
>> and retrieving libbpf errors without depending on kernel headers from
>> userspace programs.
>>
>> Patches 5-7 add a new pinning functionality for maps, programs, and objects.
>> Library users may call bpf_map__pin(map, path) or bpf_program__pin(prog, 
>> path)
>> to pin maps and programs separately, or use bpf_object__pin(obj, path) to
>> pin all maps and programs from the BPF object to the path. The map and 
>> program
>> variations require a full path where it will be pinned in the filesystem,
>> and the object variation will create directories "maps/" and "progs/" under
>> the specified path, then mount each map and program under those 
>> subdirectories.
>
> Merged the ones either acked by Wang or adjusted by you to address
> Wang's remarks, the last ones introducing those __pin() methods, please
> provide users together with those APIs, preferably entries for 'perf
> test',

OK great, I'll rebase the last 3 patches and add a test to perf test
for pinning.


Re: [PATCHv2 perf/core 0/7] Libbpf improvements

2017-01-24 Thread Arnaldo Carvalho de Melo
Em Sun, Jan 22, 2017 at 05:11:21PM -0800, Joe Stringer escreveu:
> Patch 1 fixes an issue when using drastically different BPF map definitions
> inside ELFs from a client using libbpf, vs the map definition libbpf uses.
> 
> Patches 2-4 add some simple, useful helper functions for setting prog type
> and retrieving libbpf errors without depending on kernel headers from
> userspace programs.
> 
> Patches 5-7 add a new pinning functionality for maps, programs, and objects.
> Library users may call bpf_map__pin(map, path) or bpf_program__pin(prog, path)
> to pin maps and programs separately, or use bpf_object__pin(obj, path) to
> pin all maps and programs from the BPF object to the path. The map and program
> variations require a full path where it will be pinned in the filesystem,
> and the object variation will create directories "maps/" and "progs/" under
> the specified path, then mount each map and program under those 
> subdirectories.

Merged the ones either acked by Wang or adjusted by you to address
Wang's remarks, the last ones introducing those __pin() methods, please
provide users together with those APIs, preferably entries for 'perf
test',

- Arnaldo
 
> ---
> v1: Initial post.
> v2: Wang Nan provided improvements to patch 1.
> Dropped patch 2 from v1.
> Added acks for acked patches.
> Split the bpf_obj__pin() to also provide map / program pinning APIs.
> Allow users to provide full filesystem path (don't autodetect/mount 
> BPFFS).
> 
> Joe Stringer (7):
>   tools lib bpf: Fix map offsets in relocation
>   tools lib bpf: Define prog_type fns with macro
>   tools lib bpf: Add set/is helpers for all prog types
>   tools lib bpf: Add libbpf_get_error()
>   tools lib bpf: Add bpf_program__pin()
>   tools lib bpf: Add bpf_map__pin()
>   tools lib bpf: Add bpf_object__pin()
> 
>  tools/lib/bpf/libbpf.c  | 240 
> ++--
>  tools/lib/bpf/libbpf.h  |  17 +++-
>  tools/perf/tests/llvm.c |   2 +-
>  3 files changed, 229 insertions(+), 30 deletions(-)
> 
> -- 
> 2.11.0