1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 28f9e05fbSWang Nan #include <asm/unistd.h> 31b76c13eSWang Nan #include <linux/bpf.h> 48f9e05fbSWang Nan #include <unistd.h> 58f9e05fbSWang Nan 68f9e05fbSWang Nan #ifndef __NR_bpf 78f9e05fbSWang Nan # if defined(__i386__) 88f9e05fbSWang Nan # define __NR_bpf 357 98f9e05fbSWang Nan # elif defined(__x86_64__) 108f9e05fbSWang Nan # define __NR_bpf 321 118f9e05fbSWang Nan # elif defined(__aarch64__) 128f9e05fbSWang Nan # define __NR_bpf 280 13b0c47807SDavid S. Miller # elif defined(__sparc__) 14b0c47807SDavid S. Miller # define __NR_bpf 349 15bad1926dSDaniel Borkmann # elif defined(__s390__) 16bad1926dSDaniel Borkmann # define __NR_bpf 351 17b0c47807SDavid S. Miller # else 188f9e05fbSWang Nan # error __NR_bpf not defined. libbpf does not support your arch. 198f9e05fbSWang Nan # endif 208f9e05fbSWang Nan #endif 211b76c13eSWang Nan 221b76c13eSWang Nan int main(void) 231b76c13eSWang Nan { 241b76c13eSWang Nan union bpf_attr attr; 251b76c13eSWang Nan 268f9e05fbSWang Nan /* Check fields in attr */ 271b76c13eSWang Nan attr.prog_type = BPF_PROG_TYPE_KPROBE; 281b76c13eSWang Nan attr.insn_cnt = 0; 291b76c13eSWang Nan attr.insns = 0; 301b76c13eSWang Nan attr.license = 0; 311b76c13eSWang Nan attr.log_buf = 0; 321b76c13eSWang Nan attr.log_size = 0; 331b76c13eSWang Nan attr.log_level = 0; 341b76c13eSWang Nan attr.kern_version = 0; 35e07b98d9SDavid S. Miller attr.prog_flags = 0; 361b76c13eSWang Nan 378f9e05fbSWang Nan /* 388f9e05fbSWang Nan * Test existence of __NR_bpf and BPF_PROG_LOAD. 398f9e05fbSWang Nan * This call should fail if we run the testcase. 408f9e05fbSWang Nan */ 411a71476eSFlorian Fainelli return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr)); 421b76c13eSWang Nan } 43