1package main 2 3import "fmt" 4 5const ( 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 24var 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 43func 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} 50