xref: /openbmc/linux/tools/build/feature/test-bpf.c (revision e32cb12f)
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
17*e32cb12fSTiezhu Yang # elif defined(__mips__) && defined(_ABIO32)
18*e32cb12fSTiezhu Yang #  define __NR_bpf 4355
19*e32cb12fSTiezhu Yang # elif defined(__mips__) && defined(_ABIN32)
20*e32cb12fSTiezhu Yang #  define __NR_bpf 6319
21*e32cb12fSTiezhu Yang # elif defined(__mips__) && defined(_ABI64)
22*e32cb12fSTiezhu Yang #  define __NR_bpf 5315
23b0c47807SDavid S. Miller # else
248f9e05fbSWang Nan #  error __NR_bpf not defined. libbpf does not support your arch.
258f9e05fbSWang Nan # endif
268f9e05fbSWang Nan #endif
271b76c13eSWang Nan 
main(void)281b76c13eSWang Nan int main(void)
291b76c13eSWang Nan {
301b76c13eSWang Nan 	union bpf_attr attr;
311b76c13eSWang Nan 
328f9e05fbSWang Nan 	/* Check fields in attr */
331b76c13eSWang Nan 	attr.prog_type = BPF_PROG_TYPE_KPROBE;
341b76c13eSWang Nan 	attr.insn_cnt = 0;
351b76c13eSWang Nan 	attr.insns = 0;
361b76c13eSWang Nan 	attr.license = 0;
371b76c13eSWang Nan 	attr.log_buf = 0;
381b76c13eSWang Nan 	attr.log_size = 0;
391b76c13eSWang Nan 	attr.log_level = 0;
401b76c13eSWang Nan 	attr.kern_version = 0;
41e07b98d9SDavid S. Miller 	attr.prog_flags = 0;
421b76c13eSWang Nan 
438f9e05fbSWang Nan 	/*
448f9e05fbSWang Nan 	 * Test existence of __NR_bpf and BPF_PROG_LOAD.
458f9e05fbSWang Nan 	 * This call should fail if we run the testcase.
468f9e05fbSWang Nan 	 */
471a71476eSFlorian Fainelli 	return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr));
481b76c13eSWang Nan }
49