diff options
Diffstat (limited to 'src/syscall/syscall_linux.go')
-rw-r--r-- | src/syscall/syscall_linux.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/syscall/syscall_linux.go b/src/syscall/syscall_linux.go index a5ebe5086a..3afee6217c 100644 --- a/src/syscall/syscall_linux.go +++ b/src/syscall/syscall_linux.go @@ -1018,7 +1018,7 @@ func Getpgrp() (pid int) { //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT -//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sysnb prlimit1(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) //sys Setdomainname(p []byte) (err error) @@ -1221,3 +1221,14 @@ func Munmap(b []byte) (err error) { //sys Munlock(b []byte) (err error) //sys Mlockall(flags int) (err error) //sys Munlockall() (err error) + +// prlimit changes a resource limit. We use a single definition so that +// we can tell StartProcess to not restore the original NOFILE limit. +// This is unexported but can be called from x/sys/unix. +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + err = prlimit1(pid, resource, newlimit, old) + if err == nil && newlimit != nil && resource == RLIMIT_NOFILE { + origRlimitNofile.Store(Rlimit{0, 0}) + } + return err +} |