• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2  /* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
3   * Copyright (c) 2016 Facebook
4   */
5  
6  #ifndef __BPF_DISASM_H__
7  #define __BPF_DISASM_H__
8  
9  #include <linux/bpf.h>
10  #include <linux/kernel.h>
11  #include <linux/stringify.h>
12  #ifndef __KERNEL__
13  #include <stdio.h>
14  #include <string.h>
15  #endif
16  
17  extern const char *const bpf_alu_string[16];
18  extern const char *const bpf_class_string[8];
19  
20  const char *func_id_name(int id);
21  
22  typedef __printf(2, 3) void (*bpf_insn_print_t)(void *private_data,
23  						const char *, ...);
24  typedef const char *(*bpf_insn_revmap_call_t)(void *private_data,
25  					      const struct bpf_insn *insn);
26  typedef const char *(*bpf_insn_print_imm_t)(void *private_data,
27  					    const struct bpf_insn *insn,
28  					    __u64 full_imm);
29  
30  struct bpf_insn_cbs {
31  	bpf_insn_print_t	cb_print;
32  	bpf_insn_revmap_call_t	cb_call;
33  	bpf_insn_print_imm_t	cb_imm;
34  	void			*private_data;
35  };
36  
37  void print_bpf_insn(const struct bpf_insn_cbs *cbs,
38  		    const struct bpf_insn *insn,
39  		    bool allow_ptr_leaks);
40  #endif
41