1 /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
2 /* Copyright (C) 2020 Facebook, Inc. */
4 #ifndef __TESTING_HELPERS_H
5 #define __TESTING_HELPERS_H
9 #include <bpf/libbpf.h>
12 #define __TO_STR(x) #x
13 #define TO_STR(x) __TO_STR(x)
15 int parse_num_list(const char *s
, bool **set
, int *set_len
);
16 __u32
link_info_prog_id(const struct bpf_link
*link
, struct bpf_link_info
*info
);
17 int bpf_prog_test_load(const char *file
, enum bpf_prog_type type
,
18 struct bpf_object
**pobj
, int *prog_fd
);
19 int bpf_test_load_program(enum bpf_prog_type type
, const struct bpf_insn
*insns
,
20 size_t insns_cnt
, const char *license
,
21 __u32 kern_version
, char *log_buf
,
25 * below function is exported for testing in prog_test test
27 struct test_filter_set
;
28 int parse_test_list(const char *s
,
29 struct test_filter_set
*test_set
,
30 bool is_glob_pattern
);
31 int parse_test_list_file(const char *path
,
32 struct test_filter_set
*test_set
,
33 bool is_glob_pattern
);
35 __u64
read_perf_max_sample_freq(void);
36 int load_bpf_testmod(bool verbose
);
37 int unload_bpf_testmod(bool verbose
);
38 int kern_sync_rcu(void);
39 int finit_module(int fd
, const char *param_values
, int flags
);
40 int delete_module(const char *name
, int flags
);
41 int load_module(const char *path
, bool verbose
);
42 int unload_module(const char *name
, bool verbose
);
44 static inline __u64
get_time_ns(void)
48 clock_gettime(CLOCK_MONOTONIC
, &t
);
50 return (u64
)t
.tv_sec
* 1000000000 + t
.tv_nsec
;
54 /* Request BPF program instructions after all rewrites are applied,
55 * e.g. verifier.c:convert_ctx_access() is done.
57 int get_xlated_program(int fd_prog
, struct bpf_insn
**buf
, __u32
*cnt
);
58 int testing_prog_flags(void);
59 bool is_jit_enabled(void);
61 #endif /* __TESTING_HELPERS_H */