123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- /*
- * (C) 2004-2009 Dominik Brodowski <linux@dominikbrodowski.de>
- *
- * Licensed under the terms of the GNU GPL License version 2.
- */
- #include <stdio.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
- #include "cpufreq.h"
- #include "sysfs.h"
- int cpufreq_cpu_exists(unsigned int cpu)
- {
- return sysfs_cpu_exists(cpu);
- }
- unsigned long cpufreq_get_freq_kernel(unsigned int cpu)
- {
- return sysfs_get_freq_kernel(cpu);
- }
- unsigned long cpufreq_get_freq_hardware(unsigned int cpu)
- {
- return sysfs_get_freq_hardware(cpu);
- }
- unsigned long cpufreq_get_transition_latency(unsigned int cpu)
- {
- return sysfs_get_freq_transition_latency(cpu);
- }
- int cpufreq_get_hardware_limits(unsigned int cpu,
- unsigned long *min,
- unsigned long *max)
- {
- if ((!min) || (!max))
- return -EINVAL;
- return sysfs_get_freq_hardware_limits(cpu, min, max);
- }
- char *cpufreq_get_driver(unsigned int cpu)
- {
- return sysfs_get_freq_driver(cpu);
- }
- void cpufreq_put_driver(char *ptr)
- {
- if (!ptr)
- return;
- free(ptr);
- }
- struct cpufreq_policy *cpufreq_get_policy(unsigned int cpu)
- {
- return sysfs_get_freq_policy(cpu);
- }
- void cpufreq_put_policy(struct cpufreq_policy *policy)
- {
- if ((!policy) || (!policy->governor))
- return;
- free(policy->governor);
- policy->governor = NULL;
- free(policy);
- }
- struct cpufreq_available_governors *cpufreq_get_available_governors(unsigned
- int cpu)
- {
- return sysfs_get_freq_available_governors(cpu);
- }
- void cpufreq_put_available_governors(struct cpufreq_available_governors *any)
- {
- struct cpufreq_available_governors *tmp, *next;
- if (!any)
- return;
- tmp = any->first;
- while (tmp) {
- next = tmp->next;
- if (tmp->governor)
- free(tmp->governor);
- free(tmp);
- tmp = next;
- }
- }
- struct cpufreq_available_frequencies
- *cpufreq_get_available_frequencies(unsigned int cpu)
- {
- return sysfs_get_available_frequencies(cpu);
- }
- void cpufreq_put_available_frequencies(struct cpufreq_available_frequencies
- *any) {
- struct cpufreq_available_frequencies *tmp, *next;
- if (!any)
- return;
- tmp = any->first;
- while (tmp) {
- next = tmp->next;
- free(tmp);
- tmp = next;
- }
- }
- struct cpufreq_affected_cpus *cpufreq_get_affected_cpus(unsigned int cpu)
- {
- return sysfs_get_freq_affected_cpus(cpu);
- }
- void cpufreq_put_affected_cpus(struct cpufreq_affected_cpus *any)
- {
- struct cpufreq_affected_cpus *tmp, *next;
- if (!any)
- return;
- tmp = any->first;
- while (tmp) {
- next = tmp->next;
- free(tmp);
- tmp = next;
- }
- }
- struct cpufreq_affected_cpus *cpufreq_get_related_cpus(unsigned int cpu)
- {
- return sysfs_get_freq_related_cpus(cpu);
- }
- void cpufreq_put_related_cpus(struct cpufreq_affected_cpus *any)
- {
- cpufreq_put_affected_cpus(any);
- }
- int cpufreq_set_policy(unsigned int cpu, struct cpufreq_policy *policy)
- {
- if (!policy || !(policy->governor))
- return -EINVAL;
- return sysfs_set_freq_policy(cpu, policy);
- }
- int cpufreq_modify_policy_min(unsigned int cpu, unsigned long min_freq)
- {
- return sysfs_modify_freq_policy_min(cpu, min_freq);
- }
- int cpufreq_modify_policy_max(unsigned int cpu, unsigned long max_freq)
- {
- return sysfs_modify_freq_policy_max(cpu, max_freq);
- }
- int cpufreq_modify_policy_governor(unsigned int cpu, char *governor)
- {
- if ((!governor) || (strlen(governor) > 19))
- return -EINVAL;
- return sysfs_modify_freq_policy_governor(cpu, governor);
- }
- int cpufreq_set_frequency(unsigned int cpu, unsigned long target_frequency)
- {
- return sysfs_set_frequency(cpu, target_frequency);
- }
- struct cpufreq_stats *cpufreq_get_stats(unsigned int cpu,
- unsigned long long *total_time)
- {
- return sysfs_get_freq_stats(cpu, total_time);
- }
- void cpufreq_put_stats(struct cpufreq_stats *any)
- {
- struct cpufreq_stats *tmp, *next;
- if (!any)
- return;
- tmp = any->first;
- while (tmp) {
- next = tmp->next;
- free(tmp);
- tmp = next;
- }
- }
- unsigned long cpufreq_get_transitions(unsigned int cpu)
- {
- return sysfs_get_freq_transitions(cpu);
- }
|