github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/runc/rlimit_linux.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  const (
     6  	RLIMIT_CPU        = iota // CPU time in sec
     7  	RLIMIT_FSIZE             // Maximum filesize
     8  	RLIMIT_DATA              // max data size
     9  	RLIMIT_STACK             // max stack size
    10  	RLIMIT_CORE              // max core file size
    11  	RLIMIT_RSS               // max resident set size
    12  	RLIMIT_NPROC             // max number of processes
    13  	RLIMIT_NOFILE            // max number of open files
    14  	RLIMIT_MEMLOCK           // max locked-in-memory address space
    15  	RLIMIT_AS                // address space limit
    16  	RLIMIT_LOCKS             // maximum file locks held
    17  	RLIMIT_SIGPENDING        // max number of pending signals
    18  	RLIMIT_MSGQUEUE          // maximum bytes in POSIX mqueues
    19  	RLIMIT_NICE              // max nice prio allowed to raise to
    20  	RLIMIT_RTPRIO            // maximum realtime priority
    21  	RLIMIT_RTTIME            // timeout for RT tasks in us
    22  )
    23  
    24  var rlimitMap = map[string]int{
    25  	"RLIMIT_CPU":        RLIMIT_CPU,
    26  	"RLIMIT_FSIZE":      RLIMIT_FSIZE,
    27  	"RLIMIT_DATA":       RLIMIT_DATA,
    28  	"RLIMIT_STACK":      RLIMIT_STACK,
    29  	"RLIMIT_CORE":       RLIMIT_CORE,
    30  	"RLIMIT_RSS":        RLIMIT_RSS,
    31  	"RLIMIT_NPROC":      RLIMIT_NPROC,
    32  	"RLIMIT_NOFILE":     RLIMIT_NOFILE,
    33  	"RLIMIT_MEMLOCK":    RLIMIT_MEMLOCK,
    34  	"RLIMIT_AS":         RLIMIT_AS,
    35  	"RLIMIT_LOCKS":      RLIMIT_LOCKS,
    36  	"RLIMIT_SIGPENDING": RLIMIT_SIGPENDING,
    37  	"RLIMIT_MSGQUEUE":   RLIMIT_MSGQUEUE,
    38  	"RLIMIT_NICE":       RLIMIT_NICE,
    39  	"RLIMIT_RTPRIO":     RLIMIT_RTPRIO,
    40  	"RLIMIT_RTTIME":     RLIMIT_RTTIME,
    41  }
    42  
    43  func strToRlimit(key string) (int, error) {
    44  	rl, ok := rlimitMap[key]
    45  	if !ok {
    46  		return 0, fmt.Errorf("Wrong rlimit value: %s", key)
    47  	}
    48  	return rl, nil
    49  }