Make lost_callback type asfe in PerfEventArray

This commit is contained in:
Pragyansh Chaturvedi
2025-10-20 05:22:31 +05:30
parent eebfe61ccc
commit 003495e833
2 changed files with 7 additions and 5 deletions

View File

@ -7,7 +7,7 @@
PerfEventArray::PerfEventArray(std::shared_ptr<BpfMap> map, int page_cnt,
py::function callback, py::object lost_callback)
: map_(map), pb_(nullptr), callback_(std::move(callback)),
lost_callback_(lost_callback) {
lost_callback_(std::move(lost_callback)) {
if (map->get_type() != BPF_MAP_TYPE_PERF_EVENT_ARRAY) {
throw BpfException("Map '" + map->get_name() +
@ -92,10 +92,12 @@ void PerfEventArray::lost_callback_wrapper(void *ctx, int cpu,
py::gil_scoped_acquire acquire;
try {
if (self->lost_callback_.is_none()) {
return;
if (!self->lost_callback_.is_none()) {
py::function lost_fn = py::cast<py::function>(self->lost_callback_);
lost_fn(cpu, cnt);
} else {
py::print("Lost", cnt, "events on CPU", cpu);
}
self->lost_callback_(cpu, cnt);
} catch (const py::error_already_set &e) {
PyErr_Print();
}

View File

@ -17,7 +17,7 @@ private:
std::shared_ptr<BpfMap> map_;
struct perf_buffer *pb_;
py::function callback_;
py::function lost_callback_;
py::object lost_callback_;
std::shared_ptr<StructParser> parser_;
std::string struct_name_;