mirror of
https://github.com/eunomia-bpf/bpf-developer-tutorial.git
synced 2026-03-20 20:05:56 +08:00
51 lines
1.4 KiB
C
51 lines
1.4 KiB
C
#ifndef EWASM_NATIVE_API_H_
|
|
#define EWASM_NATIVE_API_H_
|
|
|
|
/// c function interface to called from wasm
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/// @brief create a ebpf program with json data
|
|
/// @param ebpf_json
|
|
/// @return id on success, -1 on failure
|
|
int
|
|
create_bpf(char *ebpf_json, int str_len);
|
|
|
|
/// @brief start running the ebpf program
|
|
/// @details load and attach the ebpf program to the kernel to run the ebpf
|
|
/// program if the ebpf program has maps to export to user space, you need to
|
|
/// call the wait and export.
|
|
int
|
|
run_bpf(int id);
|
|
|
|
/// @brief wait for the program to exit and receive data from export maps and
|
|
/// print the data
|
|
/// @details if the program has a ring buffer or perf event to export data
|
|
/// to user space, the program will help load the map info and poll the
|
|
/// events automatically.
|
|
int
|
|
wait_and_poll_bpf(int id);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
/// @brief init the eBPF program
|
|
/// @param env_json the env config from input
|
|
/// @return 0 on success, -1 on failure, the eBPF program will be terminated in
|
|
/// failure case
|
|
int
|
|
bpf_main(char *env_json, int str_len);
|
|
|
|
/// @brief handle the event output from the eBPF program, valid only when
|
|
/// wait_and_poll_events is called
|
|
/// @param ctx user defined context
|
|
/// @param e json event message
|
|
/// @return 0 on success, -1 on failure,
|
|
/// the event will be send to next handler in chain on success, or dropped in
|
|
/// failure
|
|
int
|
|
process_event(int ctx, char *e, int str_len);
|
|
|
|
#endif // NATIVE_EWASM_H_
|