diff --git a/internal/app/darktile/hinters/hint_dmesg_timestamp.go b/internal/app/darktile/hinters/hint_dmesg_timestamp.go index 7c48103..cb6aced 100644 --- a/internal/app/darktile/hinters/hint_dmesg_timestamp.go +++ b/internal/app/darktile/hinters/hint_dmesg_timestamp.go @@ -4,7 +4,6 @@ import ( "regexp" "strconv" "strings" - "syscall" "time" "github.com/liamg/darktile/internal/app/darktile/termutil" @@ -52,7 +51,5 @@ func (h *DmesgTimestampHinter) Click(api HintAPI) error { } func setSysStartTime() { - sysInfo := &syscall.Sysinfo_t{} - _ = syscall.Sysinfo(sysInfo) - sysStart = time.Now().Local().Add(time.Duration(int(sysInfo.Uptime*-1)) * time.Second) + sysStart = time.Now().Local().Add(time.Duration(int(getUptime()*-1)) * time.Second) } diff --git a/internal/app/darktile/hinters/uptime.go b/internal/app/darktile/hinters/uptime.go new file mode 100644 index 0000000..e04e452 --- /dev/null +++ b/internal/app/darktile/hinters/uptime.go @@ -0,0 +1,22 @@ +//go:build cgo && (!linux || unix) +package hinters + +/* +#include +#include +#include +#include + + +time_t getuptime() { + struct timespec tp; + clock_gettime(CLOCK_UPTIME, &tp); + return tp.tv_sec; +} +*/ +import "C" + +func getUptime() int64 { + time := C.getuptime() + return int64(time) +} diff --git a/internal/app/darktile/hinters/uptime_linux.go b/internal/app/darktile/hinters/uptime_linux.go new file mode 100644 index 0000000..5b806f0 --- /dev/null +++ b/internal/app/darktile/hinters/uptime_linux.go @@ -0,0 +1,11 @@ +package hinters + +import ( + "syscall" +) + +func getUptime() int64 { + sysInfo := &syscall.Sysinfo_t{} + _ = syscall.Sysinfo(sysInfo) + return sysInfo.Uptime +}