-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfrequence.go
162 lines (134 loc) · 3.56 KB
/
frequence.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package intelcpu
import (
"strconv"
)
// GetFreq - Returns current core frequency in KHz
//
// For i5-8300H value will be between 800000 and 4000000 with turbo and max at 2300000 without.
func (core *Core) GetFreq() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "scaling_cur_freq")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// GetBaseFreq - Returns base core frequency in KHz
//
// For i5-8300H it will be 2300000
func (core *Core) GetBaseFreq() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "base_frequency")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// GetMaxAvailableFreq - Returns max available core frequency in KHz
//
// For i5-8300H it will be 4000000, even if turbo is off.
func (core *Core) GetMaxAvailableFreq() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "cpuinfo_max_freq")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// GetMinAvailableFreq - Returns min available core frequency in KHz
//
// For i5-8300H it will be 800000.
func (core *Core) GetMinAvailableFreq() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "cpuinfo_min_freq")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// GetMaxFreq - Returns max core frequency
//
// Deprecated: In most cases same as GetMaxAvailableFreq()
// Will be works only with userspace governor
func (core *Core) GetMaxFreq() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "scaling_max_freq")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// GetMinFreq - Returns min core frequency
//
// Deprecated: In most cases same as GetMinAvailableFreq()
// Will be works only with userspace governor
func (core *Core) GetMinFreq() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "scaling_min_freq")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// SetMaxFreq - Sets max core frequency
//
// Deprecated: Will be works only with userspace governor
func (core *Core) SetMaxFreq(freq uint32) error {
err := statWrite(strconv.FormatUint(uint64(freq), 10), core.Path, "cpufreq", "scaling_max_freq")
if err != nil {
return err
}
return nil
}
// SetMinFreq - Sets min core frequency
//
// Deprecated: Will be works only with userspace governor
func (core *Core) SetMinFreq(freq uint32) error {
err := statWrite(strconv.FormatUint(uint64(freq), 10), core.Path, "cpufreq", "scaling_min_freq")
if err != nil {
return err
}
return nil
}
// GetSpeed - Returns core speed
//
// Deprecated: Will be works only with userspace governor
func (core *Core) GetSpeed() (uint32, error) {
resp, err := statRead(core.Path, "cpufreq", "scaling_setspeed")
if err != nil {
return 0, err
}
freq, err := strconv.ParseUint(resp, 10, 32)
if err != nil {
return 0, err
}
return uint32(freq), nil
}
// SetSpeed - Sets core speed
//
// Deprecated: Will be works only with userspace governor
func (core *Core) SetSpeed(freq uint32) error {
err := statWrite(strconv.FormatUint(uint64(freq), 10), core.Path, "cpufreq", "scaling_setspeed")
if err != nil {
return err
}
return nil
}