18f9e05fbSWang Nan #include <asm/unistd.h> 21b76c13eSWang Nan #include <linux/bpf.h> 38f9e05fbSWang Nan #include <unistd.h> 48f9e05fbSWang Nan 58f9e05fbSWang Nan #ifndef __NR_bpf 68f9e05fbSWang Nan # if defined(__i386__) 78f9e05fbSWang Nan # define __NR_bpf 357 88f9e05fbSWang Nan # elif defined(__x86_64__) 98f9e05fbSWang Nan # define __NR_bpf 321 108f9e05fbSWang Nan # elif defined(__aarch64__) 118f9e05fbSWang Nan # define __NR_bpf 280 128f9e05fbSWang Nan # error __NR_bpf not defined. libbpf does not support your arch. 138f9e05fbSWang Nan # endif 148f9e05fbSWang Nan #endif 151b76c13eSWang Nan 161b76c13eSWang Nan int main(void) 171b76c13eSWang Nan { 181b76c13eSWang Nan union bpf_attr attr; 191b76c13eSWang Nan 208f9e05fbSWang Nan /* Check fields in attr */ 211b76c13eSWang Nan attr.prog_type = BPF_PROG_TYPE_KPROBE; 221b76c13eSWang Nan attr.insn_cnt = 0; 231b76c13eSWang Nan attr.insns = 0; 241b76c13eSWang Nan attr.license = 0; 251b76c13eSWang Nan attr.log_buf = 0; 261b76c13eSWang Nan attr.log_size = 0; 271b76c13eSWang Nan attr.log_level = 0; 281b76c13eSWang Nan attr.kern_version = 0; 291b76c13eSWang Nan 301b76c13eSWang Nan attr = attr; 318f9e05fbSWang Nan /* 328f9e05fbSWang Nan * Test existence of __NR_bpf and BPF_PROG_LOAD. 338f9e05fbSWang Nan * This call should fail if we run the testcase. 348f9e05fbSWang Nan */ 358f9e05fbSWang Nan return syscall(__NR_bpf, BPF_PROG_LOAD, attr, sizeof(attr)); 361b76c13eSWang Nan } 37