mirror of
https://github.com/golang/go
synced 2024-11-18 12:54:44 -07:00
syscall: prlimit argument error for Getrlimit and Setrlimit on Linux 32-bit
The rlimit arguments for prlimit are reversed for linux 32-bit (386 and arm). Getrlimit becomes Setrlimit and vice versa. Fixes #5949. R=iant, mikioh.mikioh, rsc CC=golang-dev https://golang.org/cl/11803043
This commit is contained in:
parent
d9d3debee5
commit
5852760088
41
src/pkg/syscall/rlimit_linux_test.go
Normal file
41
src/pkg/syscall/rlimit_linux_test.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// Copyright 2013 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package syscall_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRlimit(t *testing.T) {
|
||||||
|
var rlimit, zero syscall.Rlimit
|
||||||
|
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Getrlimit: save failed: %v", err)
|
||||||
|
}
|
||||||
|
if zero == rlimit {
|
||||||
|
t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit)
|
||||||
|
}
|
||||||
|
set := rlimit
|
||||||
|
set.Cur = set.Max - 1
|
||||||
|
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Setrlimit: set failed: %#v %v", set, err)
|
||||||
|
}
|
||||||
|
var get syscall.Rlimit
|
||||||
|
err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Getrlimit: get failed: %v", err)
|
||||||
|
}
|
||||||
|
set = rlimit
|
||||||
|
set.Cur = set.Max - 1
|
||||||
|
if set != get {
|
||||||
|
t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get)
|
||||||
|
}
|
||||||
|
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err)
|
||||||
|
}
|
||||||
|
}
|
@ -78,7 +78,7 @@ const rlimInf32 = ^uint32(0)
|
|||||||
const rlimInf64 = ^uint64(0)
|
const rlimInf64 = ^uint64(0)
|
||||||
|
|
||||||
func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||||
err = prlimit(0, resource, rlim, nil)
|
err = prlimit(0, resource, nil, rlim)
|
||||||
if err != ENOSYS {
|
if err != ENOSYS {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -106,7 +106,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
|||||||
//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
|
//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
|
||||||
|
|
||||||
func Setrlimit(resource int, rlim *Rlimit) (err error) {
|
func Setrlimit(resource int, rlim *Rlimit) (err error) {
|
||||||
err = prlimit(0, resource, nil, rlim)
|
err = prlimit(0, resource, rlim, nil)
|
||||||
if err != ENOSYS {
|
if err != ENOSYS {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ const rlimInf32 = ^uint32(0)
|
|||||||
const rlimInf64 = ^uint64(0)
|
const rlimInf64 = ^uint64(0)
|
||||||
|
|
||||||
func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||||
err = prlimit(0, resource, rlim, nil)
|
err = prlimit(0, resource, nil, rlim)
|
||||||
if err != ENOSYS {
|
if err != ENOSYS {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
|||||||
//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
|
//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
|
||||||
|
|
||||||
func Setrlimit(resource int, rlim *Rlimit) (err error) {
|
func Setrlimit(resource int, rlim *Rlimit) (err error) {
|
||||||
err = prlimit(0, resource, nil, rlim)
|
err = prlimit(0, resource, rlim, nil)
|
||||||
if err != ENOSYS {
|
if err != ENOSYS {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user