1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2015, He Kuang <hekuang@huawei.com> 4 * Copyright (C) 2015, Huawei Inc. 5 */ 6 #ifndef __BPF_PROLOGUE_H 7 #define __BPF_PROLOGUE_H 8 9 #include <linux/compiler.h> 10 #include <linux/filter.h> 11 #include "probe-event.h" 12 13 #define BPF_PROLOGUE_MAX_ARGS 3 14 #define BPF_PROLOGUE_START_ARG_REG BPF_REG_3 15 #define BPF_PROLOGUE_FETCH_RESULT_REG BPF_REG_2 16 17 #ifdef HAVE_BPF_PROLOGUE 18 int bpf__gen_prologue(struct probe_trace_arg *args, int nargs, 19 struct bpf_insn *new_prog, size_t *new_cnt, 20 size_t cnt_space); 21 #else 22 #include <errno.h> 23 24 static inline int 25 bpf__gen_prologue(struct probe_trace_arg *args __maybe_unused, 26 int nargs __maybe_unused, 27 struct bpf_insn *new_prog __maybe_unused, 28 size_t *new_cnt, 29 size_t cnt_space __maybe_unused) 30 { 31 if (!new_cnt) 32 return -EINVAL; 33 *new_cnt = 0; 34 return -ENOTSUP; 35 } 36 #endif 37 #endif /* __BPF_PROLOGUE_H */ 38