github.com/cilium/cilium@v1.16.2/pkg/maps/eventsmap/cell.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package eventsmap 5 6 import ( 7 "fmt" 8 9 "github.com/cilium/ebpf" 10 "github.com/cilium/hive/cell" 11 12 "github.com/cilium/cilium/pkg/bpf" 13 ) 14 15 // Cell provides eventsmap.Map, which is the hive representation of the cilium 16 // events perf event ring buffer. 17 var Cell = cell.Module( 18 "events-map", 19 "eBPF ring buffer of cilium events", 20 21 cell.Provide(newEventsMap), 22 ) 23 24 var ( 25 MaxEntries int 26 ) 27 28 type Map interface{} 29 30 func newEventsMap(lifecycle cell.Lifecycle) bpf.MapOut[Map] { 31 eventsMap := &eventsMap{} 32 33 lifecycle.Append(cell.Hook{ 34 OnStart: func(context cell.HookContext) error { 35 cpus, err := ebpf.PossibleCPU() 36 if err != nil { 37 return fmt.Errorf("failed to get number of possible CPUs: %w", err) 38 } 39 err = eventsMap.init(cpus) 40 if err != nil { 41 return fmt.Errorf("initializing events map: %w", err) 42 } 43 return nil 44 }, 45 OnStop: func(context cell.HookContext) error { 46 // We don't currently care for cleaning up. 47 return nil 48 }, 49 }) 50 51 return bpf.NewMapOut(Map(eventsMap)) 52 }