File: rlimit_linux.go

package info (click to toggle)
runc 1.0.0~rc6+dfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,972 kB
  • sloc: sh: 1,386; ansic: 946; makefile: 117
file content (49 lines) | stat: -rw-r--r-- 1,651 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main

import "fmt"

const (
	RLIMIT_CPU        = iota // CPU time in sec
	RLIMIT_FSIZE             // Maximum filesize
	RLIMIT_DATA              // max data size
	RLIMIT_STACK             // max stack size
	RLIMIT_CORE              // max core file size
	RLIMIT_RSS               // max resident set size
	RLIMIT_NPROC             // max number of processes
	RLIMIT_NOFILE            // max number of open files
	RLIMIT_MEMLOCK           // max locked-in-memory address space
	RLIMIT_AS                // address space limit
	RLIMIT_LOCKS             // maximum file locks held
	RLIMIT_SIGPENDING        // max number of pending signals
	RLIMIT_MSGQUEUE          // maximum bytes in POSIX mqueues
	RLIMIT_NICE              // max nice prio allowed to raise to
	RLIMIT_RTPRIO            // maximum realtime priority
	RLIMIT_RTTIME            // timeout for RT tasks in us
)

var rlimitMap = map[string]int{
	"RLIMIT_CPU":        RLIMIT_CPU,
	"RLIMIT_FSIZE":      RLIMIT_FSIZE,
	"RLIMIT_DATA":       RLIMIT_DATA,
	"RLIMIT_STACK":      RLIMIT_STACK,
	"RLIMIT_CORE":       RLIMIT_CORE,
	"RLIMIT_RSS":        RLIMIT_RSS,
	"RLIMIT_NPROC":      RLIMIT_NPROC,
	"RLIMIT_NOFILE":     RLIMIT_NOFILE,
	"RLIMIT_MEMLOCK":    RLIMIT_MEMLOCK,
	"RLIMIT_AS":         RLIMIT_AS,
	"RLIMIT_LOCKS":      RLIMIT_LOCKS,
	"RLIMIT_SIGPENDING": RLIMIT_SIGPENDING,
	"RLIMIT_MSGQUEUE":   RLIMIT_MSGQUEUE,
	"RLIMIT_NICE":       RLIMIT_NICE,
	"RLIMIT_RTPRIO":     RLIMIT_RTPRIO,
	"RLIMIT_RTTIME":     RLIMIT_RTTIME,
}

func strToRlimit(key string) (int, error) {
	rl, ok := rlimitMap[key]
	if !ok {
		return 0, fmt.Errorf("wrong rlimit value: %s", key)
	}
	return rl, nil
}