Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf bpf: Add linux/socket.h to the headers accessible to bpf proggies

So that we don't have to define sockaddr_storage in the
augmented_syscalls.c bpf example when hooking into syscalls needing it,
idea is to mimic the system headers. Eventually we probably need to have
sys/socket.h, etc. Start by having at least linux/socket.h.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-yhzarcvsjue8pgpvkjhqgioc@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+27 -1
+3 -1
tools/perf/Makefile.perf
··· 779 779 ifndef NO_LIBBPF 780 780 $(call QUIET_INSTALL, bpf-headers) \ 781 781 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf'; \ 782 - $(INSTALL) include/bpf/*.h -t '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf' 782 + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf/linux'; \ 783 + $(INSTALL) include/bpf/*.h -t '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf'; \ 784 + $(INSTALL) include/bpf/linux/*.h -t '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf/linux' 783 785 $(call QUIET_INSTALL, bpf-examples) \ 784 786 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perf_examples_instdir_SQ)/bpf'; \ 785 787 $(INSTALL) examples/bpf/*.c -t '$(DESTDIR_SQ)$(perf_examples_instdir_SQ)/bpf'
+24
tools/perf/include/bpf/linux/socket.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 + #ifndef _UAPI_LINUX_SOCKET_H 3 + #define _UAPI_LINUX_SOCKET_H 4 + 5 + /* 6 + * Desired design of maximum size and alignment (see RFC2553) 7 + */ 8 + #define _K_SS_MAXSIZE 128 /* Implementation specific max size */ 9 + #define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *)) 10 + /* Implementation specific desired alignment */ 11 + 12 + typedef unsigned short __kernel_sa_family_t; 13 + 14 + struct __kernel_sockaddr_storage { 15 + __kernel_sa_family_t ss_family; /* address family */ 16 + /* Following field(s) are implementation specific */ 17 + char __data[_K_SS_MAXSIZE - sizeof(unsigned short)]; 18 + /* space to achieve desired size, */ 19 + /* _SS_MAXSIZE value minus size of ss_family */ 20 + } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ 21 + 22 + #define sockaddr_storage __kernel_sockaddr_storage 23 + 24 + #endif /* _UAPI_LINUX_SOCKET_H */