// 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 (
	
	
	

	
)

// LoadAvg represents an entry in /proc/loadavg.
type LoadAvg struct {
	Load1  float64
	Load5  float64
	Load15 float64
}

// LoadAvg returns loadavg from /proc.
func ( FS) () (*LoadAvg, error) {
	 := .proc.Path("loadavg")

	,  := util.ReadFileNoStat()
	if  != nil {
		return nil, 
	}
	return parseLoad()
}

// Parse /proc loadavg and return 1m, 5m and 15m.
func parseLoad( []byte) (*LoadAvg, error) {
	 := make([]float64, 3)
	 := strings.Fields(string())
	if len() < 3 {
		return nil, fmt.Errorf("%w: Malformed line %q", ErrFileParse, string())
	}

	var  error
	for ,  := range [0:3] {
		[],  = strconv.ParseFloat(, 64)
		if  != nil {
			return nil, fmt.Errorf("%w: Cannot parse load: %f: %w", ErrFileParse, [], )
		}
	}
	return &LoadAvg{
		Load1:  [0],
		Load5:  [1],
		Load15: [2],
	}, nil
}