diff options
Diffstat (limited to 'container/container.go')
| -rw-r--r-- | container/container.go | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/container/container.go b/container/container.go index 8b5ec01d..e7fd8cee 100644 --- a/container/container.go +++ b/container/container.go @@ -40,7 +40,7 @@ type ( AllowOrphan bool // Scheduling policy to set via sched_setscheduler(2). The zero value // skips this call. Supported policies are [SCHED_BATCH], [SCHED_IDLE]. - SchedPolicy int + SchedPolicy SchedPolicy // Cgroup fd, nil to disable. Cgroup *int // ExtraFiles passed through to initial process in the container, with @@ -373,12 +373,23 @@ func (p *Container) Start() error { // sched_setscheduler: thread-directed but acts on all processes // created from the calling thread - if p.SchedPolicy > 0 { + if p.SchedPolicy > 0 && p.SchedPolicy <= _SCHED_LAST { + var param schedParam + if priority, err := p.SchedPolicy.GetPriorityMin(); err != nil { + return &StartError{ + Fatal: true, + Step: "get minimum priority", + Err: err, + } + } else { + param.priority = priority + } + p.msg.Verbosef("setting scheduling policy %d", p.SchedPolicy) if err := schedSetscheduler( 0, // calling thread p.SchedPolicy, - &schedParam{0}, + ¶m, ); err != nil { return &StartError{ Fatal: true, |
