Update dependencies
This commit is contained in:
41
vendor/tailscale.com/metrics/fds_linux.go
generated
vendored
Normal file
41
vendor/tailscale.com/metrics/fds_linux.go
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package metrics
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"sync"
|
||||
|
||||
"go4.org/mem"
|
||||
"tailscale.com/util/dirwalk"
|
||||
)
|
||||
|
||||
// counter is a reusable counter for counting file descriptors.
|
||||
type counter struct {
|
||||
n int
|
||||
|
||||
// cb is the (*counter).count method value. Creating it allocates,
|
||||
// so we have to save it away and use a sync.Pool to keep currentFDs
|
||||
// amortized alloc-free.
|
||||
cb func(name mem.RO, de fs.DirEntry) error
|
||||
}
|
||||
|
||||
var counterPool = &sync.Pool{New: func() any {
|
||||
c := new(counter)
|
||||
c.cb = c.count
|
||||
return c
|
||||
}}
|
||||
|
||||
func (c *counter) count(name mem.RO, de fs.DirEntry) error {
|
||||
c.n++
|
||||
return nil
|
||||
}
|
||||
|
||||
func currentFDs() int {
|
||||
c := counterPool.Get().(*counter)
|
||||
defer counterPool.Put(c)
|
||||
c.n = 0
|
||||
dirwalk.WalkShallow(mem.S("/proc/self/fd"), c.cb)
|
||||
return c.n
|
||||
}
|
||||
Reference in New Issue
Block a user