Message ID | 20240718115153.1967859-1-yikai.lin@vivo.com (mailing list archive) |
---|---|
Headers | show |
Series | add bpf_file_d_path helper and selftests | expand |
On 7/18/24 4:51 AM, Lin Yikai wrote: > v1: > - patch 2: > - [1/2] add bpf_file_d_path helper > - [2/2] add selftest to it > > Hi, we are looking to add the "bpf_file_d_path" helper, > used to retrieve the path from a struct file object. > bpf_file_d_path(void *file, char *dst, u32 size); > > It's worth noting that the "file" parameter is defined as "void*" type. > > * Our problems * > Previously, we encountered issues > on some user-space operating systems(OS): > > 1.Difficulty using vmlinux.h > (1) The OS lacks support for bpftool. > We can not use: > "bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h". > Bpftool need a separate complex cross-compilation environment to build. > > (2) Many duplicate definitions between OS and vmlinux.h. > > (3) The vmlinux.h size is large (2.8MB on arm64/Android), > causing increased ebpf prog size and user space consumption. The compiled bpf prog size is increased by 2.8MB because it included vmlinux.h? > > 2.The "struct file" has many internal variables and definitions, > and maybe change along with Linux version iterations, > making it hard to copy it to OS. If vmlinux.h is not convenience in your use case, you can try to define "struct file" with __attribute__((preserve_access_index)) and the libbpf will adjust the bpf prog against the running kernel. There was a discussion a year ago about bpf helpers freeze. No new helper can be added since then. The same goes for this one. pw-bot: cr