-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwasm-bpf-module.cpp
More file actions
58 lines (50 loc) · 1.85 KB
/
Copy pathwasm-bpf-module.cpp
File metadata and controls
58 lines (50 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2019-2024 Second State INC
#include "wasm-bpf-module.h"
#include "func-attach-bpf-program.h"
#include "func-bpf-buffer-poll.h"
#include "func-bpf-map-fd-by-name.h"
#include "func-bpf-map-operate.h"
#include "func-close-bpf-object.h"
#include "func-load-bpf-object.h"
#include "plugin/plugin.h"
#include "po/helper.h"
#include "runtime/callingframe.h"
#include "state.h"
#include <algorithm>
namespace WasmEdge {
namespace Host {
using namespace std::literals::string_view_literals;
WasmBpfModule::WasmBpfModule() : ModuleInstance("wasm_bpf") {
state_t state = std::make_shared<WasmBpfState>();
addHostFunc("wasm_load_bpf_object", std::make_unique<LoadBpfObject>(state));
addHostFunc("wasm_close_bpf_object", std::make_unique<CloseBpfObject>(state));
addHostFunc("wasm_attach_bpf_program",
std::make_unique<AttachBpfProgram>(state));
addHostFunc("wasm_bpf_buffer_poll", std::make_unique<BpfBufferPoll>(state));
addHostFunc("wasm_bpf_map_fd_by_name",
std::make_unique<BpfMapFdByName>(state));
addHostFunc("wasm_bpf_map_operate", std::make_unique<BpfMapOperate>(state));
}
Runtime::Instance::ModuleInstance *
create(const Plugin::PluginModule::ModuleDescriptor *) noexcept {
return new WasmBpfModule;
}
Plugin::Plugin::PluginDescriptor Descriptor{
.Name = "wasm_bpf",
.Description = "A plugin provides API for eBPF",
.APIVersion = Plugin::Plugin::CurrentAPIVersion,
.Version = {0, 1, 0, 0},
.ModuleCount = 1,
.ModuleDescriptions =
(Plugin::PluginModule::ModuleDescriptor[]){
{
.Name = "wasm_bpf",
.Description = "Provide functions for eBPF",
.Create = create,
},
},
.AddOptions = nullptr};
EXPORT_GET_DESCRIPTOR(Descriptor)
} // namespace Host
} // namespace WasmEdge