summaryrefslogtreecommitdiff
path: root/internal/probemanager
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-06 17:32:24 +0200
committerPaul Buetow <paul@buetow.org>2026-03-06 17:32:24 +0200
commit1561987330cb898f5ff64383a9c78e7e6559f118 (patch)
tree69a823e8f98dce572566c97e6879c11c9d591bda /internal/probemanager
parent96225fb6159212a8851043a08d781aba721b4e78 (diff)
parent110a193e04b81abb8d8e159abd73f9f6ed1acd7e (diff)
Merge branch 'feat/bubbletea-v2-migration'
Diffstat (limited to 'internal/probemanager')
-rw-r--r--internal/probemanager/doc.go2
-rw-r--r--internal/probemanager/manager.go9
2 files changed, 11 insertions, 0 deletions
diff --git a/internal/probemanager/doc.go b/internal/probemanager/doc.go
new file mode 100644
index 0000000..dd940b4
--- /dev/null
+++ b/internal/probemanager/doc.go
@@ -0,0 +1,2 @@
+// Package probemanager tracks probe enablement state and runtime toggling operations.
+package probemanager
diff --git a/internal/probemanager/manager.go b/internal/probemanager/manager.go
index b991c7c..7feb407 100644
--- a/internal/probemanager/manager.go
+++ b/internal/probemanager/manager.go
@@ -50,6 +50,7 @@ type Manager struct {
closed bool
}
+// NewManager creates a new probe manager that resolves programs via attacher.
func NewManager(attacher Attacher) *Manager {
return &Manager{
attacher: attacher,
@@ -57,6 +58,7 @@ func NewManager(attacher Attacher) *Manager {
}
}
+// Register registers the enter/exit tracepoint pair for a syscall key.
func (m *Manager) Register(syscall string, pair TracepointPair) {
if m == nil || syscall == "" {
return
@@ -74,6 +76,7 @@ func (m *Manager) Register(syscall string, pair TracepointPair) {
entry.exitTP = pair.Exit
}
+// AttachAll registers and attaches all tracepoint pairs selected by shouldAttach.
func (m *Manager) AttachAll(shouldAttach func(string) bool, tpNames []string) error {
if m == nil {
return errors.New("probe manager is nil")
@@ -95,6 +98,7 @@ func (m *Manager) AttachAll(shouldAttach func(string) bool, tpNames []string) er
return nil
}
+// Toggle flips a syscall probe between attached and detached states.
func (m *Manager) Toggle(syscall string) error {
if m == nil {
return errors.New("probe manager is nil")
@@ -118,6 +122,7 @@ func (m *Manager) Toggle(syscall string) error {
return m.Attach(syscall)
}
+// Attach attaches enter/exit tracepoints for a registered syscall.
func (m *Manager) Attach(syscall string) error {
if syscall == "" {
return errors.New("syscall is required")
@@ -167,6 +172,7 @@ func (m *Manager) Attach(syscall string) error {
return nil
}
+// Detach detaches enter/exit tracepoints for a registered syscall.
func (m *Manager) Detach(syscall string) error {
if syscall == "" {
return errors.New("syscall is required")
@@ -220,6 +226,7 @@ func (m *Manager) Detach(syscall string) error {
return combined
}
+// States returns a stable snapshot of all known probe states.
func (m *Manager) States() []ProbeState {
if m == nil {
return nil
@@ -243,6 +250,7 @@ func (m *Manager) States() []ProbeState {
return out
}
+// ActiveCount returns the number of active probes and total registered probes.
func (m *Manager) ActiveCount() (active, total int) {
if m == nil {
return 0, 0
@@ -276,6 +284,7 @@ func (m *Manager) IsActive(syscall string) bool {
return entry.active
}
+// Close detaches all registered probes and marks the manager closed.
func (m *Manager) Close() error {
if m == nil {
return nil