in pkg/events/events.go [79:111]
func (ev *events) InitRingBuffer(mapFDlist []int) (map[int]chan []byte, error) {
// Validate mapFD
if !isValidMapFDList(mapFDlist) {
return nil, fmt.Errorf("mapFDs passed to InitRingBuffer is invalid")
}
epoll, err := poller.NewEventPoller()
if err != nil {
return nil, fmt.Errorf("failed to create epoll instance: %s", err)
}
ev.epoller = epoll
ringBufferChanList := make(map[int]chan []byte)
for _, mapFD := range mapFDlist {
mapInfo, err := ebpf_maps.GetBPFmapInfo(mapFD)
if err != nil {
log.Errorf("failed to get map info for mapFD %d", mapFD)
return nil, fmt.Errorf("failed to map info")
}
eventsChan, err := ev.setupRingBuffer(mapFD, mapInfo.MaxEntries)
if err != nil {
ev.cleanupRingBuffer()
return nil, fmt.Errorf("failed to add ring buffer: %s", err)
}
log.Infof("Ringbuffer setup done for %d", mapFD)
ringBufferChanList[mapFD] = eventsChan
}
return ringBufferChanList, nil
}