@@ -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
1315namespace 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
0 commit comments