• A
    bpf: Introduce ARG_PTR_TO_{INT,LONG} arg types · 57c3bb72
    Andrey Ignatov 提交于
    Currently the way to pass result from BPF helper to BPF program is to
    provide memory area defined by pointer and size: func(void *, size_t).
    
    It works great for generic use-case, but for simple types, such as int,
    it's overkill and consumes two arguments when it could use just one.
    
    Introduce new argument types ARG_PTR_TO_INT and ARG_PTR_TO_LONG to be
    able to pass result from helper to program via pointer to int and long
    correspondingly: func(int *) or func(long *).
    
    New argument types are similar to ARG_PTR_TO_MEM with the following
    differences:
    * they don't require corresponding ARG_CONST_SIZE argument, predefined
      access sizes are used instead (32bit for int, 64bit for long);
    * it's possible to use more than one such an argument in a helper;
    * provided pointers have to be aligned.
    
    It's easy to introduce similar ARG_PTR_TO_CHAR and ARG_PTR_TO_SHORT
    argument types. It's not done due to lack of use-case though.
    Signed-off-by: NAndrey Ignatov <rdna@fb.com>
    Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
    57c3bb72
bpf.h 32.8 KB