simplify the driver interface

This commit is contained in:
alu
2026-08-07 09:29:17 -07:00
parent b99bb45877
commit 31c409a94c
13 changed files with 181 additions and 197 deletions
+22 -3
View File
@@ -11,11 +11,30 @@ import (
type SysDriver struct{}
func NewSysDriver() *SysDriver {
return &SysDriver{}
func NewSysDriver() (*SysDriver, error) {
r := SysDriver{}
_, err := r.Read()
return &r, err
}
func (r *SysDriver) ReadClockSensors() ([]ClockSensor, error) {
func (r *SysDriver) Render(console *strings.Builder) error {
fmt.Fprint(console, "--- Clock Frequency ---\n")
c, err := r.Read()
if err != nil {
return err
}
clock := c.([]ClockSensor)
for _, sensor := range clock {
// \033[K clears from cursor to end of line (prevents lingering chars)
fmt.Fprintf(console, "%-16s | %.2f GHz\033[K\n", sensor.Name, sensor.FrequencyGHz)
}
return nil
}
func (r *SysDriver) Read() (any, error) {
// Glob directly targets scaling_cur_freq for all numerical CPU core paths
freqFiles, err := filepath.Glob("/sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq")
if err != nil {