| // +build linux | |
| package sysutil | |
| import ( | |
| "bytes" | |
| "io/ioutil" | |
| "strconv" | |
| "time" | |
| ) | |
| var ( | |
| btimePrefix = []byte("btime ") | |
| lineEnd = []byte("\n") | |
| ) | |
| func init() { | |
| buf, err := ioutil.ReadFile("/proc/stat") | |
| if err != nil { | |
| btime = time.Now() | |
| return | |
| } | |
| for _, line := range bytes.SplitN(buf, lineEnd, -1) { | |
| if bytes.HasPrefix(line, btimePrefix) { | |
| t, err := strconv.ParseInt(string(line[len(btimePrefix):]), 10, 64) | |
| if err != nil { | |
| btime = time.Now() | |
| return | |
| } | |
| btime = time.Unix(t, 0) | |
| break | |
| } | |
| } | |
| } |