mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-18 02:48:40 +00:00
metrics: use SYS_OPENAT
New systems like arm64 don't even have SYS_OPEN.
This commit is contained in:
parent
159d88aae7
commit
d1cb7a2639
@ -9,6 +9,8 @@ import (
|
||||
"log"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
func currentFDs() int {
|
||||
@ -81,10 +83,10 @@ func parseDirEnt(dirent *syscall.Dirent, buf []byte) (consumed int, name []byte)
|
||||
var procSelfFDName = []byte("/proc/self/fd\x00")
|
||||
|
||||
func openProcSelfFD() (fd int, err error) {
|
||||
var dirfd int = unix.AT_FDCWD
|
||||
for {
|
||||
r0, _, e1 := syscall.Syscall(syscall.SYS_OPEN,
|
||||
uintptr(unsafe.Pointer(&procSelfFDName[0])),
|
||||
0, 0)
|
||||
r0, _, e1 := syscall.Syscall(unix.SYS_OPENAT, uintptr(dirfd),
|
||||
uintptr(unsafe.Pointer(&procSelfFDName[0])), 0)
|
||||
if e1 == 0 {
|
||||
return int(r0), nil
|
||||
}
|
||||
|
@ -34,10 +34,11 @@ func TestCurrentFileDescriptors(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer f.Close()
|
||||
t.Logf("fds for #%v = %v", i, CurrentFDs())
|
||||
}
|
||||
|
||||
n2 := CurrentFDs()
|
||||
if n2 != n+extra {
|
||||
if n2 < n+extra {
|
||||
t.Errorf("fds changed from %v => %v, want to %v", n, n2, n+extra)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user