49 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <asm/unistd.h>3#include <linux/bpf.h>4#include <unistd.h>5 6#ifndef __NR_bpf7# if defined(__i386__)8# define __NR_bpf 3579# elif defined(__x86_64__)10# define __NR_bpf 32111# elif defined(__aarch64__)12# define __NR_bpf 28013# elif defined(__sparc__)14# define __NR_bpf 34915# elif defined(__s390__)16# define __NR_bpf 35117# elif defined(__mips__) && defined(_ABIO32)18# define __NR_bpf 435519# elif defined(__mips__) && defined(_ABIN32)20# define __NR_bpf 631921# elif defined(__mips__) && defined(_ABI64)22# define __NR_bpf 531523# else24# error __NR_bpf not defined. libbpf does not support your arch.25# endif26#endif27 28int 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