1 // SPDX-License-Identifier: GPL-2.0 2 #include <asm/unistd.h> 3 #include <linux/bpf.h> 4 #include <unistd.h> 5 6 #ifndef __NR_bpf 7 # if defined(__i386__) 8 # define __NR_bpf 357 9 # elif defined(__x86_64__) 10 # define __NR_bpf 321 11 # elif defined(__aarch64__) 12 # define __NR_bpf 280 13 # elif defined(__sparc__) 14 # define __NR_bpf 349 15 # elif defined(__s390__) 16 # define __NR_bpf 351 17 # elif defined(__mips__) && defined(_ABIO32) 18 # define __NR_bpf 4355 19 # elif defined(__mips__) && defined(_ABIN32) 20 # define __NR_bpf 6319 21 # elif defined(__mips__) && defined(_ABI64) 22 # define __NR_bpf 5315 23 # else 24 # error __NR_bpf not defined. libbpf does not support your arch. 25 # endif 26 #endif 27 28 int main(void) 29 { 30 union bpf_attr attr; 31 32 /* Check fields in attr */ 33 attr.prog_type = BPF_PROG_TYPE_KPROBE; 34 attr.insn_cnt = 0; 35 attr.insns = 0; 36 attr.license = 0; 37 attr.log_buf = 0; 38 attr.log_size = 0; 39 attr.log_level = 0; 40 attr.kern_version = 0; 41 attr.prog_flags = 0; 42 43 /* 44 * Test existence of __NR_bpf and BPF_PROG_LOAD. 45 * This call should fail if we run the testcase. 46 */ 47 return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr)); 48 } 49