aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/manager
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-07-28 19:30:11 +0200
committerAleksandr Nogikh <nogikh@google.com>2025-07-29 08:30:56 +0000
commit5971223333d76c5f21de85038c78785ac766d696 (patch)
tree2a2e397a2638f4d81f617df35be9aec21569ce8a /pkg/manager
parentc4a9548758bac1c6dc231afd7543b5e8c5b6a65e (diff)
prog: generate choice table only for enabled calls
We used to generate a choice table and do its normalization for all present syscalls, also it was not considered during the /prio page generation. Enabled/disabled syscalls were accounted for in the choice table construction, but there's a chance that the resulting table was still somewhat skewed. The situation must have become worse after several thousands of auto syscalls were added.
Diffstat (limited to 'pkg/manager')
-rw-r--r--pkg/manager/http.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/pkg/manager/http.go b/pkg/manager/http.go
index 50f672207..eaf2459f5 100644
--- a/pkg/manager/http.go
+++ b/pkg/manager/http.go
@@ -667,14 +667,22 @@ func (serv *HTTPServer) httpPrio(w http.ResponseWriter, r *http.Request) {
progs = append(progs, inp.Prog)
}
- prios := serv.Cfg.Target.CalculatePriorities(progs)
+ var enabled map[*prog.Syscall]bool
+ if obj := serv.EnabledSyscalls.Load(); obj != nil {
+ enabled = obj.(map[*prog.Syscall]bool)
+ }
+ prios, generatable := serv.Cfg.Target.CalculatePriorities(progs, enabled)
data := &UIPrioData{
UIPageHeader: serv.pageHeader(r, "syscall priorities"),
Call: callName,
}
for i, p := range prios[call.ID] {
- data.Prios = append(data.Prios, UIPrio{serv.Cfg.Target.Syscalls[i].Name, p})
+ syscall := serv.Cfg.Target.Syscalls[i]
+ if !generatable[syscall] {
+ continue
+ }
+ data.Prios = append(data.Prios, UIPrio{syscall.Name, p})
}
sort.Slice(data.Prios, func(i, j int) bool {
return data.Prios[i].Prio > data.Prios[j].Prio