|  | // SPDX-License-Identifier: GPL-2.0 | 
|  | /* | 
|  | * Hook into 'openat' syscall entry tracepoint | 
|  | * | 
|  | * Test it with: | 
|  | * | 
|  | * perf trace -e tools/perf/examples/bpf/sys_enter_openat.c cat /etc/passwd > /dev/null | 
|  | * | 
|  | * It'll catch some openat syscalls related to the dynamic linked and | 
|  | * the last one should be the one for '/etc/passwd'. | 
|  | * | 
|  | * The syscall_enter_openat_args can be used to get the syscall fields | 
|  | * and use them for filtering calls, i.e. use in expressions for | 
|  | * the return value. | 
|  | */ | 
|  |  | 
|  | #include <bpf/bpf.h> | 
|  |  | 
|  | struct syscall_enter_openat_args { | 
|  | unsigned long long unused; | 
|  | long		   syscall_nr; | 
|  | long		   dfd; | 
|  | char		   *filename_ptr; | 
|  | long		   flags; | 
|  | long		   mode; | 
|  | }; | 
|  |  | 
|  | int syscall_enter(openat)(struct syscall_enter_openat_args *args) | 
|  | { | 
|  | return 1; | 
|  | } | 
|  |  | 
|  | license(GPL); |