2 * (C) 2004-2009 Dominik Brodowski <linux@dominikbrodowski.de>
4 * Licensed under the terms of the GNU GPL License version 2.
14 #include "interfaces.h"
18 int cpufreq_cpu_exists(unsigned int cpu)
20 int ret = sysfs_cpu_exists(cpu);
22 ret = proc_cpu_exists(cpu);
26 unsigned long cpufreq_get_freq_kernel(unsigned int cpu)
28 unsigned long ret = sysfs_get_freq_kernel(cpu);
30 ret = proc_get_freq_kernel(cpu);
34 unsigned long cpufreq_get_freq_hardware(unsigned int cpu)
36 unsigned long ret = sysfs_get_freq_hardware(cpu);
38 ret = proc_get_freq_hardware(cpu);
42 unsigned long cpufreq_get_transition_latency(unsigned int cpu)
44 unsigned long ret = sysfs_get_transition_latency(cpu);
46 ret = proc_get_transition_latency(cpu);
50 int cpufreq_get_hardware_limits(unsigned int cpu,
57 ret = sysfs_get_hardware_limits(cpu, min, max);
59 ret = proc_get_hardware_limits(cpu, min, max);
63 char * cpufreq_get_driver(unsigned int cpu) {
65 ret = sysfs_get_driver(cpu);
67 ret = proc_get_driver(cpu);
72 void cpufreq_put_driver(char * ptr) {
78 struct cpufreq_policy * cpufreq_get_policy(unsigned int cpu) {
79 struct cpufreq_policy * ret;
80 ret = sysfs_get_policy(cpu);
82 ret = proc_get_policy(cpu);
86 void cpufreq_put_policy(struct cpufreq_policy *policy) {
87 if ((!policy) || (!policy->governor))
90 free(policy->governor);
91 policy->governor = NULL;
95 struct cpufreq_available_governors * cpufreq_get_available_governors(unsigned int cpu) {
96 struct cpufreq_available_governors *ret;
97 ret = sysfs_get_available_governors(cpu);
99 ret = proc_get_available_governors(cpu);
103 void cpufreq_put_available_governors(struct cpufreq_available_governors *any) {
104 struct cpufreq_available_governors *tmp, *next;
120 struct cpufreq_available_frequencies * cpufreq_get_available_frequencies(unsigned int cpu) {
121 struct cpufreq_available_frequencies * ret;
122 ret = sysfs_get_available_frequencies(cpu);
124 ret = proc_get_available_frequencies(cpu);
128 void cpufreq_put_available_frequencies(struct cpufreq_available_frequencies *any) {
129 struct cpufreq_available_frequencies *tmp, *next;
143 struct cpufreq_affected_cpus * cpufreq_get_affected_cpus(unsigned int cpu) {
144 struct cpufreq_affected_cpus * ret;
145 ret = sysfs_get_affected_cpus(cpu);
147 ret = proc_get_affected_cpus(cpu);
151 void cpufreq_put_affected_cpus(struct cpufreq_affected_cpus *any) {
152 struct cpufreq_affected_cpus *tmp, *next;
166 struct cpufreq_affected_cpus * cpufreq_get_related_cpus(unsigned int cpu) {
167 struct cpufreq_affected_cpus * ret;
168 ret = sysfs_get_related_cpus(cpu);
170 ret = proc_get_related_cpus(cpu);
174 void cpufreq_put_related_cpus(struct cpufreq_affected_cpus *any) {
175 cpufreq_put_affected_cpus(any);
179 int cpufreq_set_policy(unsigned int cpu, struct cpufreq_policy *policy) {
181 if (!policy || !(policy->governor))
184 ret = sysfs_set_policy(cpu, policy);
186 ret = proc_set_policy(cpu, policy);
191 int cpufreq_modify_policy_min(unsigned int cpu, unsigned long min_freq) {
194 ret = sysfs_modify_policy_min(cpu, min_freq);
196 ret = proc_modify_policy_min(cpu, min_freq);
201 int cpufreq_modify_policy_max(unsigned int cpu, unsigned long max_freq) {
204 ret = sysfs_modify_policy_max(cpu, max_freq);
206 ret = proc_modify_policy_max(cpu, max_freq);
211 int cpufreq_modify_policy_governor(unsigned int cpu, char *governor) {
214 if ((!governor) || (strlen(governor) > 19))
217 ret = sysfs_modify_policy_governor(cpu, governor);
219 ret = proc_modify_policy_governor(cpu, governor);
223 int cpufreq_set_frequency(unsigned int cpu, unsigned long target_frequency) {
226 ret = sysfs_set_frequency(cpu, target_frequency);
228 ret = proc_set_frequency(cpu, target_frequency);
232 struct cpufreq_stats * cpufreq_get_stats(unsigned int cpu, unsigned long long *total_time) {
233 struct cpufreq_stats *ret;
235 ret = sysfs_get_stats(cpu, total_time);
239 void cpufreq_put_stats(struct cpufreq_stats *any) {
240 struct cpufreq_stats *tmp, *next;
253 unsigned long cpufreq_get_transitions(unsigned int cpu) {
254 unsigned long ret = sysfs_get_transitions(cpu);
259 unsigned int count_cpus(void)
262 char value[LINE_LEN];
263 unsigned int ret = 0;
264 unsigned int cpunr = 0;
266 fp = fopen("/proc/stat", "r");
268 //printf(gettext("Couldn't count the number of CPUs (%s: %s), assuming 1\n"), "/proc/stat", strerror(errno));
273 if (!fgets(value, LINE_LEN, fp))
275 value[LINE_LEN - 1] = '\0';
276 if (strlen(value) < (LINE_LEN - 2))
278 if (strstr(value, "cpu "))
280 if (sscanf(value, "cpu%d ", &cpunr) != 1)
287 /* cpu count starts from 0, on error return 1 (UP) */
291 unsigned long cpufreq_get_up_threshold(unsigned int cpu)
293 unsigned long ret = sysfs_get_up_threshold(cpu);
297 unsigned long cpufreq_get_sampling_rate(unsigned int cpu)
299 unsigned long ret = sysfs_get_sampling_rate(cpu);
303 int cpufreq_set_up_threshold(unsigned int cpu, unsigned long target_up_threshold)
306 ret = sysfs_set_up_threshold(cpu, target_up_threshold);
310 int cpufreq_set_sampling_rate(unsigned int cpu, unsigned long target_sampling_rate)
313 ret = sysfs_set_sampling_rate(cpu, target_sampling_rate);
317 int cpufreq_get_ignore_nice_load(unsigned int cpu)
319 return sysfs_get_ignore_nice_load(cpu);
322 int cpufreq_set_ignore_nice_load(unsigned int cpu, int target_ignore_nice_load)
324 return sysfs_set_ignore_nice_load(cpu, target_ignore_nice_load);
327 int cpufreq_get_SmartReflex()
329 return sysfs_get_SmartReflex();
332 int cpufreq_set_SmartReflex(int target_ignore_nice_load)
334 sysfs_set_SmartReflex(target_ignore_nice_load);