Skip to content

Commit 744a509

Browse files
committed
Modify bindings for newly designed classes
1 parent 4a5ff0c commit 744a509

File tree

3 files changed

+47
-28
lines changed

3 files changed

+47
-28
lines changed

src/bindings/main.cpp

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ extern "C" {
66
#include <libbpf.h>
77
}
88

9+
#include "core/bpf_object.h"
910
#include "core/bpf_program.h"
1011
#include "core/bpf_exception.h"
1112
#include "core/bpf_map.h"
13+
#include "core/bpf_perf_buffer.h"
1214

1315
namespace py = pybind11;
1416

@@ -30,33 +32,48 @@ PYBIND11_MODULE(pylibbpf, m) {
3032
// Register the custom exception
3133
py::register_exception<BpfException>(m, "BpfException");
3234

33-
py::class_<BpfProgram>(m, "BpfProgram")
34-
.def(py::init<const std::string &>())
35-
.def(py::init<const std::string &, const std::string &>())
36-
.def("load", &BpfProgram::load)
37-
.def("attach", &BpfProgram::attach)
38-
.def("destroy", &BpfProgram::destroy)
39-
.def("load_and_attach", &BpfProgram::load_and_attach)
40-
.def("is_loaded", &BpfProgram::is_loaded)
41-
.def("is_attached", &BpfProgram::is_attached);
35+
// BpfObject
36+
py::class_<BpfObject, std::shared_ptr<BpfObject>>(m, "BpfObject")
37+
.def(py::init<std::string>(), py::arg("object_path"))
38+
.def("load", &BpfObject::load)
39+
.def("is_loaded", &BpfObject::is_loaded)
40+
.def("get_program_names", &BpfObject::get_program_names)
41+
.def("get_program", &BpfObject::get_program, py::arg("name"))
42+
.def("attach_all", &BpfObject::attach_all)
43+
.def("get_map_names", &BpfObject::get_map_names)
44+
.def("get_map", &BpfObject::get_map, py::arg("name"));
4245

43-
py::class_<BpfMap>(m, "BpfMap")
44-
.def(py::init<BpfProgram *, py::object &>())
45-
.def("lookup", &BpfMap::lookup)
46-
.def("update", &BpfMap::update)
47-
.def("delete", &BpfMap::delete_elem)
48-
.def("get_next_key", &BpfMap::get_next_key, py::arg("key") = py::none())
49-
.def("items", &BpfMap::items)
50-
.def("keys", &BpfMap::keys)
51-
.def("values", &BpfMap::values)
52-
.def("get_name", &BpfMap::get_name)
53-
.def("get_type", &BpfMap::get_type)
54-
.def("get_key_size", &BpfMap::get_key_size)
55-
.def("get_value_size", &BpfMap::get_value_size)
56-
.def("get_max_entries", &BpfMap::get_max_entries)
57-
.def("__getitem__", &BpfMap::lookup)
58-
.def("__setitem__", &BpfMap::update)
59-
.def("__delitem__", &BpfMap::delete_elem);
46+
// BpfProgram
47+
py::class_<BpfProgram, std::shared_ptr<BpfProgram>>(m, "BpfProgram")
48+
.def("attach", &BpfProgram::attach)
49+
.def("detach", &BpfProgram::detach)
50+
.def("is_attached", &BpfProgram::is_attached)
51+
.def("get_name", &BpfProgram::get_name);
52+
53+
// BpfMap
54+
py::class_<BpfMap, std::shared_ptr<BpfMap>>(m, "BpfMap")
55+
.def("lookup", &BpfMap::lookup, py::arg("key"))
56+
.def("update", &BpfMap::update, py::arg("key"), py::arg("value"))
57+
.def("delete_elem", &BpfMap::delete_elem, py::arg("key"))
58+
.def("get_next_key", &BpfMap::get_next_key, py::arg("key") = py::none())
59+
.def("items", &BpfMap::items)
60+
.def("keys", &BpfMap::keys)
61+
.def("values", &BpfMap::values)
62+
.def("get_name", &BpfMap::get_name)
63+
.def("get_fd", &BpfMap::get_fd)
64+
.def("get_type", &BpfMap::get_type)
65+
.def("get_key_size", &BpfMap::get_key_size)
66+
.def("get_value_size", &BpfMap::get_value_size)
67+
.def("get_max_entries", &BpfMap::get_max_entries);
68+
69+
py::class_<BpfPerfBuffer>(m, "BpfPerfBuffer")
70+
.def(py::init<int, int, py::function, py::object>(),
71+
py::arg("map_fd"),
72+
py::arg("page_cnt") = 8,
73+
py::arg("callback"),
74+
py::arg("lost_callback") = py::none())
75+
.def("poll", &BpfPerfBuffer::poll, py::arg("timeout_ms") = -1)
76+
.def("consume", &BpfPerfBuffer::consume);
6077

6178

6279
#ifdef VERSION_INFO

src/core/bpf_program.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include "bpf_object.h"
12
#include "bpf_program.h"
23
#include "bpf_exception.h"
34
#include <cerrno>

src/core/bpf_program.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <libbpf.h>
55
#include <memory>
66
#include <string>
7+
#include <cstring>
78

89
class BpfObject;
910

@@ -26,8 +27,8 @@ class BpfProgram {
2627
BpfProgram(BpfProgram &&) noexcept;
2728
BpfProgram &operator=(BpfProgram &&) noexcept;
2829

29-
bool attach();
30-
bool detach();
30+
void attach();
31+
void detach();
3132

3233
[[nodiscard]] bool is_attached() const { return link_ != nullptr; }
3334
[[nodiscard]] std::string get_name() const { return program_name_; }

0 commit comments

Comments
 (0)