1 /* SPDX-License-Identifier: (GPL-2.0-only OR B !! 1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* Copyright (c) 2011-2014 PLUMgrid, http://pl 2 /* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com 3 * Copyright (c) 2016 Facebook 3 * Copyright (c) 2016 Facebook 4 */ 4 */ 5 5 6 #ifndef __BPF_DISASM_H__ 6 #ifndef __BPF_DISASM_H__ 7 #define __BPF_DISASM_H__ 7 #define __BPF_DISASM_H__ 8 8 9 #include <linux/bpf.h> 9 #include <linux/bpf.h> 10 #include <linux/kernel.h> 10 #include <linux/kernel.h> 11 #include <linux/stringify.h> 11 #include <linux/stringify.h> 12 #ifndef __KERNEL__ 12 #ifndef __KERNEL__ 13 #include <stdio.h> 13 #include <stdio.h> 14 #include <string.h> 14 #include <string.h> 15 #endif 15 #endif 16 16 17 extern const char *const bpf_alu_string[16]; 17 extern const char *const bpf_alu_string[16]; 18 extern const char *const bpf_class_string[8]; 18 extern const char *const bpf_class_string[8]; 19 19 20 const char *func_id_name(int id); 20 const char *func_id_name(int id); 21 21 22 typedef __printf(2, 3) void (*bpf_insn_print_t 22 typedef __printf(2, 3) void (*bpf_insn_print_t)(void *private_data, 23 23 const char *, ...); 24 typedef const char *(*bpf_insn_revmap_call_t)( 24 typedef const char *(*bpf_insn_revmap_call_t)(void *private_data, 25 25 const struct bpf_insn *insn); 26 typedef const char *(*bpf_insn_print_imm_t)(vo 26 typedef const char *(*bpf_insn_print_imm_t)(void *private_data, 27 co 27 const struct bpf_insn *insn, 28 __ 28 __u64 full_imm); 29 29 30 struct bpf_insn_cbs { 30 struct bpf_insn_cbs { 31 bpf_insn_print_t cb_print; 31 bpf_insn_print_t cb_print; 32 bpf_insn_revmap_call_t cb_call; 32 bpf_insn_revmap_call_t cb_call; 33 bpf_insn_print_imm_t cb_imm; 33 bpf_insn_print_imm_t cb_imm; 34 void *private_data; 34 void *private_data; 35 }; 35 }; 36 36 37 void print_bpf_insn(const struct bpf_insn_cbs 37 void print_bpf_insn(const struct bpf_insn_cbs *cbs, 38 const struct bpf_insn *ins 38 const struct bpf_insn *insn, 39 bool allow_ptr_leaks); 39 bool allow_ptr_leaks); 40 #endif 40 #endif 41 41
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.