[android][host] fix Info() failure due to forbidden /proc/stat and /proc/uptime (#1361)

* [android][host] fallback to sysinfo() syscall for uptime

with Android O, /proc/{stat,uptime} both return permission denied
pull/1380/head
Aman Gupta Karmani 2 years ago committed by GitHub
parent d3ea8776ff
commit 34cc43d282
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -12,6 +12,7 @@ import (
"strconv"
"strings"
"sync"
"syscall"
"time"
)
@ -68,6 +69,17 @@ func BootTimeWithContext(ctx context.Context) (uint64, error) {
filename := HostProc(statFile)
lines, err := ReadLines(filename)
if os.IsPermission(err) {
var info syscall.Sysinfo_t
err := syscall.Sysinfo(&info)
if err != nil {
return 0, err
}
currentTime := time.Now().UnixNano() / int64(time.Second)
t := currentTime - int64(info.Uptime)
return uint64(t), nil
}
if err != nil {
return 0, err
}

Loading…
Cancel
Save