mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	Update prometheus/procfs
Fixes: https://github.com/prometheus/node_exporter/issues/1721 Signed-off-by: Ben Kochie <superq@gmail.com>
This commit is contained in:
		
							parent
							
								
									2cefe3d769
								
							
						
					
					
						commit
						baa7ab732f
					
				| 
						 | 
				
			
			@ -1756,6 +1756,17 @@ Lines: 1
 | 
			
		|||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/writeback_rate_debug
 | 
			
		||||
Lines: 7
 | 
			
		||||
rate:           1.1M/sec
 | 
			
		||||
dirty:          20.4G
 | 
			
		||||
target:         20.4G
 | 
			
		||||
proportional:   427.5k
 | 
			
		||||
integral:       790.0k
 | 
			
		||||
change:         321.5k/sec
 | 
			
		||||
next io:        17ms
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: sys/devices/pci0000:00/0000:00:0d.0/ata5
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -20,7 +20,7 @@ require (
 | 
			
		|||
	github.com/prometheus/client_golang v1.6.0
 | 
			
		||||
	github.com/prometheus/client_model v0.2.0
 | 
			
		||||
	github.com/prometheus/common v0.10.0
 | 
			
		||||
	github.com/prometheus/procfs v0.0.11
 | 
			
		||||
	github.com/prometheus/procfs v0.1.3
 | 
			
		||||
	github.com/siebenmann/go-kstat v0.0.0-20200303194639-4e8294f9e9d5
 | 
			
		||||
	github.com/soundcloud/go-runit v0.0.0-20150630195641-06ad41a06c4a
 | 
			
		||||
	go.uber.org/multierr v1.5.0 // indirect
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ require (
 | 
			
		|||
	golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
 | 
			
		||||
	golang.org/x/net v0.0.0-20200513185701-a91f0712d120 // indirect
 | 
			
		||||
	golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a // indirect
 | 
			
		||||
	golang.org/x/sys v0.0.0-20200523222454-059865788121
 | 
			
		||||
	golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980
 | 
			
		||||
	golang.org/x/tools v0.0.0-20200513201620-d5fe73897c97 // indirect
 | 
			
		||||
	gopkg.in/alecthomas/kingpin.v2 v2.2.6
 | 
			
		||||
	gopkg.in/yaml.v2 v2.3.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -289,6 +289,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
 | 
			
		|||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
 | 
			
		||||
github.com/prometheus/procfs v0.0.11 h1:DhHlBtkHWPYi8O2y31JkK0TF+DGM+51OopZjH/Ia5qI=
 | 
			
		||||
github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
 | 
			
		||||
github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
 | 
			
		||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
 | 
			
		||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
 | 
			
		||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 | 
			
		||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 | 
			
		||||
| 
						 | 
				
			
			@ -432,8 +434,8 @@ golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7w
 | 
			
		|||
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 h1:OjiUf46hAmXblsZdnoSXsEUSKU8r1UEzcL5RVZ4gO9Y=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
			
		||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
 | 
			
		||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								vendor/github.com/prometheus/procfs/Makefile.common
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/prometheus/procfs/Makefile.common
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -150,6 +150,17 @@ else
 | 
			
		|||
	$(GO) get $(GOOPTS) -t ./...
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
.PHONY: update-go-deps
 | 
			
		||||
update-go-deps:
 | 
			
		||||
	@echo ">> updating Go dependencies"
 | 
			
		||||
	@for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \
 | 
			
		||||
		$(GO) get $$m; \
 | 
			
		||||
	done
 | 
			
		||||
	GO111MODULE=$(GO111MODULE) $(GO) mod tidy
 | 
			
		||||
ifneq (,$(wildcard vendor))
 | 
			
		||||
	GO111MODULE=$(GO111MODULE) $(GO) mod vendor
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
.PHONY: common-test-short
 | 
			
		||||
common-test-short: $(GOTEST_DIR)
 | 
			
		||||
	@echo ">> running short tests"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								vendor/github.com/prometheus/procfs/bcache/bcache.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/prometheus/procfs/bcache/bcache.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -43,10 +43,11 @@ type BcacheStats struct { // nolint:golint
 | 
			
		|||
 | 
			
		||||
// BdevStats contains statistics for one backing device.
 | 
			
		||||
type BdevStats struct {
 | 
			
		||||
	Name      string
 | 
			
		||||
	DirtyData uint64
 | 
			
		||||
	FiveMin   PeriodStats
 | 
			
		||||
	Total     PeriodStats
 | 
			
		||||
	Name               string
 | 
			
		||||
	DirtyData          uint64
 | 
			
		||||
	FiveMin            PeriodStats
 | 
			
		||||
	Total              PeriodStats
 | 
			
		||||
	WritebackRateDebug WritebackRateDebugStats
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CacheStats contains statistics for one cache device.
 | 
			
		||||
| 
						 | 
				
			
			@ -82,3 +83,14 @@ type PeriodStats struct {
 | 
			
		|||
	CacheMisses         uint64
 | 
			
		||||
	CacheReadaheads     uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// WritebackRateDebugStats contains bcache writeback statistics.
 | 
			
		||||
type WritebackRateDebugStats struct {
 | 
			
		||||
	Rate         uint64
 | 
			
		||||
	Dirty        uint64
 | 
			
		||||
	Target       uint64
 | 
			
		||||
	Proportional int64
 | 
			
		||||
	Integral     int64
 | 
			
		||||
	Change       int64
 | 
			
		||||
	NextIO       int64
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										109
									
								
								vendor/github.com/prometheus/procfs/bcache/get.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/github.com/prometheus/procfs/bcache/get.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -174,6 +174,17 @@ func dehumanize(hbytes []byte) (uint64, error) {
 | 
			
		|||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func dehumanizeSigned(str string) (int64, error) {
 | 
			
		||||
	value, err := dehumanize([]byte(strings.TrimPrefix(str, "-")))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	if strings.HasPrefix(str, "-") {
 | 
			
		||||
		return int64(-value), nil
 | 
			
		||||
	}
 | 
			
		||||
	return int64(value), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type parser struct {
 | 
			
		||||
	uuidPath   string
 | 
			
		||||
	subDir     string
 | 
			
		||||
| 
						 | 
				
			
			@ -232,6 +243,72 @@ func parsePriorityStats(line string, ps *PriorityStats) error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParseWritebackRateDebug parses lines from the writeback_rate_debug file.
 | 
			
		||||
func parseWritebackRateDebug(line string, wrd *WritebackRateDebugStats) error {
 | 
			
		||||
	switch {
 | 
			
		||||
	case strings.HasPrefix(line, "rate:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		rawValue := fields[len(fields)-1]
 | 
			
		||||
		valueStr := strings.TrimSuffix(rawValue, "/sec")
 | 
			
		||||
		value, err := dehumanize([]byte(valueStr))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.Rate = value
 | 
			
		||||
	case strings.HasPrefix(line, "dirty:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		valueStr := fields[len(fields)-1]
 | 
			
		||||
		value, err := dehumanize([]byte(valueStr))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.Dirty = value
 | 
			
		||||
	case strings.HasPrefix(line, "target:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		valueStr := fields[len(fields)-1]
 | 
			
		||||
		value, err := dehumanize([]byte(valueStr))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.Target = value
 | 
			
		||||
	case strings.HasPrefix(line, "proportional:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		valueStr := fields[len(fields)-1]
 | 
			
		||||
		value, err := dehumanizeSigned(valueStr)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.Proportional = value
 | 
			
		||||
	case strings.HasPrefix(line, "integral:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		valueStr := fields[len(fields)-1]
 | 
			
		||||
		value, err := dehumanizeSigned(valueStr)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.Integral = value
 | 
			
		||||
	case strings.HasPrefix(line, "change:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		rawValue := fields[len(fields)-1]
 | 
			
		||||
		valueStr := strings.TrimSuffix(rawValue, "/sec")
 | 
			
		||||
		value, err := dehumanizeSigned(valueStr)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.Change = value
 | 
			
		||||
	case strings.HasPrefix(line, "next io:"):
 | 
			
		||||
		fields := strings.Fields(line)
 | 
			
		||||
		rawValue := fields[len(fields)-1]
 | 
			
		||||
		valueStr := strings.TrimSuffix(rawValue, "ms")
 | 
			
		||||
		value, err := strconv.ParseInt(valueStr, 10, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		wrd.NextIO = value
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *parser) getPriorityStats() PriorityStats {
 | 
			
		||||
	var res PriorityStats
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -263,6 +340,35 @@ func (p *parser) getPriorityStats() PriorityStats {
 | 
			
		|||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *parser) getWritebackRateDebug() WritebackRateDebugStats {
 | 
			
		||||
	var res WritebackRateDebugStats
 | 
			
		||||
 | 
			
		||||
	if p.err != nil {
 | 
			
		||||
		return res
 | 
			
		||||
	}
 | 
			
		||||
	path := path.Join(p.currentDir, "writeback_rate_debug")
 | 
			
		||||
	file, err := os.Open(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		p.err = fmt.Errorf("failed to read: %s", path)
 | 
			
		||||
		return res
 | 
			
		||||
	}
 | 
			
		||||
	defer file.Close()
 | 
			
		||||
 | 
			
		||||
	scanner := bufio.NewScanner(file)
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		err = parseWritebackRateDebug(scanner.Text(), &res)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			p.err = fmt.Errorf("failed to parse: %s (%s)", path, err)
 | 
			
		||||
			return res
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if err := scanner.Err(); err != nil {
 | 
			
		||||
		p.err = fmt.Errorf("failed to parse: %s (%s)", path, err)
 | 
			
		||||
		return res
 | 
			
		||||
	}
 | 
			
		||||
	return res
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetStats collects from sysfs files data tied to one bcache ID.
 | 
			
		||||
func GetStats(uuidPath string, priorityStats bool) (*Stats, error) {
 | 
			
		||||
	var bs Stats
 | 
			
		||||
| 
						 | 
				
			
			@ -339,6 +445,9 @@ func GetStats(uuidPath string, priorityStats bool) (*Stats, error) {
 | 
			
		|||
		par.setSubDir(bds.Name)
 | 
			
		||||
		bds.DirtyData = par.readValue("dirty_data")
 | 
			
		||||
 | 
			
		||||
		wrd := par.getWritebackRateDebug()
 | 
			
		||||
		bds.WritebackRateDebug = wrd
 | 
			
		||||
 | 
			
		||||
		// dir <uuidPath>/<bds.Name>/stats_five_minute
 | 
			
		||||
		par.setSubDir(bds.Name, "stats_five_minute")
 | 
			
		||||
		bds.FiveMin.Bypassed = par.readValue("bypassed")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										265
									
								
								vendor/github.com/prometheus/procfs/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										265
									
								
								vendor/github.com/prometheus/procfs/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -11,11 +11,15 @@
 | 
			
		|||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -52,6 +56,11 @@ type CPUInfo struct {
 | 
			
		|||
	PowerManagement string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	cpuinfoClockRegexp          = regexp.MustCompile(`([\d.]+)`)
 | 
			
		||||
	cpuinfoS390XProcessorRegexp = regexp.MustCompile(`^processor\s+(\d+):.*`)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CPUInfo returns information about current system CPUs.
 | 
			
		||||
// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt
 | 
			
		||||
func (fs FS) CPUInfo() ([]CPUInfo, error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -62,14 +71,26 @@ func (fs FS) CPUInfo() ([]CPUInfo, error) {
 | 
			
		|||
	return parseCPUInfo(data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseCPUInfo parses data from /proc/cpuinfo
 | 
			
		||||
func parseCPUInfo(info []byte) ([]CPUInfo, error) {
 | 
			
		||||
	cpuinfo := []CPUInfo{}
 | 
			
		||||
	i := -1
 | 
			
		||||
func parseCPUInfoX86(info []byte) ([]CPUInfo, error) {
 | 
			
		||||
	scanner := bufio.NewScanner(bytes.NewReader(info))
 | 
			
		||||
 | 
			
		||||
	// find the first "processor" line
 | 
			
		||||
	firstLine := firstNonEmptyLine(scanner)
 | 
			
		||||
	if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") {
 | 
			
		||||
		return nil, errors.New("invalid cpuinfo file: " + firstLine)
 | 
			
		||||
	}
 | 
			
		||||
	field := strings.SplitN(firstLine, ": ", 2)
 | 
			
		||||
	v, err := strconv.ParseUint(field[1], 0, 32)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	firstcpu := CPUInfo{Processor: uint(v)}
 | 
			
		||||
	cpuinfo := []CPUInfo{firstcpu}
 | 
			
		||||
	i := 0
 | 
			
		||||
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if strings.TrimSpace(line) == "" {
 | 
			
		||||
		if !strings.Contains(line, ":") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		field := strings.SplitN(line, ": ", 2)
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +103,7 @@ func parseCPUInfo(info []byte) ([]CPUInfo, error) {
 | 
			
		|||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].Processor = uint(v)
 | 
			
		||||
		case "vendor_id":
 | 
			
		||||
		case "vendor", "vendor_id":
 | 
			
		||||
			cpuinfo[i].VendorID = field[1]
 | 
			
		||||
		case "cpu family":
 | 
			
		||||
			cpuinfo[i].CPUFamily = field[1]
 | 
			
		||||
| 
						 | 
				
			
			@ -163,5 +184,237 @@ func parseCPUInfo(info []byte) ([]CPUInfo, error) {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return cpuinfo, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseCPUInfoARM(info []byte) ([]CPUInfo, error) {
 | 
			
		||||
	scanner := bufio.NewScanner(bytes.NewReader(info))
 | 
			
		||||
 | 
			
		||||
	firstLine := firstNonEmptyLine(scanner)
 | 
			
		||||
	match, _ := regexp.MatchString("^[Pp]rocessor", firstLine)
 | 
			
		||||
	if !match || !strings.Contains(firstLine, ":") {
 | 
			
		||||
		return nil, errors.New("invalid cpuinfo file: " + firstLine)
 | 
			
		||||
	}
 | 
			
		||||
	field := strings.SplitN(firstLine, ": ", 2)
 | 
			
		||||
	cpuinfo := []CPUInfo{}
 | 
			
		||||
	featuresLine := ""
 | 
			
		||||
	commonCPUInfo := CPUInfo{}
 | 
			
		||||
	i := 0
 | 
			
		||||
	if strings.TrimSpace(field[0]) == "Processor" {
 | 
			
		||||
		commonCPUInfo = CPUInfo{ModelName: field[1]}
 | 
			
		||||
		i = -1
 | 
			
		||||
	} else {
 | 
			
		||||
		v, err := strconv.ParseUint(field[1], 0, 32)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		firstcpu := CPUInfo{Processor: uint(v)}
 | 
			
		||||
		cpuinfo = []CPUInfo{firstcpu}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if !strings.Contains(line, ":") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		field := strings.SplitN(line, ": ", 2)
 | 
			
		||||
		switch strings.TrimSpace(field[0]) {
 | 
			
		||||
		case "processor":
 | 
			
		||||
			cpuinfo = append(cpuinfo, commonCPUInfo) // start of the next processor
 | 
			
		||||
			i++
 | 
			
		||||
			v, err := strconv.ParseUint(field[1], 0, 32)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].Processor = uint(v)
 | 
			
		||||
		case "BogoMIPS":
 | 
			
		||||
			if i == -1 {
 | 
			
		||||
				cpuinfo = append(cpuinfo, commonCPUInfo) // There is only one processor
 | 
			
		||||
				i++
 | 
			
		||||
				cpuinfo[i].Processor = 0
 | 
			
		||||
			}
 | 
			
		||||
			v, err := strconv.ParseFloat(field[1], 64)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].BogoMips = v
 | 
			
		||||
		case "Features":
 | 
			
		||||
			featuresLine = line
 | 
			
		||||
		case "model name":
 | 
			
		||||
			cpuinfo[i].ModelName = field[1]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	fields := strings.SplitN(featuresLine, ": ", 2)
 | 
			
		||||
	for i := range cpuinfo {
 | 
			
		||||
		cpuinfo[i].Flags = strings.Fields(fields[1])
 | 
			
		||||
	}
 | 
			
		||||
	return cpuinfo, nil
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseCPUInfoS390X(info []byte) ([]CPUInfo, error) {
 | 
			
		||||
	scanner := bufio.NewScanner(bytes.NewReader(info))
 | 
			
		||||
 | 
			
		||||
	firstLine := firstNonEmptyLine(scanner)
 | 
			
		||||
	if !strings.HasPrefix(firstLine, "vendor_id") || !strings.Contains(firstLine, ":") {
 | 
			
		||||
		return nil, errors.New("invalid cpuinfo file: " + firstLine)
 | 
			
		||||
	}
 | 
			
		||||
	field := strings.SplitN(firstLine, ": ", 2)
 | 
			
		||||
	cpuinfo := []CPUInfo{}
 | 
			
		||||
	commonCPUInfo := CPUInfo{VendorID: field[1]}
 | 
			
		||||
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if !strings.Contains(line, ":") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		field := strings.SplitN(line, ": ", 2)
 | 
			
		||||
		switch strings.TrimSpace(field[0]) {
 | 
			
		||||
		case "bogomips per cpu":
 | 
			
		||||
			v, err := strconv.ParseFloat(field[1], 64)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			commonCPUInfo.BogoMips = v
 | 
			
		||||
		case "features":
 | 
			
		||||
			commonCPUInfo.Flags = strings.Fields(field[1])
 | 
			
		||||
		}
 | 
			
		||||
		if strings.HasPrefix(line, "processor") {
 | 
			
		||||
			match := cpuinfoS390XProcessorRegexp.FindStringSubmatch(line)
 | 
			
		||||
			if len(match) < 2 {
 | 
			
		||||
				return nil, errors.New("Invalid line found in cpuinfo: " + line)
 | 
			
		||||
			}
 | 
			
		||||
			cpu := commonCPUInfo
 | 
			
		||||
			v, err := strconv.ParseUint(match[1], 0, 32)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpu.Processor = uint(v)
 | 
			
		||||
			cpuinfo = append(cpuinfo, cpu)
 | 
			
		||||
		}
 | 
			
		||||
		if strings.HasPrefix(line, "cpu number") {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	i := 0
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if !strings.Contains(line, ":") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		field := strings.SplitN(line, ": ", 2)
 | 
			
		||||
		switch strings.TrimSpace(field[0]) {
 | 
			
		||||
		case "cpu number":
 | 
			
		||||
			i++
 | 
			
		||||
		case "cpu MHz dynamic":
 | 
			
		||||
			clock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1]))
 | 
			
		||||
			v, err := strconv.ParseFloat(clock, 64)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].CPUMHz = v
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return cpuinfo, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseCPUInfoMips(info []byte) ([]CPUInfo, error) {
 | 
			
		||||
	scanner := bufio.NewScanner(bytes.NewReader(info))
 | 
			
		||||
 | 
			
		||||
	// find the first "processor" line
 | 
			
		||||
	firstLine := firstNonEmptyLine(scanner)
 | 
			
		||||
	if !strings.HasPrefix(firstLine, "system type") || !strings.Contains(firstLine, ":") {
 | 
			
		||||
		return nil, errors.New("invalid cpuinfo file: " + firstLine)
 | 
			
		||||
	}
 | 
			
		||||
	field := strings.SplitN(firstLine, ": ", 2)
 | 
			
		||||
	cpuinfo := []CPUInfo{}
 | 
			
		||||
	systemType := field[1]
 | 
			
		||||
 | 
			
		||||
	i := 0
 | 
			
		||||
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if !strings.Contains(line, ":") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		field := strings.SplitN(line, ": ", 2)
 | 
			
		||||
		switch strings.TrimSpace(field[0]) {
 | 
			
		||||
		case "processor":
 | 
			
		||||
			v, err := strconv.ParseUint(field[1], 0, 32)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			i = int(v)
 | 
			
		||||
			cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor
 | 
			
		||||
			cpuinfo[i].Processor = uint(v)
 | 
			
		||||
			cpuinfo[i].VendorID = systemType
 | 
			
		||||
		case "cpu model":
 | 
			
		||||
			cpuinfo[i].ModelName = field[1]
 | 
			
		||||
		case "BogoMIPS":
 | 
			
		||||
			v, err := strconv.ParseFloat(field[1], 64)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].BogoMips = v
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return cpuinfo, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseCPUInfoPPC(info []byte) ([]CPUInfo, error) {
 | 
			
		||||
	scanner := bufio.NewScanner(bytes.NewReader(info))
 | 
			
		||||
 | 
			
		||||
	firstLine := firstNonEmptyLine(scanner)
 | 
			
		||||
	if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") {
 | 
			
		||||
		return nil, errors.New("invalid cpuinfo file: " + firstLine)
 | 
			
		||||
	}
 | 
			
		||||
	field := strings.SplitN(firstLine, ": ", 2)
 | 
			
		||||
	v, err := strconv.ParseUint(field[1], 0, 32)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	firstcpu := CPUInfo{Processor: uint(v)}
 | 
			
		||||
	cpuinfo := []CPUInfo{firstcpu}
 | 
			
		||||
	i := 0
 | 
			
		||||
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if !strings.Contains(line, ":") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		field := strings.SplitN(line, ": ", 2)
 | 
			
		||||
		switch strings.TrimSpace(field[0]) {
 | 
			
		||||
		case "processor":
 | 
			
		||||
			cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor
 | 
			
		||||
			i++
 | 
			
		||||
			v, err := strconv.ParseUint(field[1], 0, 32)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].Processor = uint(v)
 | 
			
		||||
		case "cpu":
 | 
			
		||||
			cpuinfo[i].VendorID = field[1]
 | 
			
		||||
		case "clock":
 | 
			
		||||
			clock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1]))
 | 
			
		||||
			v, err := strconv.ParseFloat(clock, 64)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			cpuinfo[i].CPUMHz = v
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return cpuinfo, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// firstNonEmptyLine advances the scanner to the first non-empty line
 | 
			
		||||
// and returns the contents of that line
 | 
			
		||||
func firstNonEmptyLine(scanner *bufio.Scanner) string {
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		line := scanner.Text()
 | 
			
		||||
		if strings.TrimSpace(line) != "" {
 | 
			
		||||
			return line
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoARM
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
// +build arm64
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoARM
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_default.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_default.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
// +build 386 amd64
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoX86
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoMips
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoMips
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoMips
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoMips
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoPPC
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoPPC
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
var parseCPUInfo = parseCPUInfoS390X
 | 
			
		||||
							
								
								
									
										737
									
								
								vendor/github.com/prometheus/procfs/fixtures.ttar
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										737
									
								
								vendor/github.com/prometheus/procfs/fixtures.ttar
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -173,6 +173,283 @@ Lines: 1
 | 
			
		|||
411605849 93680043 79
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/26231/smaps
 | 
			
		||||
Lines: 252
 | 
			
		||||
00400000-00cb1000 r-xp 00000000 fd:01 952273                             /bin/alertmanager
 | 
			
		||||
Size:               8900 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                2952 kB
 | 
			
		||||
Pss:                2952 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:      2952 kB
 | 
			
		||||
Private_Dirty:         0 kB
 | 
			
		||||
Referenced:         2864 kB
 | 
			
		||||
Anonymous:             0 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd ex mr mw me dw sd 
 | 
			
		||||
00cb1000-016b0000 r--p 008b1000 fd:01 952273                             /bin/alertmanager
 | 
			
		||||
Size:              10236 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                6152 kB
 | 
			
		||||
Pss:                6152 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:      6152 kB
 | 
			
		||||
Private_Dirty:         0 kB
 | 
			
		||||
Referenced:         5308 kB
 | 
			
		||||
Anonymous:             0 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd mr mw me dw sd 
 | 
			
		||||
016b0000-0171a000 rw-p 012b0000 fd:01 952273                             /bin/alertmanager
 | 
			
		||||
Size:                424 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                 176 kB
 | 
			
		||||
Pss:                 176 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:        84 kB
 | 
			
		||||
Private_Dirty:        92 kB
 | 
			
		||||
Referenced:          176 kB
 | 
			
		||||
Anonymous:            92 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                 12 kB
 | 
			
		||||
SwapPss:              12 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me dw ac sd 
 | 
			
		||||
0171a000-0173f000 rw-p 00000000 00:00 0 
 | 
			
		||||
Size:                148 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                  76 kB
 | 
			
		||||
Pss:                  76 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:         0 kB
 | 
			
		||||
Private_Dirty:        76 kB
 | 
			
		||||
Referenced:           76 kB
 | 
			
		||||
Anonymous:            76 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me ac sd 
 | 
			
		||||
c000000000-c000400000 rw-p 00000000 00:00 0 
 | 
			
		||||
Size:               4096 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                2564 kB
 | 
			
		||||
Pss:                2564 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:        20 kB
 | 
			
		||||
Private_Dirty:      2544 kB
 | 
			
		||||
Referenced:         2544 kB
 | 
			
		||||
Anonymous:          2564 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:               1100 kB
 | 
			
		||||
SwapPss:            1100 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me ac sd 
 | 
			
		||||
c000400000-c001600000 rw-p 00000000 00:00 0 
 | 
			
		||||
Size:              18432 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:               16024 kB
 | 
			
		||||
Pss:               16024 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:      5864 kB
 | 
			
		||||
Private_Dirty:     10160 kB
 | 
			
		||||
Referenced:        11944 kB
 | 
			
		||||
Anonymous:         16024 kB
 | 
			
		||||
LazyFree:           5848 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                440 kB
 | 
			
		||||
SwapPss:             440 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me ac sd nh 
 | 
			
		||||
c001600000-c004000000 rw-p 00000000 00:00 0 
 | 
			
		||||
Size:              43008 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                   0 kB
 | 
			
		||||
Pss:                   0 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:         0 kB
 | 
			
		||||
Private_Dirty:         0 kB
 | 
			
		||||
Referenced:            0 kB
 | 
			
		||||
Anonymous:             0 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me ac sd 
 | 
			
		||||
7f0ab95ca000-7f0abbb7b000 rw-p 00000000 00:00 0 
 | 
			
		||||
Size:              38596 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                1992 kB
 | 
			
		||||
Pss:                1992 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:       476 kB
 | 
			
		||||
Private_Dirty:      1516 kB
 | 
			
		||||
Referenced:         1828 kB
 | 
			
		||||
Anonymous:          1992 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                384 kB
 | 
			
		||||
SwapPss:             384 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me ac sd 
 | 
			
		||||
7ffc07ecf000-7ffc07ef0000 rw-p 00000000 00:00 0                          [stack]
 | 
			
		||||
Size:                132 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                   8 kB
 | 
			
		||||
Pss:                   8 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:         0 kB
 | 
			
		||||
Private_Dirty:         8 kB
 | 
			
		||||
Referenced:            8 kB
 | 
			
		||||
Anonymous:             8 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  4 kB
 | 
			
		||||
SwapPss:               4 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd wr mr mw me gd ac 
 | 
			
		||||
7ffc07f9e000-7ffc07fa1000 r--p 00000000 00:00 0                          [vvar]
 | 
			
		||||
Size:                 12 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                   0 kB
 | 
			
		||||
Pss:                   0 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:         0 kB
 | 
			
		||||
Private_Dirty:         0 kB
 | 
			
		||||
Referenced:            0 kB
 | 
			
		||||
Anonymous:             0 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd mr pf io de dd sd 
 | 
			
		||||
7ffc07fa1000-7ffc07fa3000 r-xp 00000000 00:00 0                          [vdso]
 | 
			
		||||
Size:                  8 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                   4 kB
 | 
			
		||||
Pss:                   0 kB
 | 
			
		||||
Shared_Clean:          4 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:         0 kB
 | 
			
		||||
Private_Dirty:         0 kB
 | 
			
		||||
Referenced:            4 kB
 | 
			
		||||
Anonymous:             0 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd ex mr mw me de sd 
 | 
			
		||||
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
 | 
			
		||||
Size:                  4 kB
 | 
			
		||||
KernelPageSize:        4 kB
 | 
			
		||||
MMUPageSize:           4 kB
 | 
			
		||||
Rss:                   0 kB
 | 
			
		||||
Pss:                   0 kB
 | 
			
		||||
Shared_Clean:          0 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:         0 kB
 | 
			
		||||
Private_Dirty:         0 kB
 | 
			
		||||
Referenced:            0 kB
 | 
			
		||||
Anonymous:             0 kB
 | 
			
		||||
LazyFree:              0 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:                  0 kB
 | 
			
		||||
SwapPss:               0 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
VmFlags: rd ex 
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/26231/smaps_rollup
 | 
			
		||||
Lines: 17
 | 
			
		||||
00400000-ffffffffff601000 ---p 00000000 00:00 0                          [rollup]
 | 
			
		||||
Rss:               29948 kB
 | 
			
		||||
Pss:               29944 kB
 | 
			
		||||
Shared_Clean:          4 kB
 | 
			
		||||
Shared_Dirty:          0 kB
 | 
			
		||||
Private_Clean:     15548 kB
 | 
			
		||||
Private_Dirty:     14396 kB
 | 
			
		||||
Referenced:        24752 kB
 | 
			
		||||
Anonymous:         20756 kB
 | 
			
		||||
LazyFree:           5848 kB
 | 
			
		||||
AnonHugePages:         0 kB
 | 
			
		||||
ShmemPmdMapped:        0 kB
 | 
			
		||||
Shared_Hugetlb:        0 kB
 | 
			
		||||
Private_Hugetlb:       0 kB
 | 
			
		||||
Swap:               1940 kB
 | 
			
		||||
SwapPss:            1940 kB
 | 
			
		||||
Locked:                0 kB
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/26231/stat
 | 
			
		||||
Lines: 1
 | 
			
		||||
26231 (vim) R 5392 7446 5392 34835 7446 4218880 32533 309516 26 82 1677 44 158 99 20 0 1 0 82375 56274944 1981 18446744073709551615 4194304 6294284 140736914091744 140736914087944 139965136429984 0 0 12288 1870679807 0 0 0 17 0 0 0 31 0 0 8391624 8481048 16420864 140736914093252 140736914093279 140736914093279 140736914096107 0
 | 
			
		||||
| 
						 | 
				
			
			@ -235,6 +512,11 @@ voluntary_ctxt_switches:	4742839
 | 
			
		|||
nonvoluntary_ctxt_switches:	1727500
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/26231/wchan
 | 
			
		||||
Lines: 1
 | 
			
		||||
poll_schedule_timeoutEOF
 | 
			
		||||
Mode: 664
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/26232
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
| 
						 | 
				
			
			@ -310,6 +592,11 @@ Lines: 1
 | 
			
		|||
33 (ata_sff) S 2 0 0 0 -1 69238880 0 0 0 0 0 0 0 0 0 -20 1 0 5 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744073709551615 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/26232/wchan
 | 
			
		||||
Lines: 1
 | 
			
		||||
0EOF
 | 
			
		||||
Mode: 664
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/26233
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
| 
						 | 
				
			
			@ -1554,7 +1841,7 @@ max keysize  : 32
 | 
			
		|||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/diskstats
 | 
			
		||||
Lines: 49
 | 
			
		||||
Lines: 52
 | 
			
		||||
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0
 | 
			
		||||
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0
 | 
			
		||||
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0
 | 
			
		||||
| 
						 | 
				
			
			@ -1604,11 +1891,45 @@ Lines: 49
 | 
			
		|||
   8       0 sdb 326552 841 9657779 84 41822 2895 1972905 5007 0 60730 67070 68851 0 1925173784 11130
 | 
			
		||||
   8       1 sdb1 231 3 34466 4 24 23 106 0 0 64 64 0 0 0 0
 | 
			
		||||
   8       2 sdb2 326310 838 9622281 67 40726 2872 1972799 4924 0 58250 64567 68851 0 1925173784 11130
 | 
			
		||||
   8       0 sdc 14202 71 579164 21861 2995 1589 180500 40875 0 11628 55200 0 0 0 0 127 182
 | 
			
		||||
   8       1 sdc1 1027 0 13795 5021 2 0 4096 3 0 690 4579 0 0 0 0 0 0
 | 
			
		||||
   8       2 sdc2 13126 71 561749 16802 2830 1589 176404 40620 0 10931 50449 0 0 0 0 0 0
 | 
			
		||||
Mode: 664
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/fs
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/fs/fscache
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/fs/fscache/stats
 | 
			
		||||
Lines: 24
 | 
			
		||||
FS-Cache statistics
 | 
			
		||||
Cookies: idx=3 dat=67877 spc=0
 | 
			
		||||
Objects: alc=67473 nal=0 avl=67473 ded=388
 | 
			
		||||
ChkAux : non=12 ok=33 upd=44 obs=55
 | 
			
		||||
Pages  : mrk=547164 unc=364577
 | 
			
		||||
Acquire: n=67880 nul=98 noc=25 ok=67780 nbf=39 oom=26
 | 
			
		||||
Lookups: n=67473 neg=67470 pos=58 crt=67473 tmo=85
 | 
			
		||||
Invals : n=14 run=13
 | 
			
		||||
Updates: n=7 nul=3 run=8
 | 
			
		||||
Relinqs: n=394 nul=1 wcr=2 rtr=3
 | 
			
		||||
AttrChg: n=6 ok=5 nbf=4 oom=3 run=2
 | 
			
		||||
Allocs : n=20 ok=19 wt=18 nbf=17 int=16
 | 
			
		||||
Allocs : ops=15 owt=14 abt=13
 | 
			
		||||
Retrvls: n=151959 ok=82823 wt=23467 nod=69136 nbf=15 int=69 oom=43
 | 
			
		||||
Retrvls: ops=151959 owt=42747 abt=44
 | 
			
		||||
Stores : n=225565 ok=225565 agn=12 nbf=13 oom=14
 | 
			
		||||
Stores : ops=69156 run=294721 pgs=225565 rxd=225565 olm=43
 | 
			
		||||
VmScan : nos=364512 gon=2 bsy=43 can=12 wt=66
 | 
			
		||||
Ops    : pend=42753 run=221129 enq=628798 can=11 rej=88
 | 
			
		||||
Ops    : ini=377538 dfr=27 rel=377538 gc=37
 | 
			
		||||
CacheOp: alo=1 luo=2 luc=3 gro=4
 | 
			
		||||
CacheOp: inv=5 upo=6 dro=7 pto=8 atc=9 syn=10
 | 
			
		||||
CacheOp: rap=11 ras=12 alp=13 als=14 wrp=15 ucp=16 dsp=17
 | 
			
		||||
CacheEv: nsp=18 stl=19 rtr=20 cul=21EOF
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/fs/xfs
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
| 
						 | 
				
			
			@ -2025,6 +2346,32 @@ Mode: 644
 | 
			
		|||
Directory: fixtures/proc/sys
 | 
			
		||||
Mode: 775
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/sys/kernel
 | 
			
		||||
Mode: 775
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/sys/kernel/random
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/sys/kernel/random/entropy_avail
 | 
			
		||||
Lines: 1
 | 
			
		||||
3943
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/sys/kernel/random/poolsize
 | 
			
		||||
Lines: 1
 | 
			
		||||
4096
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/sys/kernel/random/urandom_min_reseed_secs
 | 
			
		||||
Lines: 1
 | 
			
		||||
60
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/proc/sys/kernel/random/write_wakeup_threshold
 | 
			
		||||
Lines: 1
 | 
			
		||||
3072
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/proc/sys/vm
 | 
			
		||||
Mode: 775
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
| 
						 | 
				
			
			@ -2526,6 +2873,237 @@ Mode: 664
 | 
			
		|||
Directory: fixtures/sys/block/sda
 | 
			
		||||
Mode: 775
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/sys/block/sda/queue
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/add_random
 | 
			
		||||
Lines: 1
 | 
			
		||||
1
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/chunk_sectors
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/dax
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/discard_granularity
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/discard_max_bytes
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/discard_max_hw_bytes
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/discard_zeroes_data
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/fua
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/hw_sector_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
512
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/io_poll
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/io_poll_delay
 | 
			
		||||
Lines: 1
 | 
			
		||||
-1
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/io_timeout
 | 
			
		||||
Lines: 1
 | 
			
		||||
30000
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/sys/block/sda/queue/iosched
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/back_seek_max
 | 
			
		||||
Lines: 1
 | 
			
		||||
16384
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/back_seek_penalty
 | 
			
		||||
Lines: 1
 | 
			
		||||
2
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/fifo_expire_async
 | 
			
		||||
Lines: 1
 | 
			
		||||
250
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/fifo_expire_sync
 | 
			
		||||
Lines: 1
 | 
			
		||||
125
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/low_latency
 | 
			
		||||
Lines: 1
 | 
			
		||||
1
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/max_budget
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/slice_idle
 | 
			
		||||
Lines: 1
 | 
			
		||||
8
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/slice_idle_us
 | 
			
		||||
Lines: 1
 | 
			
		||||
8000
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/strict_guarantees
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iosched/timeout_sync
 | 
			
		||||
Lines: 1
 | 
			
		||||
125
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/iostats
 | 
			
		||||
Lines: 1
 | 
			
		||||
1
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/logical_block_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
512
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/max_discard_segments
 | 
			
		||||
Lines: 1
 | 
			
		||||
1
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/max_hw_sectors_kb
 | 
			
		||||
Lines: 1
 | 
			
		||||
32767
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/max_integrity_segments
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/max_sectors_kb
 | 
			
		||||
Lines: 1
 | 
			
		||||
1280
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/max_segment_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
65536
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/max_segments
 | 
			
		||||
Lines: 1
 | 
			
		||||
168
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/minimum_io_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
512
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/nomerges
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/nr_requests
 | 
			
		||||
Lines: 1
 | 
			
		||||
64
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/nr_zones
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/optimal_io_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/physical_block_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
512
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/read_ahead_kb
 | 
			
		||||
Lines: 1
 | 
			
		||||
128
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/rotational
 | 
			
		||||
Lines: 1
 | 
			
		||||
1
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/rq_affinity
 | 
			
		||||
Lines: 1
 | 
			
		||||
1
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/scheduler
 | 
			
		||||
Lines: 1
 | 
			
		||||
mq-deadline kyber [bfq] none
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/wbt_lat_usec
 | 
			
		||||
Lines: 1
 | 
			
		||||
75000
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/write_cache
 | 
			
		||||
Lines: 1
 | 
			
		||||
write back
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/write_same_max_bytes
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/write_zeroes_max_bytes
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/queue/zoned
 | 
			
		||||
Lines: 1
 | 
			
		||||
none
 | 
			
		||||
Mode: 444
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/block/sda/stat
 | 
			
		||||
Lines: 1
 | 
			
		||||
9652963   396792 759304206   412943  8422549  6731723 286915323 13947418        0  5658367 19174573 1 2 3 12
 | 
			
		||||
| 
						 | 
				
			
			@ -2534,6 +3112,140 @@ Mode: 664
 | 
			
		|||
Directory: fixtures/sys/class
 | 
			
		||||
Mode: 775
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/sys/class/fc_host
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/sys/class/fc_host/host0
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/dev_loss_tmo
 | 
			
		||||
Lines: 1
 | 
			
		||||
30
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/fabric_name
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/node_name
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x2000e0071bce95f2
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/port_id
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x000002
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/port_name
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x1000e0071bce95f2
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/port_state
 | 
			
		||||
Lines: 1
 | 
			
		||||
Online
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/port_type
 | 
			
		||||
Lines: 1
 | 
			
		||||
Point-To-Point (direct nport connection)
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/speed
 | 
			
		||||
Lines: 1
 | 
			
		||||
16 Gbit
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/sys/class/fc_host/host0/statistics
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/dumped_frames
 | 
			
		||||
Lines: 1
 | 
			
		||||
0xffffffffffffffff
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/error_frames
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/fcp_packet_aborts
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x13
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/invalid_crc_count
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x2
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/invalid_tx_word_count
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x8
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/link_failure_count
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x9
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/loss_of_signal_count
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x11
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/loss_of_sync_count
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x10
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/nos_count
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x12
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/rx_frames
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x3
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/rx_words
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x4
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/seconds_since_last_reset
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x7
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/tx_frames
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x5
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/statistics/tx_words
 | 
			
		||||
Lines: 1
 | 
			
		||||
0x6
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/supported_classes
 | 
			
		||||
Lines: 1
 | 
			
		||||
Class 3
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/supported_speeds
 | 
			
		||||
Lines: 1
 | 
			
		||||
4 Gbit, 8 Gbit, 16 Gbit
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/fc_host/host0/symbolic_name
 | 
			
		||||
Lines: 1
 | 
			
		||||
Emulex SN1100E2P FV12.4.270.3 DV12.4.0.0. HN:gotest. OS:Linux
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Directory: fixtures/sys/class/infiniband
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
| 
						 | 
				
			
			@ -2564,6 +3276,11 @@ Mode: 755
 | 
			
		|||
Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/VL15_dropped
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 664
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/excessive_buffer_overrun_errors
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
| 
						 | 
				
			
			@ -2665,6 +3382,11 @@ Mode: 755
 | 
			
		|||
Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters
 | 
			
		||||
Mode: 755
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/VL15_dropped
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
Mode: 664
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/excessive_buffer_overrun_errors
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
| 
						 | 
				
			
			@ -3109,7 +3831,7 @@ Mode: 664
 | 
			
		|||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/thermal/thermal_zone1/temp
 | 
			
		||||
Lines: 1
 | 
			
		||||
44000
 | 
			
		||||
-44000
 | 
			
		||||
Mode: 664
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/class/thermal/thermal_zone1/type
 | 
			
		||||
| 
						 | 
				
			
			@ -4287,6 +5009,17 @@ Lines: 1
 | 
			
		|||
0
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/writeback_rate_debug
 | 
			
		||||
Lines: 7
 | 
			
		||||
rate:           1.1M/sec
 | 
			
		||||
dirty:          20.4G
 | 
			
		||||
target:         20.4G
 | 
			
		||||
proportional:   427.5k
 | 
			
		||||
integral:       790.0k
 | 
			
		||||
change:         321.5k/sec
 | 
			
		||||
next io:        17ms
 | 
			
		||||
Mode: 644
 | 
			
		||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
			
		||||
Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/btree_cache_size
 | 
			
		||||
Lines: 1
 | 
			
		||||
0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										422
									
								
								vendor/github.com/prometheus/procfs/fscache.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										422
									
								
								vendor/github.com/prometheus/procfs/fscache.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,422 @@
 | 
			
		|||
// Copyright 2019 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/prometheus/procfs/internal/util"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Fscacheinfo represents fscache statistics.
 | 
			
		||||
type Fscacheinfo struct {
 | 
			
		||||
	// Number of index cookies allocated
 | 
			
		||||
	IndexCookiesAllocated uint64
 | 
			
		||||
	// data storage cookies allocated
 | 
			
		||||
	DataStorageCookiesAllocated uint64
 | 
			
		||||
	// Number of special cookies allocated
 | 
			
		||||
	SpecialCookiesAllocated uint64
 | 
			
		||||
	// Number of objects allocated
 | 
			
		||||
	ObjectsAllocated uint64
 | 
			
		||||
	// Number of object allocation failures
 | 
			
		||||
	ObjectAllocationsFailure uint64
 | 
			
		||||
	// Number of objects that reached the available state
 | 
			
		||||
	ObjectsAvailable uint64
 | 
			
		||||
	// Number of objects that reached the dead state
 | 
			
		||||
	ObjectsDead uint64
 | 
			
		||||
	// Number of objects that didn't have a coherency check
 | 
			
		||||
	ObjectsWithoutCoherencyCheck uint64
 | 
			
		||||
	// Number of objects that passed a coherency check
 | 
			
		||||
	ObjectsWithCoherencyCheck uint64
 | 
			
		||||
	// Number of objects that needed a coherency data update
 | 
			
		||||
	ObjectsNeedCoherencyCheckUpdate uint64
 | 
			
		||||
	// Number of objects that were declared obsolete
 | 
			
		||||
	ObjectsDeclaredObsolete uint64
 | 
			
		||||
	// Number of pages marked as being cached
 | 
			
		||||
	PagesMarkedAsBeingCached uint64
 | 
			
		||||
	// Number of uncache page requests seen
 | 
			
		||||
	UncachePagesRequestSeen uint64
 | 
			
		||||
	// Number of acquire cookie requests seen
 | 
			
		||||
	AcquireCookiesRequestSeen uint64
 | 
			
		||||
	// Number of acq reqs given a NULL parent
 | 
			
		||||
	AcquireRequestsWithNullParent uint64
 | 
			
		||||
	// Number of acq reqs rejected due to no cache available
 | 
			
		||||
	AcquireRequestsRejectedNoCacheAvailable uint64
 | 
			
		||||
	// Number of acq reqs succeeded
 | 
			
		||||
	AcquireRequestsSucceeded uint64
 | 
			
		||||
	// Number of acq reqs rejected due to error
 | 
			
		||||
	AcquireRequestsRejectedDueToError uint64
 | 
			
		||||
	// Number of acq reqs failed on ENOMEM
 | 
			
		||||
	AcquireRequestsFailedDueToEnomem uint64
 | 
			
		||||
	// Number of lookup calls made on cache backends
 | 
			
		||||
	LookupsNumber uint64
 | 
			
		||||
	// Number of negative lookups made
 | 
			
		||||
	LookupsNegative uint64
 | 
			
		||||
	// Number of positive lookups made
 | 
			
		||||
	LookupsPositive uint64
 | 
			
		||||
	// Number of objects created by lookup
 | 
			
		||||
	ObjectsCreatedByLookup uint64
 | 
			
		||||
	// Number of lookups timed out and requeued
 | 
			
		||||
	LookupsTimedOutAndRequed uint64
 | 
			
		||||
	InvalidationsNumber      uint64
 | 
			
		||||
	InvalidationsRunning     uint64
 | 
			
		||||
	// Number of update cookie requests seen
 | 
			
		||||
	UpdateCookieRequestSeen uint64
 | 
			
		||||
	// Number of upd reqs given a NULL parent
 | 
			
		||||
	UpdateRequestsWithNullParent uint64
 | 
			
		||||
	// Number of upd reqs granted CPU time
 | 
			
		||||
	UpdateRequestsRunning uint64
 | 
			
		||||
	// Number of relinquish cookie requests seen
 | 
			
		||||
	RelinquishCookiesRequestSeen uint64
 | 
			
		||||
	// Number of rlq reqs given a NULL parent
 | 
			
		||||
	RelinquishCookiesWithNullParent uint64
 | 
			
		||||
	// Number of rlq reqs waited on completion of creation
 | 
			
		||||
	RelinquishRequestsWaitingCompleteCreation uint64
 | 
			
		||||
	// Relinqs rtr
 | 
			
		||||
	RelinquishRetries uint64
 | 
			
		||||
	// Number of attribute changed requests seen
 | 
			
		||||
	AttributeChangedRequestsSeen uint64
 | 
			
		||||
	// Number of attr changed requests queued
 | 
			
		||||
	AttributeChangedRequestsQueued uint64
 | 
			
		||||
	// Number of attr changed rejected -ENOBUFS
 | 
			
		||||
	AttributeChangedRejectDueToEnobufs uint64
 | 
			
		||||
	// Number of attr changed failed -ENOMEM
 | 
			
		||||
	AttributeChangedFailedDueToEnomem uint64
 | 
			
		||||
	// Number of attr changed ops given CPU time
 | 
			
		||||
	AttributeChangedOps uint64
 | 
			
		||||
	// Number of allocation requests seen
 | 
			
		||||
	AllocationRequestsSeen uint64
 | 
			
		||||
	// Number of successful alloc reqs
 | 
			
		||||
	AllocationOkRequests uint64
 | 
			
		||||
	// Number of alloc reqs that waited on lookup completion
 | 
			
		||||
	AllocationWaitingOnLookup uint64
 | 
			
		||||
	// Number of alloc reqs rejected -ENOBUFS
 | 
			
		||||
	AllocationsRejectedDueToEnobufs uint64
 | 
			
		||||
	// Number of alloc reqs aborted -ERESTARTSYS
 | 
			
		||||
	AllocationsAbortedDueToErestartsys uint64
 | 
			
		||||
	// Number of alloc reqs submitted
 | 
			
		||||
	AllocationOperationsSubmitted uint64
 | 
			
		||||
	// Number of alloc reqs waited for CPU time
 | 
			
		||||
	AllocationsWaitedForCPU uint64
 | 
			
		||||
	// Number of alloc reqs aborted due to object death
 | 
			
		||||
	AllocationsAbortedDueToObjectDeath uint64
 | 
			
		||||
	// Number of retrieval (read) requests seen
 | 
			
		||||
	RetrievalsReadRequests uint64
 | 
			
		||||
	// Number of successful retr reqs
 | 
			
		||||
	RetrievalsOk uint64
 | 
			
		||||
	// Number of retr reqs that waited on lookup completion
 | 
			
		||||
	RetrievalsWaitingLookupCompletion uint64
 | 
			
		||||
	// Number of retr reqs returned -ENODATA
 | 
			
		||||
	RetrievalsReturnedEnodata uint64
 | 
			
		||||
	// Number of retr reqs rejected -ENOBUFS
 | 
			
		||||
	RetrievalsRejectedDueToEnobufs uint64
 | 
			
		||||
	// Number of retr reqs aborted -ERESTARTSYS
 | 
			
		||||
	RetrievalsAbortedDueToErestartsys uint64
 | 
			
		||||
	// Number of retr reqs failed -ENOMEM
 | 
			
		||||
	RetrievalsFailedDueToEnomem uint64
 | 
			
		||||
	// Number of retr reqs submitted
 | 
			
		||||
	RetrievalsRequests uint64
 | 
			
		||||
	// Number of retr reqs waited for CPU time
 | 
			
		||||
	RetrievalsWaitingCPU uint64
 | 
			
		||||
	// Number of retr reqs aborted due to object death
 | 
			
		||||
	RetrievalsAbortedDueToObjectDeath uint64
 | 
			
		||||
	// Number of storage (write) requests seen
 | 
			
		||||
	StoreWriteRequests uint64
 | 
			
		||||
	// Number of successful store reqs
 | 
			
		||||
	StoreSuccessfulRequests uint64
 | 
			
		||||
	// Number of store reqs on a page already pending storage
 | 
			
		||||
	StoreRequestsOnPendingStorage uint64
 | 
			
		||||
	// Number of store reqs rejected -ENOBUFS
 | 
			
		||||
	StoreRequestsRejectedDueToEnobufs uint64
 | 
			
		||||
	// Number of store reqs failed -ENOMEM
 | 
			
		||||
	StoreRequestsFailedDueToEnomem uint64
 | 
			
		||||
	// Number of store reqs submitted
 | 
			
		||||
	StoreRequestsSubmitted uint64
 | 
			
		||||
	// Number of store reqs granted CPU time
 | 
			
		||||
	StoreRequestsRunning uint64
 | 
			
		||||
	// Number of pages given store req processing time
 | 
			
		||||
	StorePagesWithRequestsProcessing uint64
 | 
			
		||||
	// Number of store reqs deleted from tracking tree
 | 
			
		||||
	StoreRequestsDeleted uint64
 | 
			
		||||
	// Number of store reqs over store limit
 | 
			
		||||
	StoreRequestsOverStoreLimit uint64
 | 
			
		||||
	// Number of release reqs against pages with no pending store
 | 
			
		||||
	ReleaseRequestsAgainstPagesWithNoPendingStorage uint64
 | 
			
		||||
	// Number of release reqs against pages stored by time lock granted
 | 
			
		||||
	ReleaseRequestsAgainstPagesStoredByTimeLockGranted uint64
 | 
			
		||||
	// Number of release reqs ignored due to in-progress store
 | 
			
		||||
	ReleaseRequestsIgnoredDueToInProgressStore uint64
 | 
			
		||||
	// Number of page stores cancelled due to release req
 | 
			
		||||
	PageStoresCancelledByReleaseRequests uint64
 | 
			
		||||
	VmscanWaiting                        uint64
 | 
			
		||||
	// Number of times async ops added to pending queues
 | 
			
		||||
	OpsPending uint64
 | 
			
		||||
	// Number of times async ops given CPU time
 | 
			
		||||
	OpsRunning uint64
 | 
			
		||||
	// Number of times async ops queued for processing
 | 
			
		||||
	OpsEnqueued uint64
 | 
			
		||||
	// Number of async ops cancelled
 | 
			
		||||
	OpsCancelled uint64
 | 
			
		||||
	// Number of async ops rejected due to object lookup/create failure
 | 
			
		||||
	OpsRejected uint64
 | 
			
		||||
	// Number of async ops initialised
 | 
			
		||||
	OpsInitialised uint64
 | 
			
		||||
	// Number of async ops queued for deferred release
 | 
			
		||||
	OpsDeferred uint64
 | 
			
		||||
	// Number of async ops released (should equal ini=N when idle)
 | 
			
		||||
	OpsReleased uint64
 | 
			
		||||
	// Number of deferred-release async ops garbage collected
 | 
			
		||||
	OpsGarbageCollected uint64
 | 
			
		||||
	// Number of in-progress alloc_object() cache ops
 | 
			
		||||
	CacheopAllocationsinProgress uint64
 | 
			
		||||
	// Number of in-progress lookup_object() cache ops
 | 
			
		||||
	CacheopLookupObjectInProgress uint64
 | 
			
		||||
	// Number of in-progress lookup_complete() cache ops
 | 
			
		||||
	CacheopLookupCompleteInPorgress uint64
 | 
			
		||||
	// Number of in-progress grab_object() cache ops
 | 
			
		||||
	CacheopGrabObjectInProgress uint64
 | 
			
		||||
	CacheopInvalidations        uint64
 | 
			
		||||
	// Number of in-progress update_object() cache ops
 | 
			
		||||
	CacheopUpdateObjectInProgress uint64
 | 
			
		||||
	// Number of in-progress drop_object() cache ops
 | 
			
		||||
	CacheopDropObjectInProgress uint64
 | 
			
		||||
	// Number of in-progress put_object() cache ops
 | 
			
		||||
	CacheopPutObjectInProgress uint64
 | 
			
		||||
	// Number of in-progress attr_changed() cache ops
 | 
			
		||||
	CacheopAttributeChangeInProgress uint64
 | 
			
		||||
	// Number of in-progress sync_cache() cache ops
 | 
			
		||||
	CacheopSyncCacheInProgress uint64
 | 
			
		||||
	// Number of in-progress read_or_alloc_page() cache ops
 | 
			
		||||
	CacheopReadOrAllocPageInProgress uint64
 | 
			
		||||
	// Number of in-progress read_or_alloc_pages() cache ops
 | 
			
		||||
	CacheopReadOrAllocPagesInProgress uint64
 | 
			
		||||
	// Number of in-progress allocate_page() cache ops
 | 
			
		||||
	CacheopAllocatePageInProgress uint64
 | 
			
		||||
	// Number of in-progress allocate_pages() cache ops
 | 
			
		||||
	CacheopAllocatePagesInProgress uint64
 | 
			
		||||
	// Number of in-progress write_page() cache ops
 | 
			
		||||
	CacheopWritePagesInProgress uint64
 | 
			
		||||
	// Number of in-progress uncache_page() cache ops
 | 
			
		||||
	CacheopUncachePagesInProgress uint64
 | 
			
		||||
	// Number of in-progress dissociate_pages() cache ops
 | 
			
		||||
	CacheopDissociatePagesInProgress uint64
 | 
			
		||||
	// Number of object lookups/creations rejected due to lack of space
 | 
			
		||||
	CacheevLookupsAndCreationsRejectedLackSpace uint64
 | 
			
		||||
	// Number of stale objects deleted
 | 
			
		||||
	CacheevStaleObjectsDeleted uint64
 | 
			
		||||
	// Number of objects retired when relinquished
 | 
			
		||||
	CacheevRetiredWhenReliquished uint64
 | 
			
		||||
	// Number of objects culled
 | 
			
		||||
	CacheevObjectsCulled uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Fscacheinfo returns information about current fscache statistics.
 | 
			
		||||
// See https://www.kernel.org/doc/Documentation/filesystems/caching/fscache.txt
 | 
			
		||||
func (fs FS) Fscacheinfo() (Fscacheinfo, error) {
 | 
			
		||||
	b, err := util.ReadFileNoStat(fs.proc.Path("fs/fscache/stats"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return Fscacheinfo{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	m, err := parseFscacheinfo(bytes.NewReader(b))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return Fscacheinfo{}, fmt.Errorf("failed to parse Fscacheinfo: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return *m, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func setFSCacheFields(fields []string, setFields ...*uint64) error {
 | 
			
		||||
	var err error
 | 
			
		||||
	if len(fields) < len(setFields) {
 | 
			
		||||
		return fmt.Errorf("Insufficient number of fields, expected %v, got %v", len(setFields), len(fields))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i := range setFields {
 | 
			
		||||
		*setFields[i], err = strconv.ParseUint(strings.Split(fields[i], "=")[1], 0, 64)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseFscacheinfo(r io.Reader) (*Fscacheinfo, error) {
 | 
			
		||||
	var m Fscacheinfo
 | 
			
		||||
	s := bufio.NewScanner(r)
 | 
			
		||||
	for s.Scan() {
 | 
			
		||||
		fields := strings.Fields(s.Text())
 | 
			
		||||
		if len(fields) < 2 {
 | 
			
		||||
			return nil, fmt.Errorf("malformed Fscacheinfo line: %q", s.Text())
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch fields[0] {
 | 
			
		||||
		case "Cookies:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.IndexCookiesAllocated, &m.DataStorageCookiesAllocated,
 | 
			
		||||
				&m.SpecialCookiesAllocated)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Objects:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.ObjectsAllocated, &m.ObjectAllocationsFailure,
 | 
			
		||||
				&m.ObjectsAvailable, &m.ObjectsDead)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "ChkAux":
 | 
			
		||||
			err := setFSCacheFields(fields[2:], &m.ObjectsWithoutCoherencyCheck, &m.ObjectsWithCoherencyCheck,
 | 
			
		||||
				&m.ObjectsNeedCoherencyCheckUpdate, &m.ObjectsDeclaredObsolete)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Pages":
 | 
			
		||||
			err := setFSCacheFields(fields[2:], &m.PagesMarkedAsBeingCached, &m.UncachePagesRequestSeen)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Acquire:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.AcquireCookiesRequestSeen, &m.AcquireRequestsWithNullParent,
 | 
			
		||||
				&m.AcquireRequestsRejectedNoCacheAvailable, &m.AcquireRequestsSucceeded, &m.AcquireRequestsRejectedDueToError,
 | 
			
		||||
				&m.AcquireRequestsFailedDueToEnomem)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Lookups:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.LookupsNumber, &m.LookupsNegative, &m.LookupsPositive,
 | 
			
		||||
				&m.ObjectsCreatedByLookup, &m.LookupsTimedOutAndRequed)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Invals":
 | 
			
		||||
			err := setFSCacheFields(fields[2:], &m.InvalidationsNumber, &m.InvalidationsRunning)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Updates:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.UpdateCookieRequestSeen, &m.UpdateRequestsWithNullParent,
 | 
			
		||||
				&m.UpdateRequestsRunning)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Relinqs:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.RelinquishCookiesRequestSeen, &m.RelinquishCookiesWithNullParent,
 | 
			
		||||
				&m.RelinquishRequestsWaitingCompleteCreation, &m.RelinquishRetries)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "AttrChg:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.AttributeChangedRequestsSeen, &m.AttributeChangedRequestsQueued,
 | 
			
		||||
				&m.AttributeChangedRejectDueToEnobufs, &m.AttributeChangedFailedDueToEnomem, &m.AttributeChangedOps)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Allocs":
 | 
			
		||||
			if strings.Split(fields[2], "=")[0] == "n" {
 | 
			
		||||
				err := setFSCacheFields(fields[2:], &m.AllocationRequestsSeen, &m.AllocationOkRequests,
 | 
			
		||||
					&m.AllocationWaitingOnLookup, &m.AllocationsRejectedDueToEnobufs, &m.AllocationsAbortedDueToErestartsys)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				err := setFSCacheFields(fields[2:], &m.AllocationOperationsSubmitted, &m.AllocationsWaitedForCPU,
 | 
			
		||||
					&m.AllocationsAbortedDueToObjectDeath)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case "Retrvls:":
 | 
			
		||||
			if strings.Split(fields[1], "=")[0] == "n" {
 | 
			
		||||
				err := setFSCacheFields(fields[1:], &m.RetrievalsReadRequests, &m.RetrievalsOk, &m.RetrievalsWaitingLookupCompletion,
 | 
			
		||||
					&m.RetrievalsReturnedEnodata, &m.RetrievalsRejectedDueToEnobufs, &m.RetrievalsAbortedDueToErestartsys,
 | 
			
		||||
					&m.RetrievalsFailedDueToEnomem)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				err := setFSCacheFields(fields[1:], &m.RetrievalsRequests, &m.RetrievalsWaitingCPU, &m.RetrievalsAbortedDueToObjectDeath)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case "Stores":
 | 
			
		||||
			if strings.Split(fields[2], "=")[0] == "n" {
 | 
			
		||||
				err := setFSCacheFields(fields[2:], &m.StoreWriteRequests, &m.StoreSuccessfulRequests,
 | 
			
		||||
					&m.StoreRequestsOnPendingStorage, &m.StoreRequestsRejectedDueToEnobufs, &m.StoreRequestsFailedDueToEnomem)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				err := setFSCacheFields(fields[2:], &m.StoreRequestsSubmitted, &m.StoreRequestsRunning,
 | 
			
		||||
					&m.StorePagesWithRequestsProcessing, &m.StoreRequestsDeleted, &m.StoreRequestsOverStoreLimit)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case "VmScan":
 | 
			
		||||
			err := setFSCacheFields(fields[2:], &m.ReleaseRequestsAgainstPagesWithNoPendingStorage,
 | 
			
		||||
				&m.ReleaseRequestsAgainstPagesStoredByTimeLockGranted, &m.ReleaseRequestsIgnoredDueToInProgressStore,
 | 
			
		||||
				&m.PageStoresCancelledByReleaseRequests, &m.VmscanWaiting)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		case "Ops":
 | 
			
		||||
			if strings.Split(fields[2], "=")[0] == "pend" {
 | 
			
		||||
				err := setFSCacheFields(fields[2:], &m.OpsPending, &m.OpsRunning, &m.OpsEnqueued, &m.OpsCancelled, &m.OpsRejected)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				err := setFSCacheFields(fields[2:], &m.OpsInitialised, &m.OpsDeferred, &m.OpsReleased, &m.OpsGarbageCollected)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case "CacheOp:":
 | 
			
		||||
			if strings.Split(fields[1], "=")[0] == "alo" {
 | 
			
		||||
				err := setFSCacheFields(fields[1:], &m.CacheopAllocationsinProgress, &m.CacheopLookupObjectInProgress,
 | 
			
		||||
					&m.CacheopLookupCompleteInPorgress, &m.CacheopGrabObjectInProgress)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			} else if strings.Split(fields[1], "=")[0] == "inv" {
 | 
			
		||||
				err := setFSCacheFields(fields[1:], &m.CacheopInvalidations, &m.CacheopUpdateObjectInProgress,
 | 
			
		||||
					&m.CacheopDropObjectInProgress, &m.CacheopPutObjectInProgress, &m.CacheopAttributeChangeInProgress,
 | 
			
		||||
					&m.CacheopSyncCacheInProgress)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				err := setFSCacheFields(fields[1:], &m.CacheopReadOrAllocPageInProgress, &m.CacheopReadOrAllocPagesInProgress,
 | 
			
		||||
					&m.CacheopAllocatePageInProgress, &m.CacheopAllocatePagesInProgress, &m.CacheopWritePagesInProgress,
 | 
			
		||||
					&m.CacheopUncachePagesInProgress, &m.CacheopDissociatePagesInProgress)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return &m, err
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case "CacheEv:":
 | 
			
		||||
			err := setFSCacheFields(fields[1:], &m.CacheevLookupsAndCreationsRejectedLackSpace, &m.CacheevStaleObjectsDeleted,
 | 
			
		||||
				&m.CacheevRetiredWhenReliquished, &m.CacheevObjectsCulled)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return &m, err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &m, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/github.com/prometheus/procfs/internal/util/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/prometheus/procfs/internal/util/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -73,6 +73,15 @@ func ReadUintFromFile(path string) (uint64, error) {
 | 
			
		|||
	return strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadIntFromFile reads a file and attempts to parse a int64 from it.
 | 
			
		||||
func ReadIntFromFile(path string) (int64, error) {
 | 
			
		||||
	data, err := ioutil.ReadFile(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParseBool parses a string into a boolean pointer.
 | 
			
		||||
func ParseBool(b string) *bool {
 | 
			
		||||
	var truth bool
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										62
									
								
								vendor/github.com/prometheus/procfs/kernel_random.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								vendor/github.com/prometheus/procfs/kernel_random.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build !windows
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/prometheus/procfs/internal/util"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// KernelRandom contains information about to the kernel's random number generator.
 | 
			
		||||
type KernelRandom struct {
 | 
			
		||||
	// EntropyAvaliable gives the available entropy, in bits.
 | 
			
		||||
	EntropyAvaliable *uint64
 | 
			
		||||
	// PoolSize gives the size of the entropy pool, in bytes.
 | 
			
		||||
	PoolSize *uint64
 | 
			
		||||
	// URandomMinReseedSeconds is the number of seconds after which the DRNG will be reseeded.
 | 
			
		||||
	URandomMinReseedSeconds *uint64
 | 
			
		||||
	// WriteWakeupThreshold the number of bits of entropy below which we wake up processes
 | 
			
		||||
	// that do a select(2) or poll(2) for write access to /dev/random.
 | 
			
		||||
	WriteWakeupThreshold *uint64
 | 
			
		||||
	// ReadWakeupThreshold is the number of bits of entropy required for waking up processes that sleep
 | 
			
		||||
	// waiting for entropy from /dev/random.
 | 
			
		||||
	ReadWakeupThreshold *uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// KernelRandom returns values from /proc/sys/kernel/random.
 | 
			
		||||
func (fs FS) KernelRandom() (KernelRandom, error) {
 | 
			
		||||
	random := KernelRandom{}
 | 
			
		||||
 | 
			
		||||
	for file, p := range map[string]**uint64{
 | 
			
		||||
		"entropy_avail":           &random.EntropyAvaliable,
 | 
			
		||||
		"poolsize":                &random.PoolSize,
 | 
			
		||||
		"urandom_min_reseed_secs": &random.URandomMinReseedSeconds,
 | 
			
		||||
		"write_wakeup_threshold":  &random.WriteWakeupThreshold,
 | 
			
		||||
		"read_wakeup_threshold":   &random.ReadWakeupThreshold,
 | 
			
		||||
	} {
 | 
			
		||||
		val, err := util.ReadUintFromFile(fs.proc.Path("sys", "kernel", "random", file))
 | 
			
		||||
		if os.IsNotExist(err) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return random, err
 | 
			
		||||
		}
 | 
			
		||||
		*p = &val
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return random, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/procfs/mdstat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/procfs/mdstat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -52,7 +52,7 @@ type MDStat struct {
 | 
			
		|||
func (fs FS) MDStat() ([]MDStat, error) {
 | 
			
		||||
	data, err := ioutil.ReadFile(fs.proc.Path("mdstat"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("error parsing mdstat %s: %s", fs.proc.Path("mdstat"), err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	mdstat, err := parseMDStat(data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										8
									
								
								vendor/github.com/prometheus/procfs/mountinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/prometheus/procfs/mountinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -77,7 +77,7 @@ func parseMountInfoString(mountString string) (*MountInfo, error) {
 | 
			
		|||
 | 
			
		||||
	mountInfo := strings.Split(mountString, " ")
 | 
			
		||||
	mountInfoLength := len(mountInfo)
 | 
			
		||||
	if mountInfoLength < 11 {
 | 
			
		||||
	if mountInfoLength < 10 {
 | 
			
		||||
		return nil, fmt.Errorf("couldn't find enough fields in mount string: %s", mountString)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +144,7 @@ func mountOptionsParseOptionalFields(o []string) (map[string]string, error) {
 | 
			
		|||
	return optionalFields, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Parses the mount options, superblock options.
 | 
			
		||||
// mountOptionsParser parses the mount options, superblock options.
 | 
			
		||||
func mountOptionsParser(mountOptions string) map[string]string {
 | 
			
		||||
	opts := make(map[string]string)
 | 
			
		||||
	options := strings.Split(mountOptions, ",")
 | 
			
		||||
| 
						 | 
				
			
			@ -161,7 +161,7 @@ func mountOptionsParser(mountOptions string) map[string]string {
 | 
			
		|||
	return opts
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Retrieves mountinfo information from `/proc/self/mountinfo`.
 | 
			
		||||
// GetMounts retrieves mountinfo information from `/proc/self/mountinfo`.
 | 
			
		||||
func GetMounts() ([]*MountInfo, error) {
 | 
			
		||||
	data, err := util.ReadFileNoStat("/proc/self/mountinfo")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +170,7 @@ func GetMounts() ([]*MountInfo, error) {
 | 
			
		|||
	return parseMountInfo(data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Retrieves mountinfo information from a processes' `/proc/<pid>/mountinfo`.
 | 
			
		||||
// GetProcMounts retrieves mountinfo information from a processes' `/proc/<pid>/mountinfo`.
 | 
			
		||||
func GetProcMounts(pid int) ([]*MountInfo, error) {
 | 
			
		||||
	data, err := util.ReadFileNoStat(fmt.Sprintf("/proc/%d/mountinfo", pid))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								vendor/github.com/prometheus/procfs/mountstats.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/prometheus/procfs/mountstats.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -186,6 +186,8 @@ type NFSOperationStats struct {
 | 
			
		|||
	CumulativeTotalResponseMilliseconds uint64
 | 
			
		||||
	// Duration from when a request was enqueued to when it was completely handled.
 | 
			
		||||
	CumulativeTotalRequestMilliseconds uint64
 | 
			
		||||
	// The count of operations that complete with tk_status < 0.  These statuses usually indicate error conditions.
 | 
			
		||||
	Errors uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A NFSTransportStats contains statistics for the NFS mount RPC requests and
 | 
			
		||||
| 
						 | 
				
			
			@ -494,8 +496,8 @@ func parseNFSEventsStats(ss []string) (*NFSEventsStats, error) {
 | 
			
		|||
// line is reached.
 | 
			
		||||
func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) {
 | 
			
		||||
	const (
 | 
			
		||||
		// Number of expected fields in each per-operation statistics set
 | 
			
		||||
		numFields = 9
 | 
			
		||||
		// Minimum number of expected fields in each per-operation statistics set
 | 
			
		||||
		minFields = 9
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	var ops []NFSOperationStats
 | 
			
		||||
| 
						 | 
				
			
			@ -508,12 +510,12 @@ func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) {
 | 
			
		|||
			break
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(ss) != numFields {
 | 
			
		||||
		if len(ss) < minFields {
 | 
			
		||||
			return nil, fmt.Errorf("invalid NFS per-operations stats: %v", ss)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Skip string operation name for integers
 | 
			
		||||
		ns := make([]uint64, 0, numFields-1)
 | 
			
		||||
		ns := make([]uint64, 0, minFields-1)
 | 
			
		||||
		for _, st := range ss[1:] {
 | 
			
		||||
			n, err := strconv.ParseUint(st, 10, 64)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -523,7 +525,7 @@ func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) {
 | 
			
		|||
			ns = append(ns, n)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ops = append(ops, NFSOperationStats{
 | 
			
		||||
		opStats := NFSOperationStats{
 | 
			
		||||
			Operation:                           strings.TrimSuffix(ss[0], ":"),
 | 
			
		||||
			Requests:                            ns[0],
 | 
			
		||||
			Transmissions:                       ns[1],
 | 
			
		||||
| 
						 | 
				
			
			@ -533,7 +535,13 @@ func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) {
 | 
			
		|||
			CumulativeQueueMilliseconds:         ns[5],
 | 
			
		||||
			CumulativeTotalResponseMilliseconds: ns[6],
 | 
			
		||||
			CumulativeTotalRequestMilliseconds:  ns[7],
 | 
			
		||||
		})
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(ns) > 8 {
 | 
			
		||||
			opStats.Errors = ns[8]
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ops = append(ops, opStats)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return ops, s.Err()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/procfs/net_conntrackstat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/procfs/net_conntrackstat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -38,7 +38,7 @@ type ConntrackStatEntry struct {
 | 
			
		|||
	SearchRestart uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Retrieves netfilter's conntrack statistics, split by CPU cores
 | 
			
		||||
// ConntrackStat retrieves netfilter's conntrack statistics, split by CPU cores
 | 
			
		||||
func (fs FS) ConntrackStat() ([]ConntrackStatEntry, error) {
 | 
			
		||||
	return readConntrackStat(fs.proc.Path("net", "stat", "nf_conntrack"))
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								vendor/github.com/prometheus/procfs/proc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/prometheus/procfs/proc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -134,6 +134,27 @@ func (p Proc) CmdLine() ([]string, error) {
 | 
			
		|||
	return strings.Split(string(bytes.TrimRight(data, string("\x00"))), string(byte(0))), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Wchan returns the wchan (wait channel) of a process.
 | 
			
		||||
func (p Proc) Wchan() (string, error) {
 | 
			
		||||
	f, err := os.Open(p.path("wchan"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
 | 
			
		||||
	data, err := ioutil.ReadAll(f)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	wchan := string(data)
 | 
			
		||||
	if wchan == "" || wchan == "0" {
 | 
			
		||||
		return "", nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return wchan, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Comm returns the command name of a process.
 | 
			
		||||
func (p Proc) Comm() (string, error) {
 | 
			
		||||
	data, err := util.ReadFileNoStat(p.path("comm"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										98
									
								
								vendor/github.com/prometheus/procfs/proc_cgroup.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								vendor/github.com/prometheus/procfs/proc_cgroup.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,98 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/prometheus/procfs/internal/util"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Cgroup models one line from /proc/[pid]/cgroup. Each Cgroup struct describes the the placement of a PID inside a
 | 
			
		||||
// specific control hierarchy. The kernel has two cgroup APIs, v1 and v2. v1 has one hierarchy per available resource
 | 
			
		||||
// controller, while v2 has one unified hierarchy shared by all controllers. Regardless of v1 or v2, all hierarchies
 | 
			
		||||
// contain all running processes, so the question answerable with a Cgroup struct is 'where is this process in
 | 
			
		||||
// this hierarchy' (where==what path on the specific cgroupfs). By prefixing this path with the mount point of
 | 
			
		||||
// *this specific* hierarchy, you can locate the relevant pseudo-files needed to read/set the data for this PID
 | 
			
		||||
// in this hierarchy
 | 
			
		||||
//
 | 
			
		||||
// Also see http://man7.org/linux/man-pages/man7/cgroups.7.html
 | 
			
		||||
type Cgroup struct {
 | 
			
		||||
	// HierarchyID that can be matched to a named hierarchy using /proc/cgroups. Cgroups V2 only has one
 | 
			
		||||
	// hierarchy, so HierarchyID is always 0. For cgroups v1 this is a unique ID number
 | 
			
		||||
	HierarchyID int
 | 
			
		||||
	// Controllers using this hierarchy of processes. Controllers are also known as subsystems. For
 | 
			
		||||
	// Cgroups V2 this may be empty, as all active controllers use the same hierarchy
 | 
			
		||||
	Controllers []string
 | 
			
		||||
	// Path of this control group, relative to the mount point of the cgroupfs representing this specific
 | 
			
		||||
	// hierarchy
 | 
			
		||||
	Path string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseCgroupString parses each line of the /proc/[pid]/cgroup file
 | 
			
		||||
// Line format is hierarchyID:[controller1,controller2]:path
 | 
			
		||||
func parseCgroupString(cgroupStr string) (*Cgroup, error) {
 | 
			
		||||
	var err error
 | 
			
		||||
 | 
			
		||||
	fields := strings.Split(cgroupStr, ":")
 | 
			
		||||
	if len(fields) < 3 {
 | 
			
		||||
		return nil, fmt.Errorf("at least 3 fields required, found %d fields in cgroup string: %s", len(fields), cgroupStr)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cgroup := &Cgroup{
 | 
			
		||||
		Path:        fields[2],
 | 
			
		||||
		Controllers: nil,
 | 
			
		||||
	}
 | 
			
		||||
	cgroup.HierarchyID, err = strconv.Atoi(fields[0])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("failed to parse hierarchy ID")
 | 
			
		||||
	}
 | 
			
		||||
	if fields[1] != "" {
 | 
			
		||||
		ssNames := strings.Split(fields[1], ",")
 | 
			
		||||
		cgroup.Controllers = append(cgroup.Controllers, ssNames...)
 | 
			
		||||
	}
 | 
			
		||||
	return cgroup, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseCgroups reads each line of the /proc/[pid]/cgroup file
 | 
			
		||||
func parseCgroups(data []byte) ([]Cgroup, error) {
 | 
			
		||||
	var cgroups []Cgroup
 | 
			
		||||
	scanner := bufio.NewScanner(bytes.NewReader(data))
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		mountString := scanner.Text()
 | 
			
		||||
		parsedMounts, err := parseCgroupString(mountString)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		cgroups = append(cgroups, *parsedMounts)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err := scanner.Err()
 | 
			
		||||
	return cgroups, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Cgroups reads from /proc/<pid>/cgroups and returns a []*Cgroup struct locating this PID in each process
 | 
			
		||||
// control hierarchy running on this system. On every system (v1 and v2), all hierarchies contain all processes,
 | 
			
		||||
// so the len of the returned struct is equal to the number of active hierarchies on this system
 | 
			
		||||
func (p Proc) Cgroups() ([]Cgroup, error) {
 | 
			
		||||
	data, err := util.ReadFileNoStat(fmt.Sprintf("/proc/%d/cgroup", p.PID))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return parseCgroups(data)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/procfs/proc_fdinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/procfs/proc_fdinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -41,7 +41,7 @@ type ProcFDInfo struct {
 | 
			
		|||
	Flags string
 | 
			
		||||
	// Mount point ID
 | 
			
		||||
	MntID string
 | 
			
		||||
	// List of inotify lines (structed) in the fdinfo file (kernel 3.8+ only)
 | 
			
		||||
	// List of inotify lines (structured) in the fdinfo file (kernel 3.8+ only)
 | 
			
		||||
	InotifyInfos []InotifyInfo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								vendor/github.com/prometheus/procfs/proc_maps.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/prometheus/procfs/proc_maps.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -11,7 +11,7 @@
 | 
			
		|||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build !windows
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -25,6 +25,7 @@ import (
 | 
			
		|||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ProcMapPermissions contains permission settings read from /proc/[pid]/maps
 | 
			
		||||
type ProcMapPermissions struct {
 | 
			
		||||
	// mapping has the [R]ead flag set
 | 
			
		||||
	Read bool
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										165
									
								
								vendor/github.com/prometheus/procfs/proc_smaps.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								vendor/github.com/prometheus/procfs/proc_smaps.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,165 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build !windows
 | 
			
		||||
 | 
			
		||||
package procfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/prometheus/procfs/internal/util"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// match the header line before each mapped zone in /proc/pid/smaps
 | 
			
		||||
	procSMapsHeaderLine = regexp.MustCompile(`^[a-f0-9].*$`)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ProcSMapsRollup struct {
 | 
			
		||||
	// Amount of the mapping that is currently resident in RAM
 | 
			
		||||
	Rss uint64
 | 
			
		||||
	// Process's proportional share of this mapping
 | 
			
		||||
	Pss uint64
 | 
			
		||||
	// Size in bytes of clean shared pages
 | 
			
		||||
	SharedClean uint64
 | 
			
		||||
	// Size in bytes of dirty shared pages
 | 
			
		||||
	SharedDirty uint64
 | 
			
		||||
	// Size in bytes of clean private pages
 | 
			
		||||
	PrivateClean uint64
 | 
			
		||||
	// Size in bytes of dirty private pages
 | 
			
		||||
	PrivateDirty uint64
 | 
			
		||||
	// Amount of memory currently marked as referenced or accessed
 | 
			
		||||
	Referenced uint64
 | 
			
		||||
	// Amount of memory that does not belong to any file
 | 
			
		||||
	Anonymous uint64
 | 
			
		||||
	// Amount would-be-anonymous memory currently on swap
 | 
			
		||||
	Swap uint64
 | 
			
		||||
	// Process's proportional memory on swap
 | 
			
		||||
	SwapPss uint64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProcSMapsRollup reads from /proc/[pid]/smaps_rollup to get summed memory information of the
 | 
			
		||||
// process.
 | 
			
		||||
//
 | 
			
		||||
// If smaps_rollup does not exists (require kernel >= 4.15), the content of /proc/pid/smaps will
 | 
			
		||||
// we read and summed.
 | 
			
		||||
func (p Proc) ProcSMapsRollup() (ProcSMapsRollup, error) {
 | 
			
		||||
	data, err := util.ReadFileNoStat(p.path("smaps_rollup"))
 | 
			
		||||
	if err != nil && os.IsNotExist(err) {
 | 
			
		||||
		return p.procSMapsRollupManual()
 | 
			
		||||
	}
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return ProcSMapsRollup{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	lines := strings.Split(string(data), "\n")
 | 
			
		||||
	smaps := ProcSMapsRollup{}
 | 
			
		||||
 | 
			
		||||
	// skip first line which don't contains information we need
 | 
			
		||||
	lines = lines[1:]
 | 
			
		||||
	for _, line := range lines {
 | 
			
		||||
		if line == "" {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := smaps.parseLine(line); err != nil {
 | 
			
		||||
			return ProcSMapsRollup{}, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return smaps, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Read /proc/pid/smaps and do the roll-up in Go code.
 | 
			
		||||
func (p Proc) procSMapsRollupManual() (ProcSMapsRollup, error) {
 | 
			
		||||
	file, err := os.Open(p.path("smaps"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return ProcSMapsRollup{}, err
 | 
			
		||||
	}
 | 
			
		||||
	defer file.Close()
 | 
			
		||||
 | 
			
		||||
	smaps := ProcSMapsRollup{}
 | 
			
		||||
	scan := bufio.NewScanner(file)
 | 
			
		||||
 | 
			
		||||
	for scan.Scan() {
 | 
			
		||||
		line := scan.Text()
 | 
			
		||||
 | 
			
		||||
		if procSMapsHeaderLine.MatchString(line) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := smaps.parseLine(line); err != nil {
 | 
			
		||||
			return ProcSMapsRollup{}, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return smaps, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ProcSMapsRollup) parseLine(line string) error {
 | 
			
		||||
	kv := strings.SplitN(line, ":", 2)
 | 
			
		||||
	if len(kv) != 2 {
 | 
			
		||||
		fmt.Println(line)
 | 
			
		||||
		return errors.New("invalid net/dev line, missing colon")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	k := kv[0]
 | 
			
		||||
	if k == "VmFlags" {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	v := strings.TrimSpace(kv[1])
 | 
			
		||||
	v = strings.TrimRight(v, " kB")
 | 
			
		||||
 | 
			
		||||
	vKBytes, err := strconv.ParseUint(v, 10, 64)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	vBytes := vKBytes * 1024
 | 
			
		||||
 | 
			
		||||
	s.addValue(k, v, vKBytes, vBytes)
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *ProcSMapsRollup) addValue(k string, vString string, vUint uint64, vUintBytes uint64) {
 | 
			
		||||
	switch k {
 | 
			
		||||
	case "Rss":
 | 
			
		||||
		s.Rss += vUintBytes
 | 
			
		||||
	case "Pss":
 | 
			
		||||
		s.Pss += vUintBytes
 | 
			
		||||
	case "Shared_Clean":
 | 
			
		||||
		s.SharedClean += vUintBytes
 | 
			
		||||
	case "Shared_Dirty":
 | 
			
		||||
		s.SharedDirty += vUintBytes
 | 
			
		||||
	case "Private_Clean":
 | 
			
		||||
		s.PrivateClean += vUintBytes
 | 
			
		||||
	case "Private_Dirty":
 | 
			
		||||
		s.PrivateDirty += vUintBytes
 | 
			
		||||
	case "Referenced":
 | 
			
		||||
		s.Referenced += vUintBytes
 | 
			
		||||
	case "Anonymous":
 | 
			
		||||
		s.Anonymous += vUintBytes
 | 
			
		||||
	case "Swap":
 | 
			
		||||
		s.Swap += vUintBytes
 | 
			
		||||
	case "SwapPss":
 | 
			
		||||
		s.SwapPss += vUintBytes
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										249
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_fibrechannel.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										249
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_fibrechannel.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,249 @@
 | 
			
		|||
// Copyright 2020 The Prometheus Authors
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
// http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
// +build !windows
 | 
			
		||||
 | 
			
		||||
package sysfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/prometheus/procfs/internal/util"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const fibrechannelClassPath = "class/fc_host"
 | 
			
		||||
 | 
			
		||||
type FibreChannelCounters struct {
 | 
			
		||||
	DumpedFrames          uint64 // /sys/class/fc_host/<Name>/statistics/dumped_frames
 | 
			
		||||
	ErrorFrames           uint64 // /sys/class/fc_host/<Name>/statistics/error_frames
 | 
			
		||||
	InvalidCRCCount       uint64 // /sys/class/fc_host/<Name>/statistics/invalid_crc_count
 | 
			
		||||
	RXFrames              uint64 // /sys/class/fc_host/<Name>/statistics/rx_frames
 | 
			
		||||
	RXWords               uint64 // /sys/class/fc_host/<Name>/statistics/rx_words
 | 
			
		||||
	TXFrames              uint64 // /sys/class/fc_host/<Name>/statistics/tx_frames
 | 
			
		||||
	TXWords               uint64 // /sys/class/fc_host/<Name>/statistics/tx_words
 | 
			
		||||
	SecondsSinceLastReset uint64 // /sys/class/fc_host/<Name>/statistics/seconds_since_last_reset
 | 
			
		||||
	InvalidTXWordCount    uint64 // /sys/class/fc_host/<Name>/statistics/invalid_tx_word_count
 | 
			
		||||
	LinkFailureCount      uint64 // /sys/class/fc_host/<Name>/statistics/link_failure_count
 | 
			
		||||
	LossOfSyncCount       uint64 // /sys/class/fc_host/<Name>/statistics/loss_of_sync_count
 | 
			
		||||
	LossOfSignalCount     uint64 // /sys/class/fc_host/<Name>/statistics/loss_of_signal_count
 | 
			
		||||
	NosCount              uint64 // /sys/class/fc_host/<Name>/statistics/nos_count
 | 
			
		||||
	FCPPacketAborts       uint64 // / sys/class/fc_host/<Name>/statistics/fcp_packet_aborts
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FibreChannelHost struct {
 | 
			
		||||
	Name             string               // /sys/class/fc_host/<Name>
 | 
			
		||||
	Speed            string               // /sys/class/fc_host/<Name>/speed
 | 
			
		||||
	PortState        string               // /sys/class/fc_host/<Name>/port_state
 | 
			
		||||
	PortType         string               // /sys/class/fc_host/<Name>/port_type
 | 
			
		||||
	SymbolicName     string               // /sys/class/fc_host/<Name>/symbolic_name
 | 
			
		||||
	NodeName         string               // /sys/class/fc_host/<Name>/node_name
 | 
			
		||||
	PortID           string               // /sys/class/fc_host/<Name>/port_id
 | 
			
		||||
	PortName         string               // /sys/class/fc_host/<Name>/port_name
 | 
			
		||||
	FabricName       string               // /sys/class/fc_host/<Name>/fabric_name
 | 
			
		||||
	DevLossTMO       string               // /sys/class/fc_host/<Name>/dev_loss_tmo
 | 
			
		||||
	SupportedClasses string               // /sys/class/fc_host/<Name>/supported_classes
 | 
			
		||||
	SupportedSpeeds  string               // /sys/class/fc_host/<Name>/supported_speeds
 | 
			
		||||
	Counters         FibreChannelCounters // /sys/class/fc_host/<Name>/statistics/*
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FibreChannelClass map[string]FibreChannelHost
 | 
			
		||||
 | 
			
		||||
// FibreChannelClass parses everything in /sys/class/fc_host.
 | 
			
		||||
func (fs FS) FibreChannelClass() (FibreChannelClass, error) {
 | 
			
		||||
	path := fs.sys.Path(fibrechannelClassPath)
 | 
			
		||||
 | 
			
		||||
	dirs, err := ioutil.ReadDir(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fcc := make(FibreChannelClass, len(dirs))
 | 
			
		||||
	for _, d := range dirs {
 | 
			
		||||
		host, err := fs.parseFibreChannelHost(d.Name())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fcc[host.Name] = *host
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return fcc, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Parse a single FC host
 | 
			
		||||
func (fs FS) parseFibreChannelHost(name string) (*FibreChannelHost, error) {
 | 
			
		||||
	path := fs.sys.Path(fibrechannelClassPath, name)
 | 
			
		||||
	host := FibreChannelHost{Name: name}
 | 
			
		||||
 | 
			
		||||
	for _, f := range [...]string{"speed", "port_state", "port_type", "node_name", "port_id", "port_name", "fabric_name", "dev_loss_tmo", "symbolic_name", "supported_classes", "supported_speeds"} {
 | 
			
		||||
		name := filepath.Join(path, f)
 | 
			
		||||
		value, err := util.SysReadFile(name)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("failed to read file %q: %v", name, err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch f {
 | 
			
		||||
		case "speed":
 | 
			
		||||
			host.Speed = value
 | 
			
		||||
		case "port_state":
 | 
			
		||||
			host.PortState = value
 | 
			
		||||
		case "port_type":
 | 
			
		||||
			host.PortType = value
 | 
			
		||||
		case "node_name":
 | 
			
		||||
			if len(value) > 2 {
 | 
			
		||||
				value = value[2:]
 | 
			
		||||
			}
 | 
			
		||||
			host.NodeName = value
 | 
			
		||||
		case "port_id":
 | 
			
		||||
			if len(value) > 2 {
 | 
			
		||||
				value = value[2:]
 | 
			
		||||
			}
 | 
			
		||||
			host.PortID = value
 | 
			
		||||
		case "port_name":
 | 
			
		||||
			if len(value) > 2 {
 | 
			
		||||
				value = value[2:]
 | 
			
		||||
			}
 | 
			
		||||
			host.PortName = value
 | 
			
		||||
		case "fabric_name":
 | 
			
		||||
			if len(value) > 2 {
 | 
			
		||||
				value = value[2:]
 | 
			
		||||
			}
 | 
			
		||||
			host.FabricName = value
 | 
			
		||||
		case "dev_loss_tmo":
 | 
			
		||||
			host.DevLossTMO = value
 | 
			
		||||
		case "supported_classes":
 | 
			
		||||
			host.SupportedClasses = value
 | 
			
		||||
		case "supported_speeds":
 | 
			
		||||
			host.SupportedSpeeds = value
 | 
			
		||||
		case "symbolic_name":
 | 
			
		||||
			host.SymbolicName = value
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	counters, err := parseFibreChannelStatistics(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	host.Counters = *counters
 | 
			
		||||
 | 
			
		||||
	return &host, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseFibreChannelStatistics parses metrics from a single FC host.
 | 
			
		||||
func parseFibreChannelStatistics(hostPath string) (*FibreChannelCounters, error) {
 | 
			
		||||
	var counters FibreChannelCounters
 | 
			
		||||
 | 
			
		||||
	path := filepath.Join(hostPath, "statistics")
 | 
			
		||||
	files, err := ioutil.ReadDir(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, f := range files {
 | 
			
		||||
		if !f.Mode().IsRegular() || f.Name() == "reset_statistics" {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		name := filepath.Join(path, f.Name())
 | 
			
		||||
		value, err := util.SysReadFile(name)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			// there are some write-only files in this directory; we can safely skip over them
 | 
			
		||||
			if os.IsNotExist(err) || err.Error() == "operation not supported" || err.Error() == "invalid argument" {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			return nil, fmt.Errorf("failed to read file %q: %v", name, err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		vp := util.NewValueParser(value)
 | 
			
		||||
 | 
			
		||||
		// Below switch was automatically generated. Don't need everything in there yet, so the unwanted bits are commented out.
 | 
			
		||||
		switch f.Name() {
 | 
			
		||||
		case "dumped_frames":
 | 
			
		||||
			counters.DumpedFrames = *vp.PUInt64()
 | 
			
		||||
		case "error_frames":
 | 
			
		||||
			counters.ErrorFrames = *vp.PUInt64()
 | 
			
		||||
		/*
 | 
			
		||||
			case "fc_no_free_exch":
 | 
			
		||||
				counters.FcNoFreeExch = *vp.PUInt64()
 | 
			
		||||
			case "fc_no_free_exch_xid":
 | 
			
		||||
				counters.FcNoFreeExchXid = *vp.PUInt64()
 | 
			
		||||
			case "fc_non_bls_resp":
 | 
			
		||||
				counters.FcNonBlsResp = *vp.PUInt64()
 | 
			
		||||
			case "fc_seq_not_found":
 | 
			
		||||
				counters.FcSeqNotFound = *vp.PUInt64()
 | 
			
		||||
			case "fc_xid_busy":
 | 
			
		||||
				counters.FcXidBusy = *vp.PUInt64()
 | 
			
		||||
			case "fc_xid_not_found":
 | 
			
		||||
				counters.FcXidNotFound = *vp.PUInt64()
 | 
			
		||||
			case "fcp_control_requests":
 | 
			
		||||
				counters.FcpControlRequests = *vp.PUInt64()
 | 
			
		||||
			case "fcp_frame_alloc_failures":
 | 
			
		||||
				counters.FcpFrameAllocFailures = *vp.PUInt64()
 | 
			
		||||
			case "fcp_input_megabytes":
 | 
			
		||||
				counters.FcpInputMegabytes = *vp.PUInt64()
 | 
			
		||||
			case "fcp_input_requests":
 | 
			
		||||
				counters.FcpInputRequests = *vp.PUInt64()
 | 
			
		||||
			case "fcp_output_megabytes":
 | 
			
		||||
				counters.FcpOutputMegabytes = *vp.PUInt64()
 | 
			
		||||
			case "fcp_output_requests":
 | 
			
		||||
				counters.FcpOutputRequests = *vp.PUInt64()
 | 
			
		||||
		*/
 | 
			
		||||
		case "fcp_packet_aborts":
 | 
			
		||||
			counters.FCPPacketAborts = *vp.PUInt64()
 | 
			
		||||
			/*
 | 
			
		||||
				case "fcp_packet_alloc_failures":
 | 
			
		||||
					counters.FcpPacketAllocFailures = *vp.PUInt64()
 | 
			
		||||
			*/
 | 
			
		||||
		case "invalid_tx_word_count":
 | 
			
		||||
			counters.InvalidTXWordCount = *vp.PUInt64()
 | 
			
		||||
		case "invalid_crc_count":
 | 
			
		||||
			counters.InvalidCRCCount = *vp.PUInt64()
 | 
			
		||||
		case "link_failure_count":
 | 
			
		||||
			counters.LinkFailureCount = *vp.PUInt64()
 | 
			
		||||
		/*
 | 
			
		||||
			case "lip_count":
 | 
			
		||||
					counters.LipCount = *vp.PUInt64()
 | 
			
		||||
		*/
 | 
			
		||||
		case "loss_of_signal_count":
 | 
			
		||||
			counters.LossOfSignalCount = *vp.PUInt64()
 | 
			
		||||
		case "loss_of_sync_count":
 | 
			
		||||
			counters.LossOfSyncCount = *vp.PUInt64()
 | 
			
		||||
		case "nos_count":
 | 
			
		||||
			counters.NosCount = *vp.PUInt64()
 | 
			
		||||
		/*
 | 
			
		||||
			case "prim_seq_protocol_err_count":
 | 
			
		||||
				counters.PrimSeqProtocolErrCount = *vp.PUInt64()
 | 
			
		||||
		*/
 | 
			
		||||
		case "rx_frames":
 | 
			
		||||
			counters.RXFrames = *vp.PUInt64()
 | 
			
		||||
		case "rx_words":
 | 
			
		||||
			counters.RXWords = *vp.PUInt64()
 | 
			
		||||
		case "seconds_since_last_reset":
 | 
			
		||||
			counters.SecondsSinceLastReset = *vp.PUInt64()
 | 
			
		||||
		case "tx_frames":
 | 
			
		||||
			counters.TXFrames = *vp.PUInt64()
 | 
			
		||||
		case "tx_words":
 | 
			
		||||
			counters.TXWords = *vp.PUInt64()
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := vp.Err(); err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &counters, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_infiniband.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_infiniband.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -42,22 +42,26 @@ type InfiniBandCounters struct {
 | 
			
		|||
	LegacyPortXmitData64           *uint64 // counters_ext/port_xmit_data_64
 | 
			
		||||
	LegacyPortXmitPackets64        *uint64 // counters_ext/port_xmit_packets_64
 | 
			
		||||
 | 
			
		||||
	LinkDowned               *uint64 // counters/link_downed
 | 
			
		||||
	LinkErrorRecovery        *uint64 // counters/link_error_recovery
 | 
			
		||||
	MulticastRcvPackets      *uint64 // counters/multicast_rcv_packets
 | 
			
		||||
	MulticastXmitPackets     *uint64 // counters/multicast_xmit_packets
 | 
			
		||||
	PortRcvConstraintErrors  *uint64 // counters/port_rcv_constraint_errors
 | 
			
		||||
	PortRcvData              *uint64 // counters/port_rcv_data
 | 
			
		||||
	PortRcvDiscards          *uint64 // counters/port_rcv_discards
 | 
			
		||||
	PortRcvErrors            *uint64 // counters/port_rcv_errors
 | 
			
		||||
	PortRcvPackets           *uint64 // counters/port_rcv_packets
 | 
			
		||||
	PortXmitConstraintErrors *uint64 // counters/port_xmit_constraint_errors
 | 
			
		||||
	PortXmitData             *uint64 // counters/port_xmit_data
 | 
			
		||||
	PortXmitDiscards         *uint64 // counters/port_xmit_discards
 | 
			
		||||
	PortXmitPackets          *uint64 // counters/port_xmit_packets
 | 
			
		||||
	PortXmitWait             *uint64 // counters/port_xmit_wait
 | 
			
		||||
	UnicastRcvPackets        *uint64 // counters/unicast_rcv_packets
 | 
			
		||||
	UnicastXmitPackets       *uint64 // counters/unicast_xmit_packets
 | 
			
		||||
	LinkDowned                  *uint64 // counters/link_downed
 | 
			
		||||
	LinkErrorRecovery           *uint64 // counters/link_error_recovery
 | 
			
		||||
	MulticastRcvPackets         *uint64 // counters/multicast_rcv_packets
 | 
			
		||||
	MulticastXmitPackets        *uint64 // counters/multicast_xmit_packets
 | 
			
		||||
	PortRcvConstraintErrors     *uint64 // counters/port_rcv_constraint_errors
 | 
			
		||||
	PortRcvData                 *uint64 // counters/port_rcv_data
 | 
			
		||||
	PortRcvDiscards             *uint64 // counters/port_rcv_discards
 | 
			
		||||
	PortRcvErrors               *uint64 // counters/port_rcv_errors
 | 
			
		||||
	PortRcvPackets              *uint64 // counters/port_rcv_packets
 | 
			
		||||
	PortRcvRemotePhysicalErrors *uint64 // counters/port_rcv_remote_physical_errors
 | 
			
		||||
	PortRcvSwitchRelayErrors    *uint64 // counters/port_rcv_switch_relay_errors
 | 
			
		||||
	PortXmitConstraintErrors    *uint64 // counters/port_xmit_constraint_errors
 | 
			
		||||
	PortXmitData                *uint64 // counters/port_xmit_data
 | 
			
		||||
	PortXmitDiscards            *uint64 // counters/port_xmit_discards
 | 
			
		||||
	PortXmitPackets             *uint64 // counters/port_xmit_packets
 | 
			
		||||
	PortXmitWait                *uint64 // counters/port_xmit_wait
 | 
			
		||||
	SymbolError                 *uint64 // counters/symbol_error
 | 
			
		||||
	UnicastRcvPackets           *uint64 // counters/unicast_rcv_packets
 | 
			
		||||
	UnicastXmitPackets          *uint64 // counters/unicast_xmit_packets
 | 
			
		||||
	VL15Dropped                 *uint64 // counters/VL15_dropped
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InfiniBandPort contains info from files in
 | 
			
		||||
| 
						 | 
				
			
			@ -287,6 +291,10 @@ func parseInfiniBandCounters(portPath string) (*InfiniBandCounters, error) {
 | 
			
		|||
			counters.PortRcvErrors = vp.PUInt64()
 | 
			
		||||
		case "port_rcv_packets":
 | 
			
		||||
			counters.PortRcvPackets = vp.PUInt64()
 | 
			
		||||
		case "port_rcv_remote_physical_errors":
 | 
			
		||||
			counters.PortRcvRemotePhysicalErrors = vp.PUInt64()
 | 
			
		||||
		case "port_rcv_switch_relay_errors":
 | 
			
		||||
			counters.PortRcvSwitchRelayErrors = vp.PUInt64()
 | 
			
		||||
		case "port_xmit_constraint_errors":
 | 
			
		||||
			counters.PortXmitConstraintErrors = vp.PUInt64()
 | 
			
		||||
		case "port_xmit_data":
 | 
			
		||||
| 
						 | 
				
			
			@ -300,10 +308,14 @@ func parseInfiniBandCounters(portPath string) (*InfiniBandCounters, error) {
 | 
			
		|||
			counters.PortXmitPackets = vp.PUInt64()
 | 
			
		||||
		case "port_xmit_wait":
 | 
			
		||||
			counters.PortXmitWait = vp.PUInt64()
 | 
			
		||||
		case "symbol_error":
 | 
			
		||||
			counters.SymbolError = vp.PUInt64()
 | 
			
		||||
		case "unicast_rcv_packets":
 | 
			
		||||
			counters.UnicastRcvPackets = vp.PUInt64()
 | 
			
		||||
		case "unicast_xmit_packets":
 | 
			
		||||
			counters.UnicastXmitPackets = vp.PUInt64()
 | 
			
		||||
		case "VL15_dropped":
 | 
			
		||||
			counters.VL15Dropped = vp.PUInt64()
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := vp.Err(); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_power_supply.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_power_supply.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -110,7 +110,7 @@ func (fs FS) PowerSupplyClass() (PowerSupplyClass, error) {
 | 
			
		|||
 | 
			
		||||
	dirs, err := ioutil.ReadDir(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("failed to list power supplies at %q: %v", path, err)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	psc := make(PowerSupplyClass, len(dirs))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										26
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_thermal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/prometheus/procfs/sysfs/class_thermal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -16,9 +16,11 @@
 | 
			
		|||
package sysfs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"github.com/prometheus/procfs/internal/util"
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +31,7 @@ import (
 | 
			
		|||
type ClassThermalZoneStats struct {
 | 
			
		||||
	Name    string  // The name of the zone from the directory structure.
 | 
			
		||||
	Type    string  // The type of thermal zone.
 | 
			
		||||
	Temp    uint64  // Temperature in millidegree Celsius.
 | 
			
		||||
	Temp    int64   // Temperature in millidegree Celsius.
 | 
			
		||||
	Policy  string  // One of the various thermal governors used for a particular zone.
 | 
			
		||||
	Mode    *bool   // Optional: One of the predefined values in [enabled, disabled].
 | 
			
		||||
	Passive *uint64 // Optional: millidegrees Celsius. (0 for disabled, > 1000 for enabled+value)
 | 
			
		||||
| 
						 | 
				
			
			@ -39,20 +41,20 @@ type ClassThermalZoneStats struct {
 | 
			
		|||
func (fs FS) ClassThermalZoneStats() ([]ClassThermalZoneStats, error) {
 | 
			
		||||
	zones, err := filepath.Glob(fs.sys.Path("class/thermal/thermal_zone[0-9]*"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []ClassThermalZoneStats{}, err
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var zoneStats = ClassThermalZoneStats{}
 | 
			
		||||
	stats := make([]ClassThermalZoneStats, len(zones))
 | 
			
		||||
	for i, zone := range zones {
 | 
			
		||||
		zoneName := strings.TrimPrefix(filepath.Base(zone), "thermal_zone")
 | 
			
		||||
 | 
			
		||||
		zoneStats, err = parseClassThermalZone(zone)
 | 
			
		||||
	stats := make([]ClassThermalZoneStats, 0, len(zones))
 | 
			
		||||
	for _, zone := range zones {
 | 
			
		||||
		zoneStats, err := parseClassThermalZone(zone)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return []ClassThermalZoneStats{}, err
 | 
			
		||||
			if errors.Is(err, syscall.ENODATA) {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		zoneStats.Name = zoneName
 | 
			
		||||
		stats[i] = zoneStats
 | 
			
		||||
		zoneStats.Name = strings.TrimPrefix(filepath.Base(zone), "thermal_zone")
 | 
			
		||||
		stats = append(stats, zoneStats)
 | 
			
		||||
	}
 | 
			
		||||
	return stats, nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +69,7 @@ func parseClassThermalZone(zone string) (ClassThermalZoneStats, error) {
 | 
			
		|||
	if err != nil {
 | 
			
		||||
		return ClassThermalZoneStats{}, err
 | 
			
		||||
	}
 | 
			
		||||
	zoneTemp, err := util.ReadUintFromFile(filepath.Join(zone, "temp"))
 | 
			
		||||
	zoneTemp, err := util.ReadIntFromFile(filepath.Join(zone, "temp"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return ClassThermalZoneStats{}, err
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/unix/syscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/unix/syscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -97,6 +97,12 @@ func IoctlSetRTCTime(fd int, value *RTCTime) error {
 | 
			
		|||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {
 | 
			
		||||
	err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value)))
 | 
			
		||||
	runtime.KeepAlive(value)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IoctlGetUint32(fd int, req uint) (uint32, error) {
 | 
			
		||||
	var value uint32
 | 
			
		||||
	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
 | 
			
		||||
| 
						 | 
				
			
			@ -109,6 +115,12 @@ func IoctlGetRTCTime(fd int) (*RTCTime, error) {
 | 
			
		|||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {
 | 
			
		||||
	var value RTCWkAlrm
 | 
			
		||||
	err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value)))
 | 
			
		||||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
 | 
			
		||||
 | 
			
		||||
func Link(oldpath string, newpath string) (err error) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										66
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										66
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -160,78 +160,28 @@ const (
 | 
			
		|||
	BPF_A                                       = 0x10
 | 
			
		||||
	BPF_ABS                                     = 0x20
 | 
			
		||||
	BPF_ADD                                     = 0x0
 | 
			
		||||
	BPF_ADJ_ROOM_ENCAP_L2_MASK                  = 0xff
 | 
			
		||||
	BPF_ADJ_ROOM_ENCAP_L2_SHIFT                 = 0x38
 | 
			
		||||
	BPF_ALU                                     = 0x4
 | 
			
		||||
	BPF_ALU64                                   = 0x7
 | 
			
		||||
	BPF_AND                                     = 0x50
 | 
			
		||||
	BPF_ANY                                     = 0x0
 | 
			
		||||
	BPF_ARSH                                    = 0xc0
 | 
			
		||||
	BPF_B                                       = 0x10
 | 
			
		||||
	BPF_BUILD_ID_SIZE                           = 0x14
 | 
			
		||||
	BPF_CALL                                    = 0x80
 | 
			
		||||
	BPF_DEVCG_ACC_MKNOD                         = 0x1
 | 
			
		||||
	BPF_DEVCG_ACC_READ                          = 0x2
 | 
			
		||||
	BPF_DEVCG_ACC_WRITE                         = 0x4
 | 
			
		||||
	BPF_DEVCG_DEV_BLOCK                         = 0x1
 | 
			
		||||
	BPF_DEVCG_DEV_CHAR                          = 0x2
 | 
			
		||||
	BPF_DIV                                     = 0x30
 | 
			
		||||
	BPF_DW                                      = 0x18
 | 
			
		||||
	BPF_END                                     = 0xd0
 | 
			
		||||
	BPF_EXIST                                   = 0x2
 | 
			
		||||
	BPF_EXIT                                    = 0x90
 | 
			
		||||
	BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG         = 0x1
 | 
			
		||||
	BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP          = 0x4
 | 
			
		||||
	BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL     = 0x2
 | 
			
		||||
	BPF_FROM_BE                                 = 0x8
 | 
			
		||||
	BPF_FROM_LE                                 = 0x0
 | 
			
		||||
	BPF_FS_MAGIC                                = 0xcafe4a11
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L3_IPV4                = 0x2
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L3_IPV6                = 0x4
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L4_GRE                 = 0x8
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L4_UDP                 = 0x10
 | 
			
		||||
	BPF_F_ADJ_ROOM_FIXED_GSO                    = 0x1
 | 
			
		||||
	BPF_F_ALLOW_MULTI                           = 0x2
 | 
			
		||||
	BPF_F_ALLOW_OVERRIDE                        = 0x1
 | 
			
		||||
	BPF_F_ANY_ALIGNMENT                         = 0x2
 | 
			
		||||
	BPF_F_CLONE                                 = 0x200
 | 
			
		||||
	BPF_F_CTXLEN_MASK                           = 0xfffff00000000
 | 
			
		||||
	BPF_F_CURRENT_CPU                           = 0xffffffff
 | 
			
		||||
	BPF_F_CURRENT_NETNS                         = -0x1
 | 
			
		||||
	BPF_F_DONT_FRAGMENT                         = 0x4
 | 
			
		||||
	BPF_F_FAST_STACK_CMP                        = 0x200
 | 
			
		||||
	BPF_F_HDR_FIELD_MASK                        = 0xf
 | 
			
		||||
	BPF_F_INDEX_MASK                            = 0xffffffff
 | 
			
		||||
	BPF_F_INGRESS                               = 0x1
 | 
			
		||||
	BPF_F_INVALIDATE_HASH                       = 0x2
 | 
			
		||||
	BPF_F_LOCK                                  = 0x4
 | 
			
		||||
	BPF_F_MARK_ENFORCE                          = 0x40
 | 
			
		||||
	BPF_F_MARK_MANGLED_0                        = 0x20
 | 
			
		||||
	BPF_F_MMAPABLE                              = 0x400
 | 
			
		||||
	BPF_F_NO_COMMON_LRU                         = 0x2
 | 
			
		||||
	BPF_F_NO_PREALLOC                           = 0x1
 | 
			
		||||
	BPF_F_NUMA_NODE                             = 0x4
 | 
			
		||||
	BPF_F_PSEUDO_HDR                            = 0x10
 | 
			
		||||
	BPF_F_QUERY_EFFECTIVE                       = 0x1
 | 
			
		||||
	BPF_F_RDONLY                                = 0x8
 | 
			
		||||
	BPF_F_RDONLY_PROG                           = 0x80
 | 
			
		||||
	BPF_F_RECOMPUTE_CSUM                        = 0x1
 | 
			
		||||
	BPF_F_REPLACE                               = 0x4
 | 
			
		||||
	BPF_F_REUSE_STACKID                         = 0x400
 | 
			
		||||
	BPF_F_SEQ_NUMBER                            = 0x8
 | 
			
		||||
	BPF_F_SKIP_FIELD_MASK                       = 0xff
 | 
			
		||||
	BPF_F_STACK_BUILD_ID                        = 0x20
 | 
			
		||||
	BPF_F_STRICT_ALIGNMENT                      = 0x1
 | 
			
		||||
	BPF_F_SYSCTL_BASE_NAME                      = 0x1
 | 
			
		||||
	BPF_F_TEST_RND_HI32                         = 0x4
 | 
			
		||||
	BPF_F_TEST_STATE_FREQ                       = 0x8
 | 
			
		||||
	BPF_F_TUNINFO_IPV6                          = 0x1
 | 
			
		||||
	BPF_F_USER_BUILD_ID                         = 0x800
 | 
			
		||||
	BPF_F_USER_STACK                            = 0x100
 | 
			
		||||
	BPF_F_WRONLY                                = 0x10
 | 
			
		||||
	BPF_F_WRONLY_PROG                           = 0x100
 | 
			
		||||
	BPF_F_ZERO_CSUM_TX                          = 0x2
 | 
			
		||||
	BPF_F_ZERO_SEED                             = 0x40
 | 
			
		||||
	BPF_H                                       = 0x8
 | 
			
		||||
	BPF_IMM                                     = 0x0
 | 
			
		||||
	BPF_IND                                     = 0x40
 | 
			
		||||
| 
						 | 
				
			
			@ -267,7 +217,6 @@ const (
 | 
			
		|||
	BPF_MUL                                     = 0x20
 | 
			
		||||
	BPF_NEG                                     = 0x80
 | 
			
		||||
	BPF_NET_OFF                                 = -0x100000
 | 
			
		||||
	BPF_NOEXIST                                 = 0x1
 | 
			
		||||
	BPF_OBJ_NAME_LEN                            = 0x10
 | 
			
		||||
	BPF_OR                                      = 0x40
 | 
			
		||||
	BPF_PSEUDO_CALL                             = 0x1
 | 
			
		||||
| 
						 | 
				
			
			@ -275,12 +224,6 @@ const (
 | 
			
		|||
	BPF_PSEUDO_MAP_VALUE                        = 0x2
 | 
			
		||||
	BPF_RET                                     = 0x6
 | 
			
		||||
	BPF_RSH                                     = 0x70
 | 
			
		||||
	BPF_SK_STORAGE_GET_F_CREATE                 = 0x1
 | 
			
		||||
	BPF_SOCK_OPS_ALL_CB_FLAGS                   = 0xf
 | 
			
		||||
	BPF_SOCK_OPS_RETRANS_CB_FLAG                = 0x2
 | 
			
		||||
	BPF_SOCK_OPS_RTO_CB_FLAG                    = 0x1
 | 
			
		||||
	BPF_SOCK_OPS_RTT_CB_FLAG                    = 0x8
 | 
			
		||||
	BPF_SOCK_OPS_STATE_CB_FLAG                  = 0x4
 | 
			
		||||
	BPF_ST                                      = 0x2
 | 
			
		||||
	BPF_STX                                     = 0x3
 | 
			
		||||
	BPF_SUB                                     = 0x10
 | 
			
		||||
| 
						 | 
				
			
			@ -378,12 +321,14 @@ const (
 | 
			
		|||
	CLOCK_TXINT                                 = 0x3
 | 
			
		||||
	CLONE_ARGS_SIZE_VER0                        = 0x40
 | 
			
		||||
	CLONE_ARGS_SIZE_VER1                        = 0x50
 | 
			
		||||
	CLONE_ARGS_SIZE_VER2                        = 0x58
 | 
			
		||||
	CLONE_CHILD_CLEARTID                        = 0x200000
 | 
			
		||||
	CLONE_CHILD_SETTID                          = 0x1000000
 | 
			
		||||
	CLONE_CLEAR_SIGHAND                         = 0x100000000
 | 
			
		||||
	CLONE_DETACHED                              = 0x400000
 | 
			
		||||
	CLONE_FILES                                 = 0x400
 | 
			
		||||
	CLONE_FS                                    = 0x200
 | 
			
		||||
	CLONE_INTO_CGROUP                           = 0x200000000
 | 
			
		||||
	CLONE_IO                                    = 0x80000000
 | 
			
		||||
	CLONE_NEWCGROUP                             = 0x2000000
 | 
			
		||||
	CLONE_NEWIPC                                = 0x8000000
 | 
			
		||||
| 
						 | 
				
			
			@ -598,7 +543,9 @@ const (
 | 
			
		|||
	FAN_DELETE                                  = 0x200
 | 
			
		||||
	FAN_DELETE_SELF                             = 0x400
 | 
			
		||||
	FAN_DENY                                    = 0x2
 | 
			
		||||
	FAN_DIR_MODIFY                              = 0x80000
 | 
			
		||||
	FAN_ENABLE_AUDIT                            = 0x40
 | 
			
		||||
	FAN_EVENT_INFO_TYPE_DFID_NAME               = 0x2
 | 
			
		||||
	FAN_EVENT_INFO_TYPE_FID                     = 0x1
 | 
			
		||||
	FAN_EVENT_METADATA_LEN                      = 0x18
 | 
			
		||||
	FAN_EVENT_ON_CHILD                          = 0x8000000
 | 
			
		||||
| 
						 | 
				
			
			@ -2108,8 +2055,6 @@ const (
 | 
			
		|||
	TCOFLUSH                                    = 0x1
 | 
			
		||||
	TCOOFF                                      = 0x0
 | 
			
		||||
	TCOON                                       = 0x1
 | 
			
		||||
	TCP_BPF_IW                                  = 0x3e9
 | 
			
		||||
	TCP_BPF_SNDCWND_CLAMP                       = 0x3ea
 | 
			
		||||
	TCP_CC_INFO                                 = 0x1a
 | 
			
		||||
	TCP_CM_INQ                                  = 0x24
 | 
			
		||||
	TCP_CONGESTION                              = 0xd
 | 
			
		||||
| 
						 | 
				
			
			@ -2384,8 +2329,9 @@ const (
 | 
			
		|||
	XDP_COPY                                    = 0x2
 | 
			
		||||
	XDP_FLAGS_DRV_MODE                          = 0x4
 | 
			
		||||
	XDP_FLAGS_HW_MODE                           = 0x8
 | 
			
		||||
	XDP_FLAGS_MASK                              = 0xf
 | 
			
		||||
	XDP_FLAGS_MASK                              = 0x1f
 | 
			
		||||
	XDP_FLAGS_MODES                             = 0xe
 | 
			
		||||
	XDP_FLAGS_REPLACE                           = 0x10
 | 
			
		||||
	XDP_FLAGS_SKB_MODE                          = 0x2
 | 
			
		||||
	XDP_FLAGS_UPDATE_IF_NOEXIST                 = 0x1
 | 
			
		||||
	XDP_MMAP_OFFSETS                            = 0x1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -75,6 +75,7 @@ const (
 | 
			
		|||
	FP_XSTATE_MAGIC2                 = 0x46505845
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x40806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x80046601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -75,6 +75,7 @@ const (
 | 
			
		|||
	FP_XSTATE_MAGIC2                 = 0x46505845
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x40806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x80086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x1000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x40806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x80046601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -77,6 +77,7 @@ const (
 | 
			
		|||
	FPSIMD_MAGIC                     = 0x46508001
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x40806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x80086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x2000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40046601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x2000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x2000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x2000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40046601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x800000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x800000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x1000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x40806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x80086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -74,6 +74,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x1000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x40806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x80086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -78,6 +78,7 @@ const (
 | 
			
		|||
	FLUSHO                           = 0x1000
 | 
			
		||||
	FS_IOC_ENABLE_VERITY             = 0x80806685
 | 
			
		||||
	FS_IOC_GETFLAGS                  = 0x40086601
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
 | 
			
		||||
	FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
 | 
			
		||||
	FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										416
									
								
								vendor/golang.org/x/sys/unix/ztypes_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										416
									
								
								vendor/golang.org/x/sys/unix/ztypes_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1871,175 +1871,249 @@ const (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	BPF_REG_0                             = 0x0
 | 
			
		||||
	BPF_REG_1                             = 0x1
 | 
			
		||||
	BPF_REG_2                             = 0x2
 | 
			
		||||
	BPF_REG_3                             = 0x3
 | 
			
		||||
	BPF_REG_4                             = 0x4
 | 
			
		||||
	BPF_REG_5                             = 0x5
 | 
			
		||||
	BPF_REG_6                             = 0x6
 | 
			
		||||
	BPF_REG_7                             = 0x7
 | 
			
		||||
	BPF_REG_8                             = 0x8
 | 
			
		||||
	BPF_REG_9                             = 0x9
 | 
			
		||||
	BPF_REG_10                            = 0xa
 | 
			
		||||
	BPF_MAP_CREATE                        = 0x0
 | 
			
		||||
	BPF_MAP_LOOKUP_ELEM                   = 0x1
 | 
			
		||||
	BPF_MAP_UPDATE_ELEM                   = 0x2
 | 
			
		||||
	BPF_MAP_DELETE_ELEM                   = 0x3
 | 
			
		||||
	BPF_MAP_GET_NEXT_KEY                  = 0x4
 | 
			
		||||
	BPF_PROG_LOAD                         = 0x5
 | 
			
		||||
	BPF_OBJ_PIN                           = 0x6
 | 
			
		||||
	BPF_OBJ_GET                           = 0x7
 | 
			
		||||
	BPF_PROG_ATTACH                       = 0x8
 | 
			
		||||
	BPF_PROG_DETACH                       = 0x9
 | 
			
		||||
	BPF_PROG_TEST_RUN                     = 0xa
 | 
			
		||||
	BPF_PROG_GET_NEXT_ID                  = 0xb
 | 
			
		||||
	BPF_MAP_GET_NEXT_ID                   = 0xc
 | 
			
		||||
	BPF_PROG_GET_FD_BY_ID                 = 0xd
 | 
			
		||||
	BPF_MAP_GET_FD_BY_ID                  = 0xe
 | 
			
		||||
	BPF_OBJ_GET_INFO_BY_FD                = 0xf
 | 
			
		||||
	BPF_PROG_QUERY                        = 0x10
 | 
			
		||||
	BPF_RAW_TRACEPOINT_OPEN               = 0x11
 | 
			
		||||
	BPF_BTF_LOAD                          = 0x12
 | 
			
		||||
	BPF_BTF_GET_FD_BY_ID                  = 0x13
 | 
			
		||||
	BPF_TASK_FD_QUERY                     = 0x14
 | 
			
		||||
	BPF_MAP_LOOKUP_AND_DELETE_ELEM        = 0x15
 | 
			
		||||
	BPF_MAP_FREEZE                        = 0x16
 | 
			
		||||
	BPF_BTF_GET_NEXT_ID                   = 0x17
 | 
			
		||||
	BPF_MAP_TYPE_UNSPEC                   = 0x0
 | 
			
		||||
	BPF_MAP_TYPE_HASH                     = 0x1
 | 
			
		||||
	BPF_MAP_TYPE_ARRAY                    = 0x2
 | 
			
		||||
	BPF_MAP_TYPE_PROG_ARRAY               = 0x3
 | 
			
		||||
	BPF_MAP_TYPE_PERF_EVENT_ARRAY         = 0x4
 | 
			
		||||
	BPF_MAP_TYPE_PERCPU_HASH              = 0x5
 | 
			
		||||
	BPF_MAP_TYPE_PERCPU_ARRAY             = 0x6
 | 
			
		||||
	BPF_MAP_TYPE_STACK_TRACE              = 0x7
 | 
			
		||||
	BPF_MAP_TYPE_CGROUP_ARRAY             = 0x8
 | 
			
		||||
	BPF_MAP_TYPE_LRU_HASH                 = 0x9
 | 
			
		||||
	BPF_MAP_TYPE_LRU_PERCPU_HASH          = 0xa
 | 
			
		||||
	BPF_MAP_TYPE_LPM_TRIE                 = 0xb
 | 
			
		||||
	BPF_MAP_TYPE_ARRAY_OF_MAPS            = 0xc
 | 
			
		||||
	BPF_MAP_TYPE_HASH_OF_MAPS             = 0xd
 | 
			
		||||
	BPF_MAP_TYPE_DEVMAP                   = 0xe
 | 
			
		||||
	BPF_MAP_TYPE_SOCKMAP                  = 0xf
 | 
			
		||||
	BPF_MAP_TYPE_CPUMAP                   = 0x10
 | 
			
		||||
	BPF_MAP_TYPE_XSKMAP                   = 0x11
 | 
			
		||||
	BPF_MAP_TYPE_SOCKHASH                 = 0x12
 | 
			
		||||
	BPF_MAP_TYPE_CGROUP_STORAGE           = 0x13
 | 
			
		||||
	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY      = 0x14
 | 
			
		||||
	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE    = 0x15
 | 
			
		||||
	BPF_MAP_TYPE_QUEUE                    = 0x16
 | 
			
		||||
	BPF_MAP_TYPE_STACK                    = 0x17
 | 
			
		||||
	BPF_MAP_TYPE_SK_STORAGE               = 0x18
 | 
			
		||||
	BPF_MAP_TYPE_DEVMAP_HASH              = 0x19
 | 
			
		||||
	BPF_PROG_TYPE_UNSPEC                  = 0x0
 | 
			
		||||
	BPF_PROG_TYPE_SOCKET_FILTER           = 0x1
 | 
			
		||||
	BPF_PROG_TYPE_KPROBE                  = 0x2
 | 
			
		||||
	BPF_PROG_TYPE_SCHED_CLS               = 0x3
 | 
			
		||||
	BPF_PROG_TYPE_SCHED_ACT               = 0x4
 | 
			
		||||
	BPF_PROG_TYPE_TRACEPOINT              = 0x5
 | 
			
		||||
	BPF_PROG_TYPE_XDP                     = 0x6
 | 
			
		||||
	BPF_PROG_TYPE_PERF_EVENT              = 0x7
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SKB              = 0x8
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SOCK             = 0x9
 | 
			
		||||
	BPF_PROG_TYPE_LWT_IN                  = 0xa
 | 
			
		||||
	BPF_PROG_TYPE_LWT_OUT                 = 0xb
 | 
			
		||||
	BPF_PROG_TYPE_LWT_XMIT                = 0xc
 | 
			
		||||
	BPF_PROG_TYPE_SOCK_OPS                = 0xd
 | 
			
		||||
	BPF_PROG_TYPE_SK_SKB                  = 0xe
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_DEVICE           = 0xf
 | 
			
		||||
	BPF_PROG_TYPE_SK_MSG                  = 0x10
 | 
			
		||||
	BPF_PROG_TYPE_RAW_TRACEPOINT          = 0x11
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SOCK_ADDR        = 0x12
 | 
			
		||||
	BPF_PROG_TYPE_LWT_SEG6LOCAL           = 0x13
 | 
			
		||||
	BPF_PROG_TYPE_LIRC_MODE2              = 0x14
 | 
			
		||||
	BPF_PROG_TYPE_SK_REUSEPORT            = 0x15
 | 
			
		||||
	BPF_PROG_TYPE_FLOW_DISSECTOR          = 0x16
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SYSCTL           = 0x17
 | 
			
		||||
	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SOCKOPT          = 0x19
 | 
			
		||||
	BPF_PROG_TYPE_TRACING                 = 0x1a
 | 
			
		||||
	BPF_CGROUP_INET_INGRESS               = 0x0
 | 
			
		||||
	BPF_CGROUP_INET_EGRESS                = 0x1
 | 
			
		||||
	BPF_CGROUP_INET_SOCK_CREATE           = 0x2
 | 
			
		||||
	BPF_CGROUP_SOCK_OPS                   = 0x3
 | 
			
		||||
	BPF_SK_SKB_STREAM_PARSER              = 0x4
 | 
			
		||||
	BPF_SK_SKB_STREAM_VERDICT             = 0x5
 | 
			
		||||
	BPF_CGROUP_DEVICE                     = 0x6
 | 
			
		||||
	BPF_SK_MSG_VERDICT                    = 0x7
 | 
			
		||||
	BPF_CGROUP_INET4_BIND                 = 0x8
 | 
			
		||||
	BPF_CGROUP_INET6_BIND                 = 0x9
 | 
			
		||||
	BPF_CGROUP_INET4_CONNECT              = 0xa
 | 
			
		||||
	BPF_CGROUP_INET6_CONNECT              = 0xb
 | 
			
		||||
	BPF_CGROUP_INET4_POST_BIND            = 0xc
 | 
			
		||||
	BPF_CGROUP_INET6_POST_BIND            = 0xd
 | 
			
		||||
	BPF_CGROUP_UDP4_SENDMSG               = 0xe
 | 
			
		||||
	BPF_CGROUP_UDP6_SENDMSG               = 0xf
 | 
			
		||||
	BPF_LIRC_MODE2                        = 0x10
 | 
			
		||||
	BPF_FLOW_DISSECTOR                    = 0x11
 | 
			
		||||
	BPF_CGROUP_SYSCTL                     = 0x12
 | 
			
		||||
	BPF_CGROUP_UDP4_RECVMSG               = 0x13
 | 
			
		||||
	BPF_CGROUP_UDP6_RECVMSG               = 0x14
 | 
			
		||||
	BPF_CGROUP_GETSOCKOPT                 = 0x15
 | 
			
		||||
	BPF_CGROUP_SETSOCKOPT                 = 0x16
 | 
			
		||||
	BPF_TRACE_RAW_TP                      = 0x17
 | 
			
		||||
	BPF_TRACE_FENTRY                      = 0x18
 | 
			
		||||
	BPF_TRACE_FEXIT                       = 0x19
 | 
			
		||||
	BPF_STACK_BUILD_ID_EMPTY              = 0x0
 | 
			
		||||
	BPF_STACK_BUILD_ID_VALID              = 0x1
 | 
			
		||||
	BPF_STACK_BUILD_ID_IP                 = 0x2
 | 
			
		||||
	BPF_ADJ_ROOM_NET                      = 0x0
 | 
			
		||||
	BPF_ADJ_ROOM_MAC                      = 0x1
 | 
			
		||||
	BPF_HDR_START_MAC                     = 0x0
 | 
			
		||||
	BPF_HDR_START_NET                     = 0x1
 | 
			
		||||
	BPF_LWT_ENCAP_SEG6                    = 0x0
 | 
			
		||||
	BPF_LWT_ENCAP_SEG6_INLINE             = 0x1
 | 
			
		||||
	BPF_LWT_ENCAP_IP                      = 0x2
 | 
			
		||||
	BPF_OK                                = 0x0
 | 
			
		||||
	BPF_DROP                              = 0x2
 | 
			
		||||
	BPF_REDIRECT                          = 0x7
 | 
			
		||||
	BPF_LWT_REROUTE                       = 0x80
 | 
			
		||||
	BPF_SOCK_OPS_VOID                     = 0x0
 | 
			
		||||
	BPF_SOCK_OPS_TIMEOUT_INIT             = 0x1
 | 
			
		||||
	BPF_SOCK_OPS_RWND_INIT                = 0x2
 | 
			
		||||
	BPF_SOCK_OPS_TCP_CONNECT_CB           = 0x3
 | 
			
		||||
	BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB    = 0x4
 | 
			
		||||
	BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB   = 0x5
 | 
			
		||||
	BPF_SOCK_OPS_NEEDS_ECN                = 0x6
 | 
			
		||||
	BPF_SOCK_OPS_BASE_RTT                 = 0x7
 | 
			
		||||
	BPF_SOCK_OPS_RTO_CB                   = 0x8
 | 
			
		||||
	BPF_SOCK_OPS_RETRANS_CB               = 0x9
 | 
			
		||||
	BPF_SOCK_OPS_STATE_CB                 = 0xa
 | 
			
		||||
	BPF_SOCK_OPS_TCP_LISTEN_CB            = 0xb
 | 
			
		||||
	BPF_SOCK_OPS_RTT_CB                   = 0xc
 | 
			
		||||
	BPF_TCP_ESTABLISHED                   = 0x1
 | 
			
		||||
	BPF_TCP_SYN_SENT                      = 0x2
 | 
			
		||||
	BPF_TCP_SYN_RECV                      = 0x3
 | 
			
		||||
	BPF_TCP_FIN_WAIT1                     = 0x4
 | 
			
		||||
	BPF_TCP_FIN_WAIT2                     = 0x5
 | 
			
		||||
	BPF_TCP_TIME_WAIT                     = 0x6
 | 
			
		||||
	BPF_TCP_CLOSE                         = 0x7
 | 
			
		||||
	BPF_TCP_CLOSE_WAIT                    = 0x8
 | 
			
		||||
	BPF_TCP_LAST_ACK                      = 0x9
 | 
			
		||||
	BPF_TCP_LISTEN                        = 0xa
 | 
			
		||||
	BPF_TCP_CLOSING                       = 0xb
 | 
			
		||||
	BPF_TCP_NEW_SYN_RECV                  = 0xc
 | 
			
		||||
	BPF_TCP_MAX_STATES                    = 0xd
 | 
			
		||||
	BPF_FIB_LKUP_RET_SUCCESS              = 0x0
 | 
			
		||||
	BPF_FIB_LKUP_RET_BLACKHOLE            = 0x1
 | 
			
		||||
	BPF_FIB_LKUP_RET_UNREACHABLE          = 0x2
 | 
			
		||||
	BPF_FIB_LKUP_RET_PROHIBIT             = 0x3
 | 
			
		||||
	BPF_FIB_LKUP_RET_NOT_FWDED            = 0x4
 | 
			
		||||
	BPF_FIB_LKUP_RET_FWD_DISABLED         = 0x5
 | 
			
		||||
	BPF_FIB_LKUP_RET_UNSUPP_LWT           = 0x6
 | 
			
		||||
	BPF_FIB_LKUP_RET_NO_NEIGH             = 0x7
 | 
			
		||||
	BPF_FIB_LKUP_RET_FRAG_NEEDED          = 0x8
 | 
			
		||||
	BPF_FD_TYPE_RAW_TRACEPOINT            = 0x0
 | 
			
		||||
	BPF_FD_TYPE_TRACEPOINT                = 0x1
 | 
			
		||||
	BPF_FD_TYPE_KPROBE                    = 0x2
 | 
			
		||||
	BPF_FD_TYPE_KRETPROBE                 = 0x3
 | 
			
		||||
	BPF_FD_TYPE_UPROBE                    = 0x4
 | 
			
		||||
	BPF_FD_TYPE_URETPROBE                 = 0x5
 | 
			
		||||
	BPF_REG_0                               = 0x0
 | 
			
		||||
	BPF_REG_1                               = 0x1
 | 
			
		||||
	BPF_REG_2                               = 0x2
 | 
			
		||||
	BPF_REG_3                               = 0x3
 | 
			
		||||
	BPF_REG_4                               = 0x4
 | 
			
		||||
	BPF_REG_5                               = 0x5
 | 
			
		||||
	BPF_REG_6                               = 0x6
 | 
			
		||||
	BPF_REG_7                               = 0x7
 | 
			
		||||
	BPF_REG_8                               = 0x8
 | 
			
		||||
	BPF_REG_9                               = 0x9
 | 
			
		||||
	BPF_REG_10                              = 0xa
 | 
			
		||||
	BPF_MAP_CREATE                          = 0x0
 | 
			
		||||
	BPF_MAP_LOOKUP_ELEM                     = 0x1
 | 
			
		||||
	BPF_MAP_UPDATE_ELEM                     = 0x2
 | 
			
		||||
	BPF_MAP_DELETE_ELEM                     = 0x3
 | 
			
		||||
	BPF_MAP_GET_NEXT_KEY                    = 0x4
 | 
			
		||||
	BPF_PROG_LOAD                           = 0x5
 | 
			
		||||
	BPF_OBJ_PIN                             = 0x6
 | 
			
		||||
	BPF_OBJ_GET                             = 0x7
 | 
			
		||||
	BPF_PROG_ATTACH                         = 0x8
 | 
			
		||||
	BPF_PROG_DETACH                         = 0x9
 | 
			
		||||
	BPF_PROG_TEST_RUN                       = 0xa
 | 
			
		||||
	BPF_PROG_GET_NEXT_ID                    = 0xb
 | 
			
		||||
	BPF_MAP_GET_NEXT_ID                     = 0xc
 | 
			
		||||
	BPF_PROG_GET_FD_BY_ID                   = 0xd
 | 
			
		||||
	BPF_MAP_GET_FD_BY_ID                    = 0xe
 | 
			
		||||
	BPF_OBJ_GET_INFO_BY_FD                  = 0xf
 | 
			
		||||
	BPF_PROG_QUERY                          = 0x10
 | 
			
		||||
	BPF_RAW_TRACEPOINT_OPEN                 = 0x11
 | 
			
		||||
	BPF_BTF_LOAD                            = 0x12
 | 
			
		||||
	BPF_BTF_GET_FD_BY_ID                    = 0x13
 | 
			
		||||
	BPF_TASK_FD_QUERY                       = 0x14
 | 
			
		||||
	BPF_MAP_LOOKUP_AND_DELETE_ELEM          = 0x15
 | 
			
		||||
	BPF_MAP_FREEZE                          = 0x16
 | 
			
		||||
	BPF_BTF_GET_NEXT_ID                     = 0x17
 | 
			
		||||
	BPF_MAP_LOOKUP_BATCH                    = 0x18
 | 
			
		||||
	BPF_MAP_LOOKUP_AND_DELETE_BATCH         = 0x19
 | 
			
		||||
	BPF_MAP_UPDATE_BATCH                    = 0x1a
 | 
			
		||||
	BPF_MAP_DELETE_BATCH                    = 0x1b
 | 
			
		||||
	BPF_LINK_CREATE                         = 0x1c
 | 
			
		||||
	BPF_LINK_UPDATE                         = 0x1d
 | 
			
		||||
	BPF_MAP_TYPE_UNSPEC                     = 0x0
 | 
			
		||||
	BPF_MAP_TYPE_HASH                       = 0x1
 | 
			
		||||
	BPF_MAP_TYPE_ARRAY                      = 0x2
 | 
			
		||||
	BPF_MAP_TYPE_PROG_ARRAY                 = 0x3
 | 
			
		||||
	BPF_MAP_TYPE_PERF_EVENT_ARRAY           = 0x4
 | 
			
		||||
	BPF_MAP_TYPE_PERCPU_HASH                = 0x5
 | 
			
		||||
	BPF_MAP_TYPE_PERCPU_ARRAY               = 0x6
 | 
			
		||||
	BPF_MAP_TYPE_STACK_TRACE                = 0x7
 | 
			
		||||
	BPF_MAP_TYPE_CGROUP_ARRAY               = 0x8
 | 
			
		||||
	BPF_MAP_TYPE_LRU_HASH                   = 0x9
 | 
			
		||||
	BPF_MAP_TYPE_LRU_PERCPU_HASH            = 0xa
 | 
			
		||||
	BPF_MAP_TYPE_LPM_TRIE                   = 0xb
 | 
			
		||||
	BPF_MAP_TYPE_ARRAY_OF_MAPS              = 0xc
 | 
			
		||||
	BPF_MAP_TYPE_HASH_OF_MAPS               = 0xd
 | 
			
		||||
	BPF_MAP_TYPE_DEVMAP                     = 0xe
 | 
			
		||||
	BPF_MAP_TYPE_SOCKMAP                    = 0xf
 | 
			
		||||
	BPF_MAP_TYPE_CPUMAP                     = 0x10
 | 
			
		||||
	BPF_MAP_TYPE_XSKMAP                     = 0x11
 | 
			
		||||
	BPF_MAP_TYPE_SOCKHASH                   = 0x12
 | 
			
		||||
	BPF_MAP_TYPE_CGROUP_STORAGE             = 0x13
 | 
			
		||||
	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY        = 0x14
 | 
			
		||||
	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE      = 0x15
 | 
			
		||||
	BPF_MAP_TYPE_QUEUE                      = 0x16
 | 
			
		||||
	BPF_MAP_TYPE_STACK                      = 0x17
 | 
			
		||||
	BPF_MAP_TYPE_SK_STORAGE                 = 0x18
 | 
			
		||||
	BPF_MAP_TYPE_DEVMAP_HASH                = 0x19
 | 
			
		||||
	BPF_MAP_TYPE_STRUCT_OPS                 = 0x1a
 | 
			
		||||
	BPF_PROG_TYPE_UNSPEC                    = 0x0
 | 
			
		||||
	BPF_PROG_TYPE_SOCKET_FILTER             = 0x1
 | 
			
		||||
	BPF_PROG_TYPE_KPROBE                    = 0x2
 | 
			
		||||
	BPF_PROG_TYPE_SCHED_CLS                 = 0x3
 | 
			
		||||
	BPF_PROG_TYPE_SCHED_ACT                 = 0x4
 | 
			
		||||
	BPF_PROG_TYPE_TRACEPOINT                = 0x5
 | 
			
		||||
	BPF_PROG_TYPE_XDP                       = 0x6
 | 
			
		||||
	BPF_PROG_TYPE_PERF_EVENT                = 0x7
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SKB                = 0x8
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SOCK               = 0x9
 | 
			
		||||
	BPF_PROG_TYPE_LWT_IN                    = 0xa
 | 
			
		||||
	BPF_PROG_TYPE_LWT_OUT                   = 0xb
 | 
			
		||||
	BPF_PROG_TYPE_LWT_XMIT                  = 0xc
 | 
			
		||||
	BPF_PROG_TYPE_SOCK_OPS                  = 0xd
 | 
			
		||||
	BPF_PROG_TYPE_SK_SKB                    = 0xe
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_DEVICE             = 0xf
 | 
			
		||||
	BPF_PROG_TYPE_SK_MSG                    = 0x10
 | 
			
		||||
	BPF_PROG_TYPE_RAW_TRACEPOINT            = 0x11
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SOCK_ADDR          = 0x12
 | 
			
		||||
	BPF_PROG_TYPE_LWT_SEG6LOCAL             = 0x13
 | 
			
		||||
	BPF_PROG_TYPE_LIRC_MODE2                = 0x14
 | 
			
		||||
	BPF_PROG_TYPE_SK_REUSEPORT              = 0x15
 | 
			
		||||
	BPF_PROG_TYPE_FLOW_DISSECTOR            = 0x16
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SYSCTL             = 0x17
 | 
			
		||||
	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE   = 0x18
 | 
			
		||||
	BPF_PROG_TYPE_CGROUP_SOCKOPT            = 0x19
 | 
			
		||||
	BPF_PROG_TYPE_TRACING                   = 0x1a
 | 
			
		||||
	BPF_PROG_TYPE_STRUCT_OPS                = 0x1b
 | 
			
		||||
	BPF_PROG_TYPE_EXT                       = 0x1c
 | 
			
		||||
	BPF_PROG_TYPE_LSM                       = 0x1d
 | 
			
		||||
	BPF_CGROUP_INET_INGRESS                 = 0x0
 | 
			
		||||
	BPF_CGROUP_INET_EGRESS                  = 0x1
 | 
			
		||||
	BPF_CGROUP_INET_SOCK_CREATE             = 0x2
 | 
			
		||||
	BPF_CGROUP_SOCK_OPS                     = 0x3
 | 
			
		||||
	BPF_SK_SKB_STREAM_PARSER                = 0x4
 | 
			
		||||
	BPF_SK_SKB_STREAM_VERDICT               = 0x5
 | 
			
		||||
	BPF_CGROUP_DEVICE                       = 0x6
 | 
			
		||||
	BPF_SK_MSG_VERDICT                      = 0x7
 | 
			
		||||
	BPF_CGROUP_INET4_BIND                   = 0x8
 | 
			
		||||
	BPF_CGROUP_INET6_BIND                   = 0x9
 | 
			
		||||
	BPF_CGROUP_INET4_CONNECT                = 0xa
 | 
			
		||||
	BPF_CGROUP_INET6_CONNECT                = 0xb
 | 
			
		||||
	BPF_CGROUP_INET4_POST_BIND              = 0xc
 | 
			
		||||
	BPF_CGROUP_INET6_POST_BIND              = 0xd
 | 
			
		||||
	BPF_CGROUP_UDP4_SENDMSG                 = 0xe
 | 
			
		||||
	BPF_CGROUP_UDP6_SENDMSG                 = 0xf
 | 
			
		||||
	BPF_LIRC_MODE2                          = 0x10
 | 
			
		||||
	BPF_FLOW_DISSECTOR                      = 0x11
 | 
			
		||||
	BPF_CGROUP_SYSCTL                       = 0x12
 | 
			
		||||
	BPF_CGROUP_UDP4_RECVMSG                 = 0x13
 | 
			
		||||
	BPF_CGROUP_UDP6_RECVMSG                 = 0x14
 | 
			
		||||
	BPF_CGROUP_GETSOCKOPT                   = 0x15
 | 
			
		||||
	BPF_CGROUP_SETSOCKOPT                   = 0x16
 | 
			
		||||
	BPF_TRACE_RAW_TP                        = 0x17
 | 
			
		||||
	BPF_TRACE_FENTRY                        = 0x18
 | 
			
		||||
	BPF_TRACE_FEXIT                         = 0x19
 | 
			
		||||
	BPF_MODIFY_RETURN                       = 0x1a
 | 
			
		||||
	BPF_LSM_MAC                             = 0x1b
 | 
			
		||||
	BPF_ANY                                 = 0x0
 | 
			
		||||
	BPF_NOEXIST                             = 0x1
 | 
			
		||||
	BPF_EXIST                               = 0x2
 | 
			
		||||
	BPF_F_LOCK                              = 0x4
 | 
			
		||||
	BPF_F_NO_PREALLOC                       = 0x1
 | 
			
		||||
	BPF_F_NO_COMMON_LRU                     = 0x2
 | 
			
		||||
	BPF_F_NUMA_NODE                         = 0x4
 | 
			
		||||
	BPF_F_RDONLY                            = 0x8
 | 
			
		||||
	BPF_F_WRONLY                            = 0x10
 | 
			
		||||
	BPF_F_STACK_BUILD_ID                    = 0x20
 | 
			
		||||
	BPF_F_ZERO_SEED                         = 0x40
 | 
			
		||||
	BPF_F_RDONLY_PROG                       = 0x80
 | 
			
		||||
	BPF_F_WRONLY_PROG                       = 0x100
 | 
			
		||||
	BPF_F_CLONE                             = 0x200
 | 
			
		||||
	BPF_F_MMAPABLE                          = 0x400
 | 
			
		||||
	BPF_STACK_BUILD_ID_EMPTY                = 0x0
 | 
			
		||||
	BPF_STACK_BUILD_ID_VALID                = 0x1
 | 
			
		||||
	BPF_STACK_BUILD_ID_IP                   = 0x2
 | 
			
		||||
	BPF_F_RECOMPUTE_CSUM                    = 0x1
 | 
			
		||||
	BPF_F_INVALIDATE_HASH                   = 0x2
 | 
			
		||||
	BPF_F_HDR_FIELD_MASK                    = 0xf
 | 
			
		||||
	BPF_F_PSEUDO_HDR                        = 0x10
 | 
			
		||||
	BPF_F_MARK_MANGLED_0                    = 0x20
 | 
			
		||||
	BPF_F_MARK_ENFORCE                      = 0x40
 | 
			
		||||
	BPF_F_INGRESS                           = 0x1
 | 
			
		||||
	BPF_F_TUNINFO_IPV6                      = 0x1
 | 
			
		||||
	BPF_F_SKIP_FIELD_MASK                   = 0xff
 | 
			
		||||
	BPF_F_USER_STACK                        = 0x100
 | 
			
		||||
	BPF_F_FAST_STACK_CMP                    = 0x200
 | 
			
		||||
	BPF_F_REUSE_STACKID                     = 0x400
 | 
			
		||||
	BPF_F_USER_BUILD_ID                     = 0x800
 | 
			
		||||
	BPF_F_ZERO_CSUM_TX                      = 0x2
 | 
			
		||||
	BPF_F_DONT_FRAGMENT                     = 0x4
 | 
			
		||||
	BPF_F_SEQ_NUMBER                        = 0x8
 | 
			
		||||
	BPF_F_INDEX_MASK                        = 0xffffffff
 | 
			
		||||
	BPF_F_CURRENT_CPU                       = 0xffffffff
 | 
			
		||||
	BPF_F_CTXLEN_MASK                       = 0xfffff00000000
 | 
			
		||||
	BPF_F_CURRENT_NETNS                     = -0x1
 | 
			
		||||
	BPF_F_ADJ_ROOM_FIXED_GSO                = 0x1
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L3_IPV4            = 0x2
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L3_IPV6            = 0x4
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L4_GRE             = 0x8
 | 
			
		||||
	BPF_F_ADJ_ROOM_ENCAP_L4_UDP             = 0x10
 | 
			
		||||
	BPF_ADJ_ROOM_ENCAP_L2_MASK              = 0xff
 | 
			
		||||
	BPF_ADJ_ROOM_ENCAP_L2_SHIFT             = 0x38
 | 
			
		||||
	BPF_F_SYSCTL_BASE_NAME                  = 0x1
 | 
			
		||||
	BPF_SK_STORAGE_GET_F_CREATE             = 0x1
 | 
			
		||||
	BPF_F_GET_BRANCH_RECORDS_SIZE           = 0x1
 | 
			
		||||
	BPF_ADJ_ROOM_NET                        = 0x0
 | 
			
		||||
	BPF_ADJ_ROOM_MAC                        = 0x1
 | 
			
		||||
	BPF_HDR_START_MAC                       = 0x0
 | 
			
		||||
	BPF_HDR_START_NET                       = 0x1
 | 
			
		||||
	BPF_LWT_ENCAP_SEG6                      = 0x0
 | 
			
		||||
	BPF_LWT_ENCAP_SEG6_INLINE               = 0x1
 | 
			
		||||
	BPF_LWT_ENCAP_IP                        = 0x2
 | 
			
		||||
	BPF_OK                                  = 0x0
 | 
			
		||||
	BPF_DROP                                = 0x2
 | 
			
		||||
	BPF_REDIRECT                            = 0x7
 | 
			
		||||
	BPF_LWT_REROUTE                         = 0x80
 | 
			
		||||
	BPF_SOCK_OPS_RTO_CB_FLAG                = 0x1
 | 
			
		||||
	BPF_SOCK_OPS_RETRANS_CB_FLAG            = 0x2
 | 
			
		||||
	BPF_SOCK_OPS_STATE_CB_FLAG              = 0x4
 | 
			
		||||
	BPF_SOCK_OPS_RTT_CB_FLAG                = 0x8
 | 
			
		||||
	BPF_SOCK_OPS_ALL_CB_FLAGS               = 0xf
 | 
			
		||||
	BPF_SOCK_OPS_VOID                       = 0x0
 | 
			
		||||
	BPF_SOCK_OPS_TIMEOUT_INIT               = 0x1
 | 
			
		||||
	BPF_SOCK_OPS_RWND_INIT                  = 0x2
 | 
			
		||||
	BPF_SOCK_OPS_TCP_CONNECT_CB             = 0x3
 | 
			
		||||
	BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB      = 0x4
 | 
			
		||||
	BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB     = 0x5
 | 
			
		||||
	BPF_SOCK_OPS_NEEDS_ECN                  = 0x6
 | 
			
		||||
	BPF_SOCK_OPS_BASE_RTT                   = 0x7
 | 
			
		||||
	BPF_SOCK_OPS_RTO_CB                     = 0x8
 | 
			
		||||
	BPF_SOCK_OPS_RETRANS_CB                 = 0x9
 | 
			
		||||
	BPF_SOCK_OPS_STATE_CB                   = 0xa
 | 
			
		||||
	BPF_SOCK_OPS_TCP_LISTEN_CB              = 0xb
 | 
			
		||||
	BPF_SOCK_OPS_RTT_CB                     = 0xc
 | 
			
		||||
	BPF_TCP_ESTABLISHED                     = 0x1
 | 
			
		||||
	BPF_TCP_SYN_SENT                        = 0x2
 | 
			
		||||
	BPF_TCP_SYN_RECV                        = 0x3
 | 
			
		||||
	BPF_TCP_FIN_WAIT1                       = 0x4
 | 
			
		||||
	BPF_TCP_FIN_WAIT2                       = 0x5
 | 
			
		||||
	BPF_TCP_TIME_WAIT                       = 0x6
 | 
			
		||||
	BPF_TCP_CLOSE                           = 0x7
 | 
			
		||||
	BPF_TCP_CLOSE_WAIT                      = 0x8
 | 
			
		||||
	BPF_TCP_LAST_ACK                        = 0x9
 | 
			
		||||
	BPF_TCP_LISTEN                          = 0xa
 | 
			
		||||
	BPF_TCP_CLOSING                         = 0xb
 | 
			
		||||
	BPF_TCP_NEW_SYN_RECV                    = 0xc
 | 
			
		||||
	BPF_TCP_MAX_STATES                      = 0xd
 | 
			
		||||
	TCP_BPF_IW                              = 0x3e9
 | 
			
		||||
	TCP_BPF_SNDCWND_CLAMP                   = 0x3ea
 | 
			
		||||
	BPF_DEVCG_ACC_MKNOD                     = 0x1
 | 
			
		||||
	BPF_DEVCG_ACC_READ                      = 0x2
 | 
			
		||||
	BPF_DEVCG_ACC_WRITE                     = 0x4
 | 
			
		||||
	BPF_DEVCG_DEV_BLOCK                     = 0x1
 | 
			
		||||
	BPF_DEVCG_DEV_CHAR                      = 0x2
 | 
			
		||||
	BPF_FIB_LOOKUP_DIRECT                   = 0x1
 | 
			
		||||
	BPF_FIB_LOOKUP_OUTPUT                   = 0x2
 | 
			
		||||
	BPF_FIB_LKUP_RET_SUCCESS                = 0x0
 | 
			
		||||
	BPF_FIB_LKUP_RET_BLACKHOLE              = 0x1
 | 
			
		||||
	BPF_FIB_LKUP_RET_UNREACHABLE            = 0x2
 | 
			
		||||
	BPF_FIB_LKUP_RET_PROHIBIT               = 0x3
 | 
			
		||||
	BPF_FIB_LKUP_RET_NOT_FWDED              = 0x4
 | 
			
		||||
	BPF_FIB_LKUP_RET_FWD_DISABLED           = 0x5
 | 
			
		||||
	BPF_FIB_LKUP_RET_UNSUPP_LWT             = 0x6
 | 
			
		||||
	BPF_FIB_LKUP_RET_NO_NEIGH               = 0x7
 | 
			
		||||
	BPF_FIB_LKUP_RET_FRAG_NEEDED            = 0x8
 | 
			
		||||
	BPF_FD_TYPE_RAW_TRACEPOINT              = 0x0
 | 
			
		||||
	BPF_FD_TYPE_TRACEPOINT                  = 0x1
 | 
			
		||||
	BPF_FD_TYPE_KPROBE                      = 0x2
 | 
			
		||||
	BPF_FD_TYPE_KRETPROBE                   = 0x3
 | 
			
		||||
	BPF_FD_TYPE_UPROBE                      = 0x4
 | 
			
		||||
	BPF_FD_TYPE_URETPROBE                   = 0x5
 | 
			
		||||
	BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG     = 0x1
 | 
			
		||||
	BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2
 | 
			
		||||
	BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP      = 0x4
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
| 
						 | 
				
			
			@ -2205,7 +2279,7 @@ const (
 | 
			
		|||
	DEVLINK_CMD_DPIPE_ENTRIES_GET             = 0x20
 | 
			
		||||
	DEVLINK_CMD_DPIPE_HEADERS_GET             = 0x21
 | 
			
		||||
	DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET      = 0x22
 | 
			
		||||
	DEVLINK_CMD_MAX                           = 0x44
 | 
			
		||||
	DEVLINK_CMD_MAX                           = 0x48
 | 
			
		||||
	DEVLINK_PORT_TYPE_NOTSET                  = 0x0
 | 
			
		||||
	DEVLINK_PORT_TYPE_AUTO                    = 0x1
 | 
			
		||||
	DEVLINK_PORT_TYPE_ETH                     = 0x2
 | 
			
		||||
| 
						 | 
				
			
			@ -2285,7 +2359,7 @@ const (
 | 
			
		|||
	DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE     = 0x3c
 | 
			
		||||
	DEVLINK_ATTR_PAD                          = 0x3d
 | 
			
		||||
	DEVLINK_ATTR_ESWITCH_ENCAP_MODE           = 0x3e
 | 
			
		||||
	DEVLINK_ATTR_MAX                          = 0x8c
 | 
			
		||||
	DEVLINK_ATTR_MAX                          = 0x90
 | 
			
		||||
	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE     = 0x0
 | 
			
		||||
	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX  = 0x1
 | 
			
		||||
	DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT      = 0x0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -81,7 +81,7 @@ github.com/prometheus/common/model
 | 
			
		|||
github.com/prometheus/common/promlog
 | 
			
		||||
github.com/prometheus/common/promlog/flag
 | 
			
		||||
github.com/prometheus/common/version
 | 
			
		||||
# github.com/prometheus/procfs v0.0.11
 | 
			
		||||
# github.com/prometheus/procfs v0.1.3
 | 
			
		||||
## explicit
 | 
			
		||||
github.com/prometheus/procfs
 | 
			
		||||
github.com/prometheus/procfs/bcache
 | 
			
		||||
| 
						 | 
				
			
			@ -123,7 +123,7 @@ golang.org/x/net/trace
 | 
			
		|||
# golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a
 | 
			
		||||
## explicit
 | 
			
		||||
golang.org/x/sync/errgroup
 | 
			
		||||
# golang.org/x/sys v0.0.0-20200523222454-059865788121
 | 
			
		||||
# golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980
 | 
			
		||||
## explicit
 | 
			
		||||
golang.org/x/sys/internal/unsafeheader
 | 
			
		||||
golang.org/x/sys/unix
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue