linux/tools/build/feature/test-bpf.c
<<
>>
Prefs
   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
  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