aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/container.go
diff options
context:
space:
mode:
Diffstat (limited to 'container/container.go')
-rw-r--r--container/container.go17
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},
+ &param,
); err != nil {
return &StartError{
Fatal: true,