summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorpspiridonov2019-12-13 22:15:26 +0300
committerpspiridonov2019-12-13 22:15:26 +0300
commit927d54aebf1f0823283526ca6ff3ce185dcbd70a (patch)
tree02bf7e78124332afbbec608b4672142d27f6a6f3
downloadaur-927d54aebf1f0823283526ca6ff3ce185dcbd70a.tar.gz
init
-rw-r--r--.SRCINFO35
-rw-r--r--0001-Only-x86-has-cpuid-instruction.patch34
-rw-r--r--0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch1511
-rw-r--r--0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch35
-rw-r--r--0004-i18n-Catalan.patch531
-rw-r--r--0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch29
-rw-r--r--0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch46
-rw-r--r--0007-po-add-missing-word-in-DE.patch28
-rw-r--r--0008-cpufrequtils-make-NLS-optional.patch88
-rw-r--r--01_add_cpufreq-aperf_manpage.patch92
-rw-r--r--10_build_static_lib.patch26
-rw-r--r--11_dont_touch_po_files.patch31
-rw-r--r--PKGBUILD57
13 files changed, 2543 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..290eab17f4fe
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,35 @@
+pkgbase = cpufrequtils
+ pkgdesc = This package provides very useful tools to get information about the CPUFreq
+ pkgver = 008
+ pkgrel = 1
+ url = http://kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html
+ arch = i686
+ arch = x86_64
+ license = GPL2
+ source = http://deb.debian.org/debian/pool/main/c/cpufrequtils/cpufrequtils_008.orig.tar.bz2
+ source = 0001-Only-x86-has-cpuid-instruction.patch
+ source = 0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch
+ source = 0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
+ source = 0004-i18n-Catalan.patch
+ source = 0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
+ source = 0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
+ source = 0007-po-add-missing-word-in-DE.patch
+ source = 0008-cpufrequtils-make-NLS-optional.patch
+ source = 01_add_cpufreq-aperf_manpage.patch
+ source = 10_build_static_lib.patch
+ source = 11_dont_touch_po_files.patch
+ md5sums = e60e0b07810b51babd4447ae07285e7d
+ md5sums = 9ed71a50670aa99e12245cb3f5199142
+ md5sums = 4ccbd46b0b1563067d0c31fe510ff89d
+ md5sums = 5dd9add84e63b213295e2e2a30fd3667
+ md5sums = 2f7a864539dd0db18b6ff0d77873a8b2
+ md5sums = 139b340b964e2c942dbe426b061c6bc8
+ md5sums = 2242f015ca6b8478d6c1a3bfbca5ea48
+ md5sums = 0b7d50274fa8286796c9df0b156e2962
+ md5sums = a99653aab0d334569496a402389f062f
+ md5sums = 35dc88b7dfa18276b094355467957022
+ md5sums = 6e08e20d319d70770b90be548027503f
+ md5sums = a837db201e0bb724ccf617757a575e26
+
+pkgname = cpufrequtils
+
diff --git a/0001-Only-x86-has-cpuid-instruction.patch b/0001-Only-x86-has-cpuid-instruction.patch
new file mode 100644
index 000000000000..d3bc14d51bcd
--- /dev/null
+++ b/0001-Only-x86-has-cpuid-instruction.patch
@@ -0,0 +1,34 @@
+From f1b6bccf08f53295b2f7f448f28bbd37533c14a2 Mon Sep 17 00:00:00 2001
+From: Zhang Le <r0bertz@gentoo.org>
+Date: Sun, 18 Jul 2010 02:05:28 +0800
+Subject: [PATCH 1/8] Only x86 has cpuid instruction
+
+Signed-off-by: Zhang Le <r0bertz@gentoo.org>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ utils/aperf.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/utils/aperf.c b/utils/aperf.c
+index 627fb17..1c64501 100644
+--- a/utils/aperf.c
++++ b/utils/aperf.c
+@@ -68,11 +68,15 @@ struct avg_perf_cpu_info
+
+ static int cpu_has_effective_freq()
+ {
++#if defined(__i386__) || defined(__x86_64__)
+ /* largest base level */
+ if (cpuid_eax(0) < 6)
+ return 0;
+
+ return cpuid_ecx(6) & 0x1;
++#else
++ return 0;
++#endif
+ }
+
+ /*
+--
+1.7.10
+
diff --git a/0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch b/0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch
new file mode 100644
index 000000000000..b2ae53340641
--- /dev/null
+++ b/0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch
@@ -0,0 +1,1511 @@
+From adb7e044755aa06b12212d05c4acbcccb023d2cd Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn@suse.de>
+Date: Wed, 1 Sep 2010 02:18:00 +0200
+Subject: [PATCH 2/8] cpufrequtils: Remove proc compile option and interfaces
+
+proc cpufreq kernel support is deprecated since the beginning of 2.6?)
+If someone still likes to have support for the 2.4 cpufreq proc
+interface one has to pick out an old cpufrequtils version
+from now on...
+
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ Makefile | 29 +-------
+ lib/cpufreq.c | 99 +++++--------------------
+ lib/interfaces.h | 76 -------------------
+ lib/proc.c | 216 ------------------------------------------------------
+ lib/sysfs.h | 18 +++++
+ po/cs.po | 186 +++++++++++++++++++++++++++-------------------
+ po/de.po | 2 +-
+ po/fr.po | 187 +++++++++++++++++++++++++++-------------------
+ po/it.po | 2 +-
+ po/pt.po | 2 +-
+ 10 files changed, 264 insertions(+), 553 deletions(-)
+ delete mode 100644 lib/interfaces.h
+ delete mode 100644 lib/proc.c
+ create mode 100644 lib/sysfs.h
+
+diff --git a/Makefile b/Makefile
+index 3ef2af7..e23c644 100644
+--- a/Makefile
++++ b/Makefile
+@@ -37,13 +37,6 @@ NLS ?= true
+ # cpufreq-bench benchmarking tool
+ CPUFRQ_BENCH ?= false
+
+-# Use the sysfs-based interface which is included in all 2.6 kernels
+-# built with cpufreq support
+-SYSFS ?= true
+-
+-# Use the proc-based interface which is used in the 2.4 patch for cpufreq
+-PROC ?= true
+-
+ # Prefix to the directories we're installing to
+ DESTDIR ?=
+
+@@ -119,24 +112,12 @@ CPPFLAGS += -DVERSION=\"$(VERSION)\" -DPACKAGE=\"$(PACKAGE)\" \
+ -DPACKAGE_BUGREPORT=\"$(PACKAGE_BUGREPORT)\" -D_GNU_SOURCE
+
+ UTIL_SRC = utils/info.c utils/set.c utils/aperf.c utils/cpuid.h
+-LIB_HEADERS = lib/cpufreq.h lib/interfaces.h
+-LIB_SRC = lib/cpufreq.c
+-LIB_OBJS = lib/cpufreq.o
++LIB_HEADERS = lib/cpufreq.h lib/sysfs.h
++LIB_SRC = lib/cpufreq.c lib/sysfs.c
++LIB_OBJS = lib/cpufreq.o lib/sysfs.o
+
+ CFLAGS += -pipe
+
+-ifeq ($(strip $(PROC)),true)
+- LIB_OBJS += lib/proc.o
+- LIB_SRC += lib/proc.c
+- CPPFLAGS += -DINTERFACE_PROC
+-endif
+-
+-ifeq ($(strip $(SYSFS)),true)
+- LIB_OBJS += lib/sysfs.o
+- LIB_SRC += lib/sysfs.c
+- CPPFLAGS += -DINTERFACE_SYSFS
+-endif
+-
+ ifeq ($(strip $(NLS)),true)
+ INSTALL_NLS += install-gmo
+ COMPILE_NLS += update-gmo
+@@ -183,10 +164,6 @@ lib/%.o: $(LIB_SRC) $(LIB_HEADERS) build/ccdv
+ $(QUIET) $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -o $@ -c lib/$*.c
+
+ libcpufreq.so.$(LIB_MAJ): $(LIB_OBJS)
+- @if [ $(strip $(SYSFS)) != true -a $(strip $(PROC)) != true ]; then \
+- echo '*** At least one of /sys support or /proc support MUST be enabled ***'; \
+- exit -1; \
+- fi;
+ $(QUIET) $(CC) -shared $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ \
+ -Wl,-soname,libcpufreq.so.$(LIB_MIN) $(LIB_OBJS)
+ @ln -sf $@ libcpufreq.so
+diff --git a/lib/cpufreq.c b/lib/cpufreq.c
+index 0c9f28e..603dbf8 100644
+--- a/lib/cpufreq.c
++++ b/lib/cpufreq.c
+@@ -11,60 +11,39 @@
+ #include <string.h>
+
+ #include "cpufreq.h"
+-#include "interfaces.h"
++#include "sysfs.h"
+
+ int cpufreq_cpu_exists(unsigned int cpu)
+ {
+- int ret = sysfs_cpu_exists(cpu);
+- if (ret == -ENOSYS)
+- ret = proc_cpu_exists(cpu);
+- return (ret);
++ return sysfs_cpu_exists(cpu);
+ }
+
+ unsigned long cpufreq_get_freq_kernel(unsigned int cpu)
+ {
+- unsigned long ret = sysfs_get_freq_kernel(cpu);
+- if (!ret)
+- ret = proc_get_freq_kernel(cpu);
+- return (ret);
++ return sysfs_get_freq_kernel(cpu);
+ }
+
+ unsigned long cpufreq_get_freq_hardware(unsigned int cpu)
+ {
+- unsigned long ret = sysfs_get_freq_hardware(cpu);
+- if (!ret)
+- ret = proc_get_freq_hardware(cpu);
+- return (ret);
++ return sysfs_get_freq_hardware(cpu);
+ }
+
+ unsigned long cpufreq_get_transition_latency(unsigned int cpu)
+ {
+- unsigned long ret = sysfs_get_transition_latency(cpu);
+- if (!ret)
+- ret = proc_get_transition_latency(cpu);
+- return (ret);
++ return sysfs_get_transition_latency(cpu);
+ }
+
+ int cpufreq_get_hardware_limits(unsigned int cpu,
+ unsigned long *min,
+ unsigned long *max)
+ {
+- int ret;
+ if ((!min) || (!max))
+ return -EINVAL;
+- ret = sysfs_get_hardware_limits(cpu, min, max);
+- if (ret)
+- ret = proc_get_hardware_limits(cpu, min, max);
+- return (ret);
++ return sysfs_get_hardware_limits(cpu, min, max);
+ }
+
+ char * cpufreq_get_driver(unsigned int cpu) {
+- char * ret;
+- ret = sysfs_get_driver(cpu);
+- if (!ret) {
+- ret = proc_get_driver(cpu);
+- }
+- return (ret);
++ return sysfs_get_driver(cpu);
+ }
+
+ void cpufreq_put_driver(char * ptr) {
+@@ -74,11 +53,7 @@ void cpufreq_put_driver(char * ptr) {
+ }
+
+ struct cpufreq_policy * cpufreq_get_policy(unsigned int cpu) {
+- struct cpufreq_policy * ret;
+- ret = sysfs_get_policy(cpu);
+- if (!ret)
+- ret = proc_get_policy(cpu);
+- return (ret);
++ return sysfs_get_policy(cpu);
+ }
+
+ void cpufreq_put_policy(struct cpufreq_policy *policy) {
+@@ -91,11 +66,7 @@ void cpufreq_put_policy(struct cpufreq_policy *policy) {
+ }
+
+ struct cpufreq_available_governors * cpufreq_get_available_governors(unsigned int cpu) {
+- struct cpufreq_available_governors *ret;
+- ret = sysfs_get_available_governors(cpu);
+- if (!ret)
+- ret = proc_get_available_governors(cpu);
+- return (ret);
++ return sysfs_get_available_governors(cpu);
+ }
+
+ void cpufreq_put_available_governors(struct cpufreq_available_governors *any) {
+@@ -116,11 +87,7 @@ void cpufreq_put_available_governors(struct cpufreq_available_governors *any) {
+
+
+ struct cpufreq_available_frequencies * cpufreq_get_available_frequencies(unsigned int cpu) {
+- struct cpufreq_available_frequencies * ret;
+- ret = sysfs_get_available_frequencies(cpu);
+- if (!ret)
+- ret = proc_get_available_frequencies(cpu);
+- return (ret);
++ return sysfs_get_available_frequencies(cpu);
+ }
+
+ void cpufreq_put_available_frequencies(struct cpufreq_available_frequencies *any) {
+@@ -139,11 +106,7 @@ void cpufreq_put_available_frequencies(struct cpufreq_available_frequencies *any
+
+
+ struct cpufreq_affected_cpus * cpufreq_get_affected_cpus(unsigned int cpu) {
+- struct cpufreq_affected_cpus * ret;
+- ret = sysfs_get_affected_cpus(cpu);
+- if (!ret)
+- ret = proc_get_affected_cpus(cpu);
+- return (ret);
++ return sysfs_get_affected_cpus(cpu);
+ }
+
+ void cpufreq_put_affected_cpus(struct cpufreq_affected_cpus *any) {
+@@ -162,11 +125,7 @@ void cpufreq_put_affected_cpus(struct cpufreq_affected_cpus *any) {
+
+
+ struct cpufreq_affected_cpus * cpufreq_get_related_cpus(unsigned int cpu) {
+- struct cpufreq_affected_cpus * ret;
+- ret = sysfs_get_related_cpus(cpu);
+- if (!ret)
+- ret = proc_get_related_cpus(cpu);
+- return (ret);
++ return sysfs_get_related_cpus(cpu);
+ }
+
+ void cpufreq_put_related_cpus(struct cpufreq_affected_cpus *any) {
+@@ -175,56 +134,32 @@ void cpufreq_put_related_cpus(struct cpufreq_affected_cpus *any) {
+
+
+ int cpufreq_set_policy(unsigned int cpu, struct cpufreq_policy *policy) {
+- int ret;
+ if (!policy || !(policy->governor))
+ return -EINVAL;
+
+- ret = sysfs_set_policy(cpu, policy);
+- if (ret)
+- ret = proc_set_policy(cpu, policy);
+- return (ret);
++ return sysfs_set_policy(cpu, policy);
+ }
+
+
+ int cpufreq_modify_policy_min(unsigned int cpu, unsigned long min_freq) {
+- int ret;
+-
+- ret = sysfs_modify_policy_min(cpu, min_freq);
+- if (ret)
+- ret = proc_modify_policy_min(cpu, min_freq);
+- return (ret);
++ return sysfs_modify_policy_min(cpu, min_freq);
+ }
+
+
+ int cpufreq_modify_policy_max(unsigned int cpu, unsigned long max_freq) {
+- int ret;
+-
+- ret = sysfs_modify_policy_max(cpu, max_freq);
+- if (ret)
+- ret = proc_modify_policy_max(cpu, max_freq);
+- return (ret);
++ return sysfs_modify_policy_max(cpu, max_freq);
+ }
+
+
+ int cpufreq_modify_policy_governor(unsigned int cpu, char *governor) {
+- int ret;
+-
+ if ((!governor) || (strlen(governor) > 19))
+ return -EINVAL;
+
+- ret = sysfs_modify_policy_governor(cpu, governor);
+- if (ret)
+- ret = proc_modify_policy_governor(cpu, governor);
+- return (ret);
++ return sysfs_modify_policy_governor(cpu, governor);
+ }
+
+ int cpufreq_set_frequency(unsigned int cpu, unsigned long target_frequency) {
+- int ret;
+-
+- ret = sysfs_set_frequency(cpu, target_frequency);
+- if (ret)
+- ret = proc_set_frequency(cpu, target_frequency);
+- return (ret);
++ return sysfs_set_frequency(cpu, target_frequency);
+ }
+
+ struct cpufreq_stats * cpufreq_get_stats(unsigned int cpu, unsigned long long *total_time) {
+diff --git a/lib/interfaces.h b/lib/interfaces.h
+deleted file mode 100644
+index 67ee131..0000000
+--- a/lib/interfaces.h
++++ /dev/null
+@@ -1,76 +0,0 @@
+-#ifdef INTERFACE_SYSFS
+-
+-extern unsigned int sysfs_cpu_exists(unsigned int cpu);
+-extern unsigned long sysfs_get_freq_kernel(unsigned int cpu);
+-extern unsigned long sysfs_get_freq_hardware(unsigned int cpu);
+-extern unsigned long sysfs_get_transition_latency(unsigned int cpu);
+-extern int sysfs_get_hardware_limits(unsigned int cpu, unsigned long *min, unsigned long *max);
+-extern char * sysfs_get_driver(unsigned int cpu);
+-extern struct cpufreq_policy * sysfs_get_policy(unsigned int cpu);
+-extern struct cpufreq_available_governors * sysfs_get_available_governors(unsigned int cpu);
+-extern struct cpufreq_available_frequencies * sysfs_get_available_frequencies(unsigned int cpu);
+-extern struct cpufreq_affected_cpus * sysfs_get_affected_cpus(unsigned int cpu);
+-extern struct cpufreq_affected_cpus * sysfs_get_related_cpus(unsigned int cpu);
+-extern struct cpufreq_stats * sysfs_get_stats(unsigned int cpu, unsigned long long *total_time);
+-extern unsigned long sysfs_get_transitions(unsigned int cpu);
+-extern int sysfs_set_policy(unsigned int cpu, struct cpufreq_policy *policy);
+-extern int sysfs_modify_policy_min(unsigned int cpu, unsigned long min_freq);
+-extern int sysfs_modify_policy_max(unsigned int cpu, unsigned long max_freq);
+-extern int sysfs_modify_policy_governor(unsigned int cpu, char *governor);
+-extern int sysfs_set_frequency(unsigned int cpu, unsigned long target_frequency);
+-
+-#else
+-
+-static inline unsigned int sysfs_cpu_exists(unsigned int cpu) { return -ENOSYS; }
+-static inline unsigned long sysfs_get_freq_kernel(unsigned int cpu) { return 0; }
+-static inline unsigned long sysfs_get_freq_hardware(unsigned int cpu) { return 0; }
+-static inline unsigned long sysfs_get_transition_latency(unsigned int cpu) { return 0; }
+-static inline int sysfs_get_hardware_limits(unsigned int cpu, unsigned long *min, unsigned long *max) { return -ENOSYS; }
+-static inline char * sysfs_get_driver(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_policy * sysfs_get_policy(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_available_governors * sysfs_get_available_governors(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_available_frequencies * sysfs_get_available_frequencies(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_affected_cpus * sysfs_get_affected_cpus(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_related_cpus * sysfs_get_affected_cpus(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_stats * sysfs_get_stats(unsigned int cpu, unsigned long long *total_time) { return NULL; }
+-static inline unsigned long sysfs_get_transitions(unsigned int cpu) { return 0; }
+-static inline int sysfs_set_policy(unsigned int cpu, struct cpufreq_policy *policy) { return -ENOSYS; }
+-static inline int sysfs_modify_policy_min(unsigned int cpu, unsigned long min_freq) { return -ENOSYS; }
+-static inline int sysfs_modify_policy_max(unsigned int cpu, unsigned long max_freq) { return -ENOSYS; }
+-static inline int sysfs_modify_policy_governor(unsigned int cpu, char *governor) { return -ENOSYS; }
+-static inline int sysfs_set_frequency(unsigned int cpu, unsigned long target_frequency) { return -ENOSYS; }
+-
+-#endif
+-
+-
+-#ifdef INTERFACE_PROC
+-
+-extern int proc_cpu_exists(unsigned int cpu);
+-extern unsigned long proc_get_freq_kernel(unsigned int cpu);
+-extern struct cpufreq_policy * proc_get_policy(unsigned int cpu);
+-extern int proc_set_policy(unsigned int cpu, struct cpufreq_policy *policy);
+-extern int proc_set_frequency(unsigned int cpu, unsigned long target_frequency);
+-#else
+-
+-static inline int proc_cpu_exists(unsigned int cpu) {return -ENOSYS; }
+-static inline unsigned long proc_get_freq_kernel(unsigned int cpu) { return 0; }
+-static inline struct cpufreq_policy * proc_get_policy(unsigned int cpu) { return NULL; }
+-static inline int proc_set_policy(unsigned int cpu, struct cpufreq_policy *policy) { return -ENOSYS; }
+-static inline int proc_set_frequency(unsigned int cpu, unsigned long target_frequency) { return -ENOSYS; }
+-
+-#endif
+-
+-/* these aren't implemented in /proc, and probably never will...*/
+-
+-static inline unsigned long proc_get_freq_hardware(unsigned int cpu) { return 0; }
+-static inline unsigned long proc_get_transition_latency(unsigned int cpu) { return -ENOSYS; }
+-static inline int proc_get_hardware_limits(unsigned int cpu, unsigned long *min, unsigned long *max) { return -ENOSYS; }
+-static inline char * proc_get_driver(unsigned int cpu) {return NULL; }
+-static inline struct cpufreq_available_governors * proc_get_available_governors(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_available_frequencies * proc_get_available_frequencies(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_affected_cpus * proc_get_affected_cpus(unsigned int cpu) { return NULL; }
+-static inline struct cpufreq_affected_cpus * proc_get_related_cpus(unsigned int cpu) { return NULL; }
+-static inline int proc_modify_policy_min(unsigned int cpu, unsigned long min_freq) { return -ENOSYS; }
+-static inline int proc_modify_policy_max(unsigned int cpu, unsigned long max_freq) { return -ENOSYS; }
+-static inline int proc_modify_policy_governor(unsigned int cpu, char *governor) { return -ENOSYS; }
+-
+diff --git a/lib/proc.c b/lib/proc.c
+deleted file mode 100644
+index 38d8483..0000000
+--- a/lib/proc.c
++++ /dev/null
+@@ -1,216 +0,0 @@
+-/*
+- * (C) 2004 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"
+-
+-#define MAX_LINE_LEN 255
+-
+-static int readout_proc_cpufreq(unsigned int cpu, unsigned long *min, unsigned long *max, char **governor)
+-{
+- FILE *fp;
+- char value[MAX_LINE_LEN];
+- char gov_value[MAX_LINE_LEN];
+- int ret = -ENODEV;
+- unsigned int cpu_read;
+- unsigned int tmp1, tmp2;
+-
+- if ((!min) || (!max) || (!governor))
+- return -EINVAL;
+-
+- fp = fopen("/proc/cpufreq","r");
+- if (!fp)
+- return -ENODEV;
+-
+-
+- if (!fgets(value, MAX_LINE_LEN, fp)) {
+- ret = -EIO;
+- goto error;
+- }
+-
+- if (strlen(value) > (MAX_LINE_LEN - 10)) {
+- ret = -EIO;
+- goto error;
+- }
+-
+- while(!feof(fp)) {
+- if (!fgets(value, MAX_LINE_LEN, fp)) {
+- ret = -EIO;
+- goto error;
+- }
+-
+- if (strlen(value) > (MAX_LINE_LEN - 10)) {
+- ret = -EIO;
+- goto error;
+- }
+-
+- ret = sscanf(value, "CPU%3d %9lu kHz (%3d %%) - %9lu kHz (%3d %%) - %s",
+- &cpu_read , min, &tmp1, max, &tmp2, gov_value);
+- if (ret != 6) {
+- ret = -EIO;
+- goto error;
+- }
+-
+- if (cpu_read != cpu)
+- continue;
+-
+- if ((tmp2 < tmp1) || (tmp2 > 100) || (*max < *min)) {
+- ret = -ENOSYS;
+- goto error;
+- }
+-
+- tmp1 = strlen(gov_value);
+- if (tmp1 > 20) {
+- ret = -ENOSYS;
+- goto error;
+- }
+-
+- *governor = malloc(sizeof(char) * (tmp1 + 2));
+- if (!*governor) {
+- ret = -ENOMEM;
+- goto error;
+- }
+-
+- strncpy(*governor, gov_value, tmp1);
+- (*governor)[tmp1] = '\0';
+-
+- ret = 0;
+-
+- break;
+- }
+-
+- error:
+- fclose(fp);
+- return (ret);
+-}
+-
+-int proc_cpu_exists(unsigned int cpu) {
+- unsigned long tmp1, tmp2;
+- char *tmp3;
+- int ret;
+-
+- ret = readout_proc_cpufreq(cpu, &tmp1, &tmp2, &tmp3);
+- if (ret)
+- return -ENODEV;
+-
+- free(tmp3);
+- return 0;
+-}
+-
+-struct cpufreq_policy * proc_get_policy(unsigned int cpu) {
+- struct cpufreq_policy tmp;
+- struct cpufreq_policy *ret;
+- int err;
+-
+- err = readout_proc_cpufreq(cpu, &tmp.min, &tmp.max, &tmp.governor);
+- if (err)
+- return NULL;
+-
+- ret = malloc(sizeof(struct cpufreq_policy));
+- if (!ret)
+- return NULL;
+-
+- ret->min = tmp.min;
+- ret->max = tmp.max;
+- ret->governor = tmp.governor;
+-
+- return (ret);
+-}
+-
+-unsigned long proc_get_freq_kernel(unsigned int cpu) {
+- FILE *fp;
+- char value[MAX_LINE_LEN];
+- char file[MAX_LINE_LEN];
+- unsigned long value2;
+-
+- snprintf(file, MAX_LINE_LEN, "/proc/sys/cpu/%u/speed", cpu);
+-
+- fp = fopen(file,"r");
+- if (!fp)
+- return 0;
+-
+- if (!fgets(value, MAX_LINE_LEN, fp)) {
+- fclose(fp);
+- return 0;
+- }
+-
+- fclose(fp);
+-
+- if (strlen(value) > (MAX_LINE_LEN - 10)) {
+- return 0;
+- }
+-
+- if (sscanf(value, "%lu", &value2) != 1)
+- return 0;
+-
+- return value2;
+-}
+-
+-int proc_set_policy(unsigned int cpu, struct cpufreq_policy *policy) {
+- FILE *fp;
+- char value[MAX_LINE_LEN];
+- int ret = -ENODEV;
+-
+- if ((!policy) || (!policy->governor) || (strlen(policy->governor) > 15))
+- return -EINVAL;
+-
+- snprintf(value, MAX_LINE_LEN, "%d:%lu:%lu:%s", cpu, policy->min, policy->max, policy->governor);
+-
+- value[MAX_LINE_LEN - 1]='\0';
+-
+- fp = fopen("/proc/cpufreq","r+");
+- if (!fp)
+- return -ENODEV;
+- ret = fputs(value, fp);
+- fclose(fp);
+-
+- if (ret < 0)
+- return (ret);
+-
+- return 0;
+-}
+-
+-int proc_set_frequency(unsigned int cpu, unsigned long target_frequency) {
+- struct cpufreq_policy *pol = proc_get_policy(cpu);
+- struct cpufreq_policy new_pol;
+- char userspace_gov[] = "userspace";
+- FILE *fp;
+- char value[MAX_LINE_LEN];
+- char file[MAX_LINE_LEN];
+- int ret = 0;
+-
+- if (!pol)
+- return -ENODEV;
+-
+- if (strncmp(pol->governor, userspace_gov, 9) != 0) {
+- cpufreq_put_policy(pol);
+- new_pol.min = pol->min;
+- new_pol.max = pol->max;
+- new_pol.governor = userspace_gov;
+- ret = proc_set_policy(cpu, &new_pol);
+- if (ret)
+- return (ret);
+- }
+-
+-
+- snprintf(file, MAX_LINE_LEN, "/proc/sys/cpu/%u/speed", cpu);
+- snprintf(value, MAX_LINE_LEN, "%lu", target_frequency);
+-
+- fp = fopen(file,"r+");
+- if (!fp)
+- return -EINVAL;
+- ret = fputs(value, fp);
+- fclose(fp);
+-
+- if (ret < 0)
+- return (ret);
+-
+- return 0;
+-}
+diff --git a/lib/sysfs.h b/lib/sysfs.h
+new file mode 100644
+index 0000000..99619d5
+--- /dev/null
++++ b/lib/sysfs.h
+@@ -0,0 +1,18 @@
++extern unsigned int sysfs_cpu_exists(unsigned int cpu);
++extern unsigned long sysfs_get_freq_kernel(unsigned int cpu);
++extern unsigned long sysfs_get_freq_hardware(unsigned int cpu);
++extern unsigned long sysfs_get_transition_latency(unsigned int cpu);
++extern int sysfs_get_hardware_limits(unsigned int cpu, unsigned long *min, unsigned long *max);
++extern char * sysfs_get_driver(unsigned int cpu);
++extern struct cpufreq_policy * sysfs_get_policy(unsigned int cpu);
++extern struct cpufreq_available_governors * sysfs_get_available_governors(unsigned int cpu);
++extern struct cpufreq_available_frequencies * sysfs_get_available_frequencies(unsigned int cpu);
++extern struct cpufreq_affected_cpus * sysfs_get_affected_cpus(unsigned int cpu);
++extern struct cpufreq_affected_cpus * sysfs_get_related_cpus(unsigned int cpu);
++extern struct cpufreq_stats * sysfs_get_stats(unsigned int cpu, unsigned long long *total_time);
++extern unsigned long sysfs_get_transitions(unsigned int cpu);
++extern int sysfs_set_policy(unsigned int cpu, struct cpufreq_policy *policy);
++extern int sysfs_modify_policy_min(unsigned int cpu, unsigned long min_freq);
++extern int sysfs_modify_policy_max(unsigned int cpu, unsigned long max_freq);
++extern int sysfs_modify_policy_governor(unsigned int cpu, char *governor);
++extern int sysfs_set_frequency(unsigned int cpu, unsigned long target_frequency);
+diff --git a/po/cs.po b/po/cs.po
+index a4c14a7..4fdfffb 100644
+--- a/po/cs.po
++++ b/po/cs.po
+@@ -9,7 +9,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: cs\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2008-07-17 11:29+0200\n"
++"POT-Creation-Date: 2010-09-01 01:20+0200\n"
+ "PO-Revision-Date: 2008-06-11 16:26+0200\n"
+ "Last-Translator: Karel Volný <kavol@seznam.cz>\n"
+ "Language-Team: Czech <diskuze@lists.l10n.cz>\n"
+@@ -24,64 +24,74 @@ msgstr ""
+ msgid "Couldn't count the number of CPUs (%s: %s), assuming 1\n"
+ msgstr "Nelze zjistit počet CPU (%s: %s), předpokládá se 1.\n"
+
+-#: utils/info.c:67
++#: utils/info.c:68
+ #, c-format
+ msgid ""
+ " minimum CPU frequency - maximum CPU frequency - governor\n"
+ msgstr ""
+ " minimální frekvence CPU - maximální frekvence CPU - regulátor\n"
+
+-#: utils/info.c:128
++#: utils/info.c:156
+ #, c-format
+ msgid "couldn't analyze CPU %d as it doesn't seem to be present\n"
+ msgstr "nelze analyzovat CPU %d, vypadá to, že není přítomen\n"
+
+-#: utils/info.c:132
++#: utils/info.c:160
+ #, c-format
+ msgid "analyzing CPU %d:\n"
+ msgstr "analyzuji CPU %d:\n"
+
+-#: utils/info.c:139
++#: utils/info.c:167
+ #, c-format
+ msgid " no or unknown cpufreq driver is active on this CPU\n"
+ msgstr " pro tento CPU není aktivní žádný známý ovladač cpufreq\n"
+
+-#: utils/info.c:141
++#: utils/info.c:169
+ #, c-format
+ msgid " driver: %s\n"
+ msgstr " ovladač: %s\n"
+
+-#: utils/info.c:147
+-#, c-format
+-msgid " CPUs which need to switch frequency at the same time: "
++#: utils/info.c:175
++#, fuzzy, c-format
++msgid " CPUs which run at the same hardware frequency: "
++msgstr " CPU, které musí měnit frekvenci zároveň: "
++
++#: utils/info.c:186
++#, fuzzy, c-format
++msgid " CPUs which need to have their frequency coordinated by software: "
+ msgstr " CPU, které musí měnit frekvenci zároveň: "
+
+-#: utils/info.c:157
++#: utils/info.c:197
++#, c-format
++msgid " maximum transition latency: "
++msgstr ""
++
++#: utils/info.c:203
+ #, c-format
+ msgid " hardware limits: "
+ msgstr " hardwarové meze: "
+
+-#: utils/info.c:166
++#: utils/info.c:212
+ #, c-format
+ msgid " available frequency steps: "
+ msgstr " dostupné frekvence: "
+
+-#: utils/info.c:179
++#: utils/info.c:225
+ #, c-format
+ msgid " available cpufreq governors: "
+ msgstr " dostupné regulátory: "
+
+-#: utils/info.c:190
++#: utils/info.c:236
+ #, c-format
+ msgid " current policy: frequency should be within "
+ msgstr " současná taktika: frekvence by měla být mezi "
+
+-#: utils/info.c:192
++#: utils/info.c:238
+ #, c-format
+ msgid " and "
+ msgstr " a "
+
+-#: utils/info.c:196
++#: utils/info.c:242
+ #, c-format
+ msgid ""
+ "The governor \"%s\" may decide which speed to use\n"
+@@ -90,51 +100,51 @@ msgstr ""
+ " Regulátor \"%s\" může rozhodnout jakou frekvenci použít\n"
+ " v těchto mezích.\n"
+
+-#: utils/info.c:203
++#: utils/info.c:249
+ #, c-format
+ msgid " current CPU frequency is "
+ msgstr " současná frekvence CPU je "
+
+-#: utils/info.c:206
++#: utils/info.c:252
+ #, c-format
+ msgid " (asserted by call to hardware)"
+ msgstr " (zjištěno hardwarovým voláním)"
+
+-#: utils/info.c:214
++#: utils/info.c:260
+ #, c-format
+ msgid " cpufreq stats: "
+ msgstr " statistika cpufreq: "
+
+-#: utils/info.c:361 utils/set.c:30
++#: utils/info.c:440 utils/set.c:31
+ #, c-format
+ msgid "Report errors and bugs to %s, please.\n"
+ msgstr ""
+ "Chyby v programu prosím hlaste na %s (anglicky).\n"
+ "Chyby v překladu prosím hlaste na kavol@seznam.cz (česky ;-)\n"
+
+-#: utils/info.c:365
++#: utils/info.c:444
+ #, c-format
+ msgid "Usage: cpufreq-info [options]\n"
+ msgstr "Užití: cpufreq-info [přepínače]\n"
+
+-#: utils/info.c:366 utils/set.c:35
++#: utils/info.c:445 utils/set.c:37
+ #, c-format
+ msgid "Options:\n"
+ msgstr "Přepínače:\n"
+
+-#: utils/info.c:367
++#: utils/info.c:446
+ #, c-format
+ msgid ""
+ " -c CPU, --cpu CPU CPU number which information shall be determined "
+ "about\n"
+ msgstr " -c CPU, --cpu CPU Číslo CPU, o kterém se mají zjistit informace\n"
+
+-#: utils/info.c:368
++#: utils/info.c:447
+ #, c-format
+ msgid " -e, --debug Prints out debug information\n"
+ msgstr " -e, --debug Vypíše ladicí informace\n"
+
+-#: utils/info.c:369
++#: utils/info.c:448
+ #, c-format
+ msgid ""
+ " -f, --freq Get frequency the CPU currently runs at, according\n"
+@@ -143,7 +153,7 @@ msgstr ""
+ " -f, --freq Zjistí aktuální frekvenci, na které CPU běží\n"
+ " podle cpufreq *\n"
+
+-#: utils/info.c:371
++#: utils/info.c:450
+ #, c-format
+ msgid ""
+ " -w, --hwfreq Get frequency the CPU currently runs at, by reading\n"
+@@ -152,7 +162,7 @@ msgstr ""
+ " -w, --hwfreq Zjistí aktuální frekvenci, na které CPU běží\n"
+ " z hardware (dostupné jen uživateli root) *\n"
+
+-#: utils/info.c:373
++#: utils/info.c:452
+ #, c-format
+ msgid ""
+ " -l, --hwlimits Determine the minimum and maximum CPU frequency "
+@@ -161,36 +171,52 @@ msgstr ""
+ " -l, --hwlimits Zjistí minimální a maximální dostupnou frekvenci CPU "
+ "*\n"
+
+-#: utils/info.c:374
++#: utils/info.c:453
+ #, c-format
+ msgid " -d, --driver Determines the used cpufreq kernel driver *\n"
+ msgstr " -d, --driver Zjistí aktivní ovladač cpufreq *\n"
+
+-#: utils/info.c:375
++#: utils/info.c:454
+ #, c-format
+ msgid " -p, --policy Gets the currently used cpufreq policy *\n"
+ msgstr " -p, --policy Zjistí aktuální taktiku cpufreq *\n"
+
+-#: utils/info.c:376
++#: utils/info.c:455
+ #, c-format
+ msgid " -g, --governors Determines available cpufreq governors *\n"
+ msgstr " -g, --governors Zjistí dostupné regulátory cpufreq *\n"
+
+-#: utils/info.c:377
+-#, c-format
++#: utils/info.c:456
++#, fuzzy, c-format
+ msgid ""
+-" -a, --affected-cpus Determines which CPUs can only switch frequency at "
+-"the\n"
+-" same time *\n"
++" -r, --related-cpus Determines which CPUs run at the same hardware "
++"frequency *\n"
+ msgstr ""
+ " -a, --affected-cpus Zjistí, které CPU musí měnit frekvenci zároveň *\n"
+
+-#: utils/info.c:379
++#: utils/info.c:457
++#, fuzzy, c-format
++msgid ""
++" -a, --affected-cpus Determines which CPUs need to have their frequency\n"
++" coordinated by software *\n"
++msgstr ""
++" -a, --affected-cpus Zjistí, které CPU musí měnit frekvenci zároveň *\n"
++
++#: utils/info.c:459
+ #, c-format
+ msgid " -s, --stats Shows cpufreq statistics if available\n"
+ msgstr " -s, --stats Zobrazí statistiku cpufreq, je-li dostupná\n"
+
+-#: utils/info.c:380
++#: utils/info.c:460
++#, fuzzy, c-format
++msgid ""
++" -y, --latency Determines the maximum latency on CPU frequency "
++"changes *\n"
++msgstr ""
++" -l, --hwlimits Zjistí minimální a maximální dostupnou frekvenci CPU "
++"*\n"
++
++#: utils/info.c:461
+ #, c-format
+ msgid ""
+ " -o, --proc Prints out information like provided by the /proc/"
+@@ -200,21 +226,21 @@ msgstr ""
+ " -o, --proc Vypíše informace ve formátu, jaký používalo rozhraní\n"
+ " /proc/cpufreq v kernelech řady 2.4 a časné 2.6\n"
+
+-#: utils/info.c:382
+-#, c-format
++#: utils/info.c:463
++#, fuzzy, c-format
+ msgid ""
+-" -m, --human human-readable output for the -f, -w and -s "
++" -m, --human human-readable output for the -f, -w, -s and -y "
+ "parameters\n"
+ msgstr ""
+ " -m, --human Výstup parametrů -f, -w a -s v „lidmi čitelném“ "
+ "formátu\n"
+
+-#: utils/info.c:383 utils/set.c:42
++#: utils/info.c:464
+ #, c-format
+ msgid " -h, --help Prints out this screen\n"
+ msgstr " -h, --help Vypíše tuto nápovědu\n"
+
+-#: utils/info.c:386
++#: utils/info.c:467
+ #, c-format
+ msgid ""
+ "If no argument or only the -c, --cpu parameter is given, debug output about\n"
+@@ -224,7 +250,7 @@ msgstr ""
+ "jsou\n"
+ "vypsány ladicí informace, což může být užitečné například při hlášení chyb.\n"
+
+-#: utils/info.c:388
++#: utils/info.c:469
+ #, c-format
+ msgid ""
+ "For the arguments marked with *, omitting the -c or --cpu argument is\n"
+@@ -233,14 +259,14 @@ msgstr ""
+ "Není-li při použití přepínačů označených * zadán parametr -c nebo --cpu,\n"
+ "předpokládá se jeho hodnota 0.\n"
+
+-#: utils/info.c:478
++#: utils/info.c:563
+ #, c-format
+ msgid ""
+ "The argument passed to this tool can't be combined with passing a --cpu "
+ "argument\n"
+ msgstr "Zadaný parametr nemůže být použit zároveň s přepínačem -c nebo --cpu\n"
+
+-#: utils/info.c:491
++#: utils/info.c:576
+ #, c-format
+ msgid ""
+ "You can't specify more than one --cpu parameter and/or\n"
+@@ -249,17 +275,17 @@ msgstr ""
+ "Nelze zadat více než jeden parametr -c nebo --cpu\n"
+ "anebo více než jeden parametr určující výstup\n"
+
+-#: utils/info.c:497 utils/set.c:79
++#: utils/info.c:582 utils/set.c:95
+ #, c-format
+ msgid "invalid or unknown argument\n"
+ msgstr "neplatný nebo neznámý parametr\n"
+
+-#: utils/set.c:34
++#: utils/set.c:36
+ #, c-format
+ msgid "Usage: cpufreq-set [options]\n"
+ msgstr "Užití: cpufreq-set [přepínače]\n"
+
+-#: utils/set.c:36
++#: utils/set.c:38
+ #, c-format
+ msgid ""
+ " -c CPU, --cpu CPU number of CPU where cpufreq settings shall be "
+@@ -268,7 +294,7 @@ msgstr ""
+ " -c CPU, --cpu CPU Číslo CPU pro který se má provést nastavení "
+ "cpufreq\n"
+
+-#: utils/set.c:37
++#: utils/set.c:39
+ #, c-format
+ msgid ""
+ " -d FREQ, --min FREQ new minimum CPU frequency the governor may "
+@@ -277,7 +303,7 @@ msgstr ""
+ " -d FREQ, --min FREQ Nová nejnižší frekvence, kterou může regulátor "
+ "vybrat\n"
+
+-#: utils/set.c:38
++#: utils/set.c:40
+ #, c-format
+ msgid ""
+ " -u FREQ, --max FREQ new maximum CPU frequency the governor may "
+@@ -286,12 +312,12 @@ msgstr ""
+ " -u FREQ, --max FREQ Nová nejvyšší frekvence, kterou může regulátor "
+ "zvolit\n"
+
+-#: utils/set.c:39
++#: utils/set.c:41
+ #, c-format
+ msgid " -g GOV, --governor GOV new cpufreq governor\n"
+ msgstr " -g GOV, --governors GOV Nový regulátor cpufreq\n"
+
+-#: utils/set.c:40
++#: utils/set.c:42
+ #, c-format
+ msgid ""
+ " -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
+@@ -303,6 +329,16 @@ msgstr ""
+
+ #: utils/set.c:44
+ #, c-format
++msgid " -r, --related Switches all hardware-related CPUs\n"
++msgstr ""
++
++#: utils/set.c:45
++#, fuzzy, c-format
++msgid " -h, --help Prints out this screen\n"
++msgstr " -h, --help Vypíše tuto nápovědu\n"
++
++#: utils/set.c:47
++#, c-format
+ msgid ""
+ "Notes:\n"
+ "1. Omitting the -c or --cpu argument is equivalent to setting it to zero\n"
+@@ -322,30 +358,7 @@ msgstr ""
+ " připojením názvu jednotky bez mezery mezi číslem a jednotkou\n"
+ " (FREQ v kHz =^ Hz * 0,001 = ^ MHz * 1000 =^ GHz * 1000000)\n"
+
+-#: utils/set.c:251
+-#, c-format
+-msgid ""
+-"the -f/--freq parameter cannot be combined with -d/--min, -u/--max or\n"
+-"-g/--governor parameters\n"
+-msgstr ""
+-"přepínač -f/--freq nemůže být použit zároveň\n"
+-"s přepínačem -d/--min, -u/--max nebo -g/--governor\n"
+-
+-#: utils/set.c:262
+-#, c-format
+-msgid ""
+-"At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
+-"-g/--governor must be passed\n"
+-msgstr ""
+-"Musí být zadán alespoň jeden přepínač\n"
+-"-f/--freq, -d/--min, -u/--max nebo -g/--governor\n"
+-
+-#: utils/set.c:282
+-#, c-format
+-msgid "wrong, unknown or unhandled CPU?\n"
+-msgstr "neznámý nebo nepodporovaný CPU?\n"
+-
+-#: utils/set.c:306
++#: utils/set.c:69
+ #, c-format
+ msgid ""
+ "Error setting new values. Common errors:\n"
+@@ -365,3 +378,26 @@ msgstr ""
+ "- Snažíte se nastavit určitou frekvenci, ale není dostupný\n"
+ " regulátor ‚userspace‘, například protože není nahrán v jádře,\n"
+ " nebo nelze na tomto hardware nastavit určitou frekvenci?\n"
++
++#: utils/set.c:183
++#, c-format
++msgid "wrong, unknown or unhandled CPU?\n"
++msgstr "neznámý nebo nepodporovaný CPU?\n"
++
++#: utils/set.c:336
++#, c-format
++msgid ""
++"the -f/--freq parameter cannot be combined with -d/--min, -u/--max or\n"
++"-g/--governor parameters\n"
++msgstr ""
++"přepínač -f/--freq nemůže být použit zároveň\n"
++"s přepínačem -d/--min, -u/--max nebo -g/--governor\n"
++
++#: utils/set.c:342
++#, c-format
++msgid ""
++"At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
++"-g/--governor must be passed\n"
++msgstr ""
++"Musí být zadán alespoň jeden přepínač\n"
++"-f/--freq, -d/--min, -u/--max nebo -g/--governor\n"
+diff --git a/po/de.po b/po/de.po
+index 4c3a2bb..a5970ae 100644
+--- a/po/de.po
++++ b/po/de.po
+@@ -7,7 +7,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 006\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2009-08-09 11:53+0200\n"
++"POT-Creation-Date: 2010-09-01 01:20+0200\n"
+ "PO-Revision-Date: 2009-08-08 17:18+0100\n"
+ "Last-Translator: <linux@dominikbrodowski.net>\n"
+ "Language-Team: NONE\n"
+diff --git a/po/fr.po b/po/fr.po
+index fffdb42..4ebb40b 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 0.1-pre2\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2008-07-17 11:29+0200\n"
++"POT-Creation-Date: 2010-09-01 01:20+0200\n"
+ "PO-Revision-Date: 2004-11-17 15:53+1000\n"
+ "Last-Translator: Bruno Ducrot <ducrot@poupinou.org>\n"
+ "Language-Team: NONE\n"
+@@ -21,64 +21,74 @@ msgstr ""
+ msgid "Couldn't count the number of CPUs (%s: %s), assuming 1\n"
+ msgstr "Dtermination du nombre de CPUs (%s : %s) impossible. Assume 1\n"
+
+-#: utils/info.c:67
++#: utils/info.c:68
+ #, c-format
+ msgid ""
+ " minimum CPU frequency - maximum CPU frequency - governor\n"
+ msgstr ""
+ " Frquence CPU minimale - Frquence CPU maximale - rgulateur\n"
+
+-#: utils/info.c:128
++#: utils/info.c:156
+ #, c-format
+ msgid "couldn't analyze CPU %d as it doesn't seem to be present\n"
+ msgstr "analyse du CPU %d impossible puisqu'il ne semble pas tre prsent\n"
+
+-#: utils/info.c:132
++#: utils/info.c:160
+ #, c-format
+ msgid "analyzing CPU %d:\n"
+ msgstr "analyse du CPU %d :\n"
+
+-#: utils/info.c:139
++#: utils/info.c:167
+ #, c-format
+ msgid " no or unknown cpufreq driver is active on this CPU\n"
+ msgstr " pas de pilotes cpufreq reconnu pour ce CPU\n"
+
+-#: utils/info.c:141
++#: utils/info.c:169
+ #, c-format
+ msgid " driver: %s\n"
+ msgstr " pilote : %s\n"
+
+-#: utils/info.c:147
+-#, c-format
+-msgid " CPUs which need to switch frequency at the same time: "
++#: utils/info.c:175
++#, fuzzy, c-format
++msgid " CPUs which run at the same hardware frequency: "
++msgstr " CPUs qui doivent changer de frquences en mme temps : "
++
++#: utils/info.c:186
++#, fuzzy, c-format
++msgid " CPUs which need to have their frequency coordinated by software: "
+ msgstr " CPUs qui doivent changer de frquences en mme temps : "
+
+-#: utils/info.c:157
++#: utils/info.c:197
++#, c-format
++msgid " maximum transition latency: "
++msgstr ""
++
++#: utils/info.c:203
+ #, c-format
+ msgid " hardware limits: "
+ msgstr " limitation matrielle : "
+
+-#: utils/info.c:166
++#: utils/info.c:212
+ #, c-format
+ msgid " available frequency steps: "
+ msgstr " plage de frquence : "
+
+-#: utils/info.c:179
++#: utils/info.c:225
+ #, c-format
+ msgid " available cpufreq governors: "
+ msgstr " rgulateurs disponibles : "
+
+-#: utils/info.c:190
++#: utils/info.c:236
+ #, c-format
+ msgid " current policy: frequency should be within "
+ msgstr " tactique actuelle : la frquence doit tre comprise entre "
+
+-#: utils/info.c:192
++#: utils/info.c:238
+ #, c-format
+ msgid " and "
+ msgstr " et "
+
+-#: utils/info.c:196
++#: utils/info.c:242
+ #, c-format
+ msgid ""
+ "The governor \"%s\" may decide which speed to use\n"
+@@ -87,37 +97,37 @@ msgstr ""
+ "Le rgulateur \"%s\" est libre de choisir la vitesse\n"
+ " dans cette plage de frquences.\n"
+
+-#: utils/info.c:203
++#: utils/info.c:249
+ #, c-format
+ msgid " current CPU frequency is "
+ msgstr " la frquence actuelle de ce CPU est "
+
+-#: utils/info.c:206
++#: utils/info.c:252
+ #, c-format
+ msgid " (asserted by call to hardware)"
+ msgstr " (vrifi par un appel direct du matriel)"
+
+-#: utils/info.c:214
++#: utils/info.c:260
+ #, c-format
+ msgid " cpufreq stats: "
+ msgstr " des statistique concernant cpufreq:"
+
+-#: utils/info.c:361 utils/set.c:30
++#: utils/info.c:440 utils/set.c:31
+ #, c-format
+ msgid "Report errors and bugs to %s, please.\n"
+ msgstr "Veuillez rapportez les erreurs et les bogues %s, s'il vous plait.\n"
+
+-#: utils/info.c:365
++#: utils/info.c:444
+ #, c-format
+ msgid "Usage: cpufreq-info [options]\n"
+ msgstr "Usage : cpufreq-info [options]\n"
+
+-#: utils/info.c:366 utils/set.c:35
++#: utils/info.c:445 utils/set.c:37
+ #, c-format
+ msgid "Options:\n"
+ msgstr "Options :\n"
+
+-#: utils/info.c:367
++#: utils/info.c:446
+ #, c-format
+ msgid ""
+ " -c CPU, --cpu CPU CPU number which information shall be determined "
+@@ -126,12 +136,12 @@ msgstr ""
+ " -c CPU, --cpu CPU Numro du CPU pour lequel l'information sera "
+ "affiche\n"
+
+-#: utils/info.c:368
++#: utils/info.c:447
+ #, c-format
+ msgid " -e, --debug Prints out debug information\n"
+ msgstr " -e, --debug Afficher les informations de dboguage\n"
+
+-#: utils/info.c:369
++#: utils/info.c:448
+ #, c-format
+ msgid ""
+ " -f, --freq Get frequency the CPU currently runs at, according\n"
+@@ -140,7 +150,7 @@ msgstr ""
+ " -f, --freq Obtenir la frquence actuelle du CPU selon le point\n"
+ " de vue du coeur du systme de cpufreq *\n"
+
+-#: utils/info.c:371
++#: utils/info.c:450
+ #, c-format
+ msgid ""
+ " -w, --hwfreq Get frequency the CPU currently runs at, by reading\n"
+@@ -149,7 +159,7 @@ msgstr ""
+ " -w, --hwfreq Obtenir la frquence actuelle du CPU directement par\n"
+ " le matriel (doit tre root) *\n"
+
+-#: utils/info.c:373
++#: utils/info.c:452
+ #, c-format
+ msgid ""
+ " -l, --hwlimits Determine the minimum and maximum CPU frequency "
+@@ -158,40 +168,57 @@ msgstr ""
+ " -l, --hwlimits Affiche les frquences minimales et maximales du CPU "
+ "*\n"
+
+-#: utils/info.c:374
++#: utils/info.c:453
+ #, c-format
+ msgid " -d, --driver Determines the used cpufreq kernel driver *\n"
+ msgstr " -d, --driver Affiche le pilote cpufreq utilis *\n"
+
+-#: utils/info.c:375
++#: utils/info.c:454
+ #, c-format
+ msgid " -p, --policy Gets the currently used cpufreq policy *\n"
+ msgstr " -p, --policy Affiche la tactique actuelle de cpufreq *\n"
+
+-#: utils/info.c:376
++#: utils/info.c:455
+ #, c-format
+ msgid " -g, --governors Determines available cpufreq governors *\n"
+ msgstr ""
+ " -g, --governors Affiche les rgulateurs disponibles de cpufreq *\n"
+
+-#: utils/info.c:377
+-#, c-format
++#: utils/info.c:456
++#, fuzzy, c-format
+ msgid ""
+-" -a, --affected-cpus Determines which CPUs can only switch frequency at "
+-"the\n"
+-" same time *\n"
++" -r, --related-cpus Determines which CPUs run at the same hardware "
++"frequency *\n"
+ msgstr ""
+ " -a, --affected-cpus Affiche quels sont les CPUs qui doivent changer de\n"
+ " frquences en mme temps *\n"
+
+-#: utils/info.c:379
++#: utils/info.c:457
++#, fuzzy, c-format
++msgid ""
++" -a, --affected-cpus Determines which CPUs need to have their frequency\n"
++" coordinated by software *\n"
++msgstr ""
++" -a, --affected-cpus Affiche quels sont les CPUs qui doivent changer de\n"
++" frquences en mme temps *\n"
++
++#: utils/info.c:459
+ #, c-format
+ msgid " -s, --stats Shows cpufreq statistics if available\n"
+ msgstr ""
+ " -s, --stats Indique des statistiques concernant cpufreq, si\n"
+ " disponibles\n"
+
+-#: utils/info.c:380
++#: utils/info.c:460
++#, fuzzy, c-format
++msgid ""
++" -y, --latency Determines the maximum latency on CPU frequency "
++"changes *\n"
++msgstr ""
++" -l, --hwlimits Affiche les frquences minimales et maximales du CPU "
++"*\n"
++
++#: utils/info.c:461
+ #, c-format
+ msgid ""
+ " -o, --proc Prints out information like provided by the /proc/"
+@@ -203,21 +230,21 @@ msgstr ""
+ "versions\n"
+ " 2.4 et les anciennes versions 2.6 du noyau\n"
+
+-#: utils/info.c:382
+-#, c-format
++#: utils/info.c:463
++#, fuzzy, c-format
+ msgid ""
+-" -m, --human human-readable output for the -f, -w and -s "
++" -m, --human human-readable output for the -f, -w, -s and -y "
+ "parameters\n"
+ msgstr ""
+ " -m, --human affiche dans un format lisible pour un humain\n"
+ " pour les options -f, -w et -s (MHz, GHz)\n"
+
+-#: utils/info.c:383 utils/set.c:42
++#: utils/info.c:464
+ #, c-format
+ msgid " -h, --help Prints out this screen\n"
+ msgstr " -h, --help affiche l'aide-mmoire\n"
+
+-#: utils/info.c:386
++#: utils/info.c:467
+ #, c-format
+ msgid ""
+ "If no argument or only the -c, --cpu parameter is given, debug output about\n"
+@@ -227,21 +254,21 @@ msgstr ""
+ "argument, ou bien si seulement l'argument -c (--cpu) est donn, afin de\n"
+ "faciliter les rapports de bogues par exemple\n"
+
+-#: utils/info.c:388
++#: utils/info.c:469
+ #, c-format
+ msgid ""
+ "For the arguments marked with *, omitting the -c or --cpu argument is\n"
+ "equivalent to setting it to zero\n"
+ msgstr "Les arguments avec un * utiliseront le CPU 0 si -c (--cpu) est omis\n"
+
+-#: utils/info.c:478
++#: utils/info.c:563
+ #, c-format
+ msgid ""
+ "The argument passed to this tool can't be combined with passing a --cpu "
+ "argument\n"
+ msgstr "Cette option est incompatible avec --cpu\n"
+
+-#: utils/info.c:491
++#: utils/info.c:576
+ #, c-format
+ msgid ""
+ "You can't specify more than one --cpu parameter and/or\n"
+@@ -250,17 +277,17 @@ msgstr ""
+ "On ne peut indiquer plus d'un paramtre --cpu, tout comme l'on ne peut\n"
+ "spcifier plus d'un argument de formatage\n"
+
+-#: utils/info.c:497 utils/set.c:79
++#: utils/info.c:582 utils/set.c:95
+ #, c-format
+ msgid "invalid or unknown argument\n"
+ msgstr "option invalide\n"
+
+-#: utils/set.c:34
++#: utils/set.c:36
+ #, c-format
+ msgid "Usage: cpufreq-set [options]\n"
+ msgstr "Usage : cpufreq-set [options]\n"
+
+-#: utils/set.c:36
++#: utils/set.c:38
+ #, c-format
+ msgid ""
+ " -c CPU, --cpu CPU number of CPU where cpufreq settings shall be "
+@@ -269,7 +296,7 @@ msgstr ""
+ " -c CPU, --cpu CPU numro du CPU prendre en compte pour les\n"
+ " changements\n"
+
+-#: utils/set.c:37
++#: utils/set.c:39
+ #, c-format
+ msgid ""
+ " -d FREQ, --min FREQ new minimum CPU frequency the governor may "
+@@ -278,7 +305,7 @@ msgstr ""
+ " -d FREQ, --min FREQ nouvelle frquence minimale du CPU utiliser\n"
+ " par le rgulateur\n"
+
+-#: utils/set.c:38
++#: utils/set.c:40
+ #, c-format
+ msgid ""
+ " -u FREQ, --max FREQ new maximum CPU frequency the governor may "
+@@ -287,12 +314,12 @@ msgstr ""
+ " -u FREQ, --max FREQ nouvelle frquence maximale du CPU utiliser\n"
+ " par le rgulateur\n"
+
+-#: utils/set.c:39
++#: utils/set.c:41
+ #, c-format
+ msgid " -g GOV, --governor GOV new cpufreq governor\n"
+ msgstr " -g GOV, --governor GOV active le rgulateur GOV\n"
+
+-#: utils/set.c:40
++#: utils/set.c:42
+ #, c-format
+ msgid ""
+ " -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
+@@ -304,6 +331,16 @@ msgstr ""
+
+ #: utils/set.c:44
+ #, c-format
++msgid " -r, --related Switches all hardware-related CPUs\n"
++msgstr ""
++
++#: utils/set.c:45
++#, fuzzy, c-format
++msgid " -h, --help Prints out this screen\n"
++msgstr " -h, --help affiche l'aide-mmoire\n"
++
++#: utils/set.c:47
++#, c-format
+ msgid ""
+ "Notes:\n"
+ "1. Omitting the -c or --cpu argument is equivalent to setting it to zero\n"
+@@ -322,30 +359,7 @@ msgstr ""
+ " les valeurs par hz, kHz (par dfaut), MHz, GHz ou THz\n"
+ " (kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).\n"
+
+-#: utils/set.c:251
+-#, c-format
+-msgid ""
+-"the -f/--freq parameter cannot be combined with -d/--min, -u/--max or\n"
+-"-g/--governor parameters\n"
+-msgstr ""
+-"l'option -f/--freq est incompatible avec les options -d/--min, -u/--max et\n"
+-"-g/--governor\n"
+-
+-#: utils/set.c:262
+-#, c-format
+-msgid ""
+-"At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
+-"-g/--governor must be passed\n"
+-msgstr ""
+-"L'un de ces paramtres est obligatoire : -f/--freq, -d/--min, -u/--max et\n"
+-"-g/--governor\n"
+-
+-#: utils/set.c:282
+-#, c-format
+-msgid "wrong, unknown or unhandled CPU?\n"
+-msgstr "CPU inconnu ou non support ?\n"
+-
+-#: utils/set.c:306
++#: utils/set.c:69
+ #, c-format
+ msgid ""
+ "Error setting new values. Common errors:\n"
+@@ -368,3 +382,26 @@ msgstr ""
+ "- vous voulez utiliser l'option -f/--freq, mais le rgulateur userspace \n"
+ " n'est pas disponible, par exemple parce que le matriel ne le supporte\n"
+ " pas, ou bien n'est tout simplement pas charg.\n"
++
++#: utils/set.c:183
++#, c-format
++msgid "wrong, unknown or unhandled CPU?\n"
++msgstr "CPU inconnu ou non support ?\n"
++
++#: utils/set.c:336
++#, c-format
++msgid ""
++"the -f/--freq parameter cannot be combined with -d/--min, -u/--max or\n"
++"-g/--governor parameters\n"
++msgstr ""
++"l'option -f/--freq est incompatible avec les options -d/--min, -u/--max et\n"
++"-g/--governor\n"
++
++#: utils/set.c:342
++#, c-format
++msgid ""
++"At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
++"-g/--governor must be passed\n"
++msgstr ""
++"L'un de ces paramtres est obligatoire : -f/--freq, -d/--min, -u/--max et\n"
++"-g/--governor\n"
+diff --git a/po/it.po b/po/it.po
+index 36f09ed..4e9aa83 100644
+--- a/po/it.po
++++ b/po/it.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 0.3\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2009-08-09 11:53+0200\n"
++"POT-Creation-Date: 2010-09-01 01:20+0200\n"
+ "PO-Revision-Date: 2009-08-15 12:00+0900\n"
+ "Last-Translator: Mattia Dongili <malattia@gmail.com>\n"
+ "Language-Team: NONE\n"
+diff --git a/po/pt.po b/po/pt.po
+index 75cca0d..2baf1d5 100644
+--- a/po/pt.po
++++ b/po/pt.po
+@@ -8,7 +8,7 @@ msgid ""
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 004\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2009-08-09 11:53+0200\n"
++"POT-Creation-Date: 2010-09-01 01:20+0200\n"
+ "PO-Revision-Date: 2008-06-14 22:16-0400\n"
+ "Last-Translator: Claudio Eduardo <claudioeddy@gmail.com>\n"
+ "MIME-Version: 1.0\n"
+--
+1.7.10
+
diff --git a/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch b/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
new file mode 100644
index 000000000000..308e73a5b6a3
--- /dev/null
+++ b/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
@@ -0,0 +1,35 @@
+From d4490efed068a552e8b67d52a0726458a224c9a0 Mon Sep 17 00:00:00 2001
+From: Frank Arnold <frank.arnold@amd.com>
+Date: Wed, 8 Dec 2010 17:39:14 +0100
+Subject: [PATCH 3/8] cpufrequtils aperf: Fix MSR read on 32-bit
+
+The cpufreq-aperf command does not work on 32-bit systems. The reason
+for that is a wrong count argument passed to the read() call. Instead
+of the buffer size, the size of the pointer to the buffer is used. On
+64-bit systems this just happened to work, because we need to read an
+8 byte value and a pointer has a size of 8 bytes on 64-bit. On 32-bit
+systems only 4 bytes are read, which then triggers the error path.
+
+Signed-off-by: Frank Arnold <frank.arnold@amd.com>
+Reviewed-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ utils/aperf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/utils/aperf.c b/utils/aperf.c
+index 1c64501..6302f5a 100644
+--- a/utils/aperf.c
++++ b/utils/aperf.c
+@@ -100,7 +100,7 @@ static int read_msr(int cpu, unsigned int idx, unsigned long long *val)
+ return -1;
+ if (lseek(fd, idx, SEEK_CUR) == -1)
+ goto err;
+- if (read(fd, val, sizeof val) != sizeof *val)
++ if (read(fd, val, sizeof *val) != sizeof *val)
+ goto err;
+ close(fd);
+ return 0;
+--
+1.7.10
+
diff --git a/0004-i18n-Catalan.patch b/0004-i18n-Catalan.patch
new file mode 100644
index 000000000000..f267f120c831
--- /dev/null
+++ b/0004-i18n-Catalan.patch
@@ -0,0 +1,531 @@
+From f87d9bf4c62d6d7017c35357f425038f25b0e3e9 Mon Sep 17 00:00:00 2001
+From: Dominik Brodowski <linux@dominikbrodowski.net>
+Date: Wed, 9 Mar 2011 14:54:43 +0100
+Subject: [PATCH 4/8] i18n: Catalan
+
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ Makefile | 2 +-
+ po/ca.po | 415 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ po/cs.po | 3 +-
+ po/de.po | 3 +-
+ po/fr.po | 3 +-
+ po/it.po | 3 +-
+ po/pt.po | 2 +-
+ 7 files changed, 425 insertions(+), 6 deletions(-)
+ create mode 100644 po/ca.po
+
+Index: cpufrequtils/Makefile
+===================================================================
+--- cpufrequtils.orig/Makefile 2012-05-06 13:29:57.000000000 +0900
++++ cpufrequtils/Makefile 2012-05-06 13:30:41.865796974 +0900
+@@ -60,7 +60,7 @@
+
+ PACKAGE = cpufrequtils
+ PACKAGE_BUGREPORT = cpufreq@vger.kernel.org
+-LANGUAGES = de fr it cs pt
++LANGUAGES = de fr it cs pt ca
+
+
+ # Directory definitions. These are default and most probably
+Index: cpufrequtils/po/ca.po
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ cpufrequtils/po/ca.po 2012-05-06 13:30:41.869796865 +0900
+@@ -0,0 +1,415 @@
++# Catalan translation of cpufrequtil package
++# Copyright (C) 20042009,2011
++# This file is distributed under the same license as the cpufrequtil package.
++# Sergi Casbas <sergi.debian@qscsoft.net>, 2011.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: debian Squeezy\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2011-03-09 14:53+0100\n"
++"PO-Revision-Date: 2011-03-05 21:10+0100\n"
++"Last-Translator: Sergi Casbas <sergi.debian@qscsoft.net>\n"
++"Language-Team: Catalan <>\n"
++"Language: ca\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=utf-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"Plural-Forms: \n"
++
++#: utils/info.c:36
++#, c-format
++msgid "Couldn't count the number of CPUs (%s: %s), assuming 1\n"
++msgstr "No es pot comptar el nombre total de CPUs (%s: %s), se n'assumeix 1\n"
++
++#: utils/info.c:68
++#, c-format
++msgid ""
++" minimum CPU frequency - maximum CPU frequency - governor\n"
++msgstr ""
++" mínima freqüència de CPU - màxima freqüència de CPU - "
++"governador\n"
++
++#: utils/info.c:156
++#, c-format
++msgid "couldn't analyze CPU %d as it doesn't seem to be present\n"
++msgstr "No es pot analitzar la CPU %d ja que sembla que no està present.\n"
++
++#: utils/info.c:160
++#, c-format
++msgid "analyzing CPU %d:\n"
++msgstr "analitzant la CPU %d:\n"
++
++#: utils/info.c:167
++#, c-format
++msgid " no or unknown cpufreq driver is active on this CPU\n"
++msgstr "Controlador cpufreq inactiu o desconegut per aquesta CPU\n"
++
++#: utils/info.c:169
++#, c-format
++msgid " driver: %s\n"
++msgstr " controlador:%s\n"
++
++#: utils/info.c:175
++#, c-format
++msgid " CPUs which run at the same hardware frequency: "
++msgstr " CPUs que necessiten anar a la mateixa freqüència:"
++
++#: utils/info.c:186
++#, c-format
++msgid " CPUs which need to have their frequency coordinated by software: "
++msgstr ""
++" CPUs que necessiten les seves freqüències coordinades per programari:"
++
++#: utils/info.c:197
++#, c-format
++msgid " maximum transition latency: "
++msgstr " màxima latència de transició: "
++
++#: utils/info.c:203
++#, c-format
++msgid " hardware limits: "
++msgstr " límits del maquinari: "
++
++#: utils/info.c:212
++#, c-format
++msgid " available frequency steps: "
++msgstr " salts de freqüència disponibles:"
++
++#: utils/info.c:225
++#, c-format
++msgid " available cpufreq governors: "
++msgstr " governadors cpufreq disponibles: "
++
++#: utils/info.c:236
++#, c-format
++msgid " current policy: frequency should be within "
++msgstr " la directiva de freqüència ha de ser entre "
++
++#: utils/info.c:238
++#, c-format
++msgid " and "
++msgstr " i "
++
++#: utils/info.c:242
++#, c-format
++msgid ""
++"The governor \"%s\" may decide which speed to use\n"
++" within this range.\n"
++msgstr ""
++"EL governadors \"%s\" decidirà la freqüencial a fer servir\n"
++" dins d'aquest rang.\n"
++
++#: utils/info.c:249
++#, c-format
++msgid " current CPU frequency is "
++msgstr " la freqüència actual de la CPU és "
++
++#: utils/info.c:252
++#, c-format
++msgid " (asserted by call to hardware)"
++msgstr " (executat per crides al maquinari)"
++
++#: utils/info.c:260
++#, c-format
++msgid " cpufreq stats: "
++msgstr " estadístiques del cpufreq: "
++
++#: utils/info.c:440 utils/set.c:31
++#, c-format
++msgid "Report errors and bugs to %s, please.\n"
++msgstr "Si us plau, Informi del errors i bugs a %s.\n"
++
++#: utils/info.c:444
++#, c-format
++msgid "Usage: cpufreq-info [options]\n"
++msgstr "Forma d'ús: cpufreq-info [options]\n"
++
++#: utils/info.c:445 utils/set.c:37
++#, c-format
++msgid "Options:\n"
++msgstr "Opcions:\n"
++
++#: utils/info.c:446
++#, c-format
++msgid ""
++" -c CPU, --cpu CPU CPU number which information shall be determined "
++"about\n"
++msgstr ""
++" -c CPU, --cpu CPU número de la CPU de la que s'en vol determinar la "
++"informació\n"
++
++#: utils/info.c:447
++#, c-format
++msgid " -e, --debug Prints out debug information\n"
++msgstr " -e, --debug Mostra informació de depuració\n"
++
++#: utils/info.c:448
++#, c-format
++msgid ""
++" -f, --freq Get frequency the CPU currently runs at, according\n"
++" to the cpufreq core *\n"
++msgstr ""
++" -f, --freq Freqüència a la que funciona la CPU d'acord amb\n"
++" el nucli del cpufreq *\n"
++
++#: utils/info.c:450
++#, c-format
++msgid ""
++" -w, --hwfreq Get frequency the CPU currently runs at, by reading\n"
++" it from hardware (only available to root) *\n"
++msgstr ""
++" -w, --hwfreq Freqüència actual de la CPU llegida per maquinari\n"
++" (només disponible per al root) *\n"
++
++#: utils/info.c:452
++#, c-format
++msgid ""
++" -l, --hwlimits Determine the minimum and maximum CPU frequency "
++"allowed *\n"
++msgstr ""
++" -l, --hwlimits Determina les freqüències mínima i màxima permeses de "
++"la UPC *\n"
++
++#: utils/info.c:453
++#, c-format
++msgid " -d, --driver Determines the used cpufreq kernel driver *\n"
++msgstr ""
++" -d, --driver Determina el controlador de cpufreq del nucli a "
++"emprar *\n"
++
++#: utils/info.c:454
++#, c-format
++msgid " -p, --policy Gets the currently used cpufreq policy *\n"
++msgstr " -p, --policy Retorna la directiva del cpufreq actual *\n"
++
++#: utils/info.c:455
++#, c-format
++msgid " -g, --governors Determines available cpufreq governors *\n"
++msgstr ""
++" -g, --governors Determina els governadors de cpufreq disponibles *\n"
++
++#: utils/info.c:456
++#, c-format
++msgid ""
++" -r, --related-cpus Determines which CPUs run at the same hardware "
++"frequency *\n"
++msgstr ""
++" -r, --related-cpus Determina quines CPU0s funcionen a la mateixa "
++"freqüencial per maquinari *\n"
++
++#: utils/info.c:457
++#, c-format
++msgid ""
++" -a, --affected-cpus Determines which CPUs need to have their frequency\n"
++" coordinated by software *\n"
++msgstr ""
++" -a, --affected-cpus Determina quines CPUs necessiten coordinar la seva\n"
++" freqüencial per programari *\n"
++
++#: utils/info.c:459
++#, c-format
++msgid " -s, --stats Shows cpufreq statistics if available\n"
++msgstr ""
++" -s, --stats Mostra els estadístiques disponibles del cpufreq\n"
++
++#: utils/info.c:460
++#, c-format
++msgid ""
++" -y, --latency Determines the maximum latency on CPU frequency "
++"changes *\n"
++msgstr ""
++" -y, --latency Determina la latència màxima en els canvis de "
++"freqüència de la CPU *\n"
++
++#: utils/info.c:461
++#, c-format
++msgid ""
++" -o, --proc Prints out information like provided by the /proc/"
++"cpufreq\n"
++" interface in 2.4. and early 2.6. kernels\n"
++msgstr ""
++" -o, --proc Mostra la informació proveïda per la interfície /proc/"
++"cpufreq\n"
++" dels kernel 2.4. i els primerencs del 2.6\n"
++
++#: utils/info.c:463
++#, c-format
++msgid ""
++" -m, --human human-readable output for the -f, -w, -s and -y "
++"parameters\n"
++msgstr ""
++" -m, --human sortida en format llegible per als humans per als "
++"paràmetres -f, -w, -s i -y\n"
++
++#: utils/info.c:464
++#, c-format
++msgid " -h, --help Prints out this screen\n"
++msgstr " -h, --help Mostra aquesta informació\n"
++
++#: utils/info.c:467
++#, c-format
++msgid ""
++"If no argument or only the -c, --cpu parameter is given, debug output about\n"
++"cpufreq is printed which is useful e.g. for reporting bugs.\n"
++msgstr ""
++"Si no s'especifica argument o només s'especifica el paràmetre -c, --cpu, es "
++"mostrarà\n"
++"la informació de depuració del cpufreq útil per exemple, per informar "
++"d'errors.\n"
++
++#: utils/info.c:469
++#, c-format
++msgid ""
++"For the arguments marked with *, omitting the -c or --cpu argument is\n"
++"equivalent to setting it to zero\n"
++msgstr ""
++"Per als arguments marcats amb un *, ometre l'argument -c o --cpu és\n"
++"equivalent a establir-lo a zero\n"
++
++#: utils/info.c:563
++#, c-format
++msgid ""
++"The argument passed to this tool can't be combined with passing a --cpu "
++"argument\n"
++msgstr ""
++"Aquesta eina no pot combinar el paràmetre subministrat amb el paràmetre --"
++"cpu.\n"
++
++#: utils/info.c:576
++#, c-format
++msgid ""
++"You can't specify more than one --cpu parameter and/or\n"
++"more than one output-specific argument\n"
++msgstr ""
++"No es pot especificar més d'un paràmetre --cpu i/o més d'un\n"
++"argument de sortida específic\n"
++
++#: utils/info.c:582 utils/set.c:95
++#, c-format
++msgid "invalid or unknown argument\n"
++msgstr "paràmetre invàlid o desconegut\n"
++
++#: utils/set.c:36
++#, c-format
++msgid "Usage: cpufreq-set [options]\n"
++msgstr "Forma d'ús: cpufreq-set [OPCIÓ]\n"
++
++#: utils/set.c:38
++#, c-format
++msgid ""
++" -c CPU, --cpu CPU number of CPU where cpufreq settings shall be "
++"modified\n"
++msgstr ""
++" -c CPU, --cpu CPU número de la CPU de la que s'en vol modificar la "
++"configuració\n"
++
++#: utils/set.c:39
++#, c-format
++msgid ""
++" -d FREQ, --min FREQ new minimum CPU frequency the governor may "
++"select\n"
++msgstr ""
++" -d FREQ, --min FREQ nova freqüència mínima de la CPU que el "
++"governador pot seleccionar\n"
++
++#: utils/set.c:40
++#, c-format
++msgid ""
++" -u FREQ, --max FREQ new maximum CPU frequency the governor may "
++"select\n"
++msgstr ""
++" -u FREQ, --max FREQ nova freqüència màixima de la CPU que el "
++"governador pot seleccionar\n"
++
++#: utils/set.c:41
++#, c-format
++msgid " -g GOV, --governor GOV new cpufreq governor\n"
++msgstr " -g GOV, --governor GOV Establir nou governador del cpufreq\n"
++
++#: utils/set.c:42
++#, c-format
++msgid ""
++" -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
++" governor to be available and loaded\n"
++msgstr ""
++" -f FREQ, --freq FREQ especifica la freqüencia a establir. Requereix el "
++"governador\n"
++" userspace disponible i carregat\n"
++
++#: utils/set.c:44
++#, c-format
++msgid " -r, --related Switches all hardware-related CPUs\n"
++msgstr ""
++" -r, --related Canvia el maquinari de les CPU relacionades\n"
++
++#: utils/set.c:45
++#, c-format
++msgid " -h, --help Prints out this screen\n"
++msgstr " -h, --help Mostra aquesta informació\n"
++
++#: utils/set.c:47
++#, c-format
++msgid ""
++"Notes:\n"
++"1. Omitting the -c or --cpu argument is equivalent to setting it to zero\n"
++"2. The -f FREQ, --freq FREQ parameter cannot be combined with any other "
++"parameter\n"
++" except the -c CPU, --cpu CPU parameter\n"
++"3. FREQuencies can be passed in Hz, kHz (default), MHz, GHz, or THz\n"
++" by postfixing the value with the wanted unit name, without any space\n"
++" (FREQuency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).\n"
++msgstr ""
++"Notes:\n"
++"1. Ometre l'argument -c or --cpu és equivalent a establir-lo a zero\n"
++"2. El paràmetre -f FREQ, --freq FREQ no pot ser combinat amb cap d'altre\n"
++" excepte el paràmetre -c CPU, --cpu CPU\n"
++"3. Les FREQüències s'han de passar en Hz, kHz (defecte), MHz, GHz, or THz\n"
++" postfixant al valor desitjat en nom de la unitat sense cap espai\n"
++" (FREQuency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).\n"
++
++#: utils/set.c:69
++#, c-format
++msgid ""
++"Error setting new values. Common errors:\n"
++"- Do you have proper administration rights? (super-user?)\n"
++"- Is the governor you requested available and modprobed?\n"
++"- Trying to set an invalid policy?\n"
++"- Trying to set a specific frequency, but userspace governor is not "
++"available,\n"
++" for example because of hardware which cannot be set to a specific "
++"frequency\n"
++" or because the userspace governor isn't loaded?\n"
++msgstr ""
++"Errors comuns al establir nous valors:\n"
++"- Disposes dels permisos administratius adequats? (super-user?)\n"
++"- Està el governador demanat disponible i provat al mod?\n"
++"- S'està intentant establir una directiva invàlida?\n"
++"- S'està intentant establir una freqüencia específica però el governador "
++"userspace no esta disponible,\n"
++" per exemple perquè el maquinari no pot ser establert en una freqüència "
++"específica \n"
++" o perquè el governador userspace no està carregat?\n"
++
++#: utils/set.c:183
++#, c-format
++msgid "wrong, unknown or unhandled CPU?\n"
++msgstr "CPU desconeguda, equivocada, o no manipulable?\n"
++
++#: utils/set.c:336
++#, c-format
++msgid ""
++"the -f/--freq parameter cannot be combined with -d/--min, -u/--max or\n"
++"-g/--governor parameters\n"
++msgstr ""
++"el paràmetre -f/--freq no és pot combinar amb els paràmetres -d/--,min\n"
++", -u/--max o -g/--governor\n"
++
++#: utils/set.c:342
++#, c-format
++msgid ""
++"At least one parameter out of -f/--freq, -d/--min, -u/--max, and\n"
++"-g/--governor must be passed\n"
++msgstr ""
++"S'ha de facilitar com a mínim un dels següents paràmetres f/--freq,\n"
++" -d/--min, -u/--max, o g/--governor\n"
+Index: cpufrequtils/po/cs.po
+===================================================================
+--- cpufrequtils.orig/po/cs.po 2012-05-06 13:29:57.000000000 +0900
++++ cpufrequtils/po/cs.po 2012-05-06 13:31:32.400356869 +0900
+@@ -9,10 +9,11 @@
+ msgstr ""
+ "Project-Id-Version: cs\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2008-07-17 11:29+0200\n"
++"POT-Creation-Date: 2011-03-09 14:53+0100\n"
+ "PO-Revision-Date: 2008-06-11 16:26+0200\n"
+ "Last-Translator: Karel Volný <kavol@seznam.cz>\n"
+ "Language-Team: Czech <diskuze@lists.l10n.cz>\n"
++"Language: cs\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+Index: cpufrequtils/po/de.po
+===================================================================
+--- cpufrequtils.orig/po/de.po 2012-05-06 13:29:57.000000000 +0900
++++ cpufrequtils/po/de.po 2012-05-06 13:32:00.659553761 +0900
+@@ -7,10 +7,11 @@
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 006\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2009-08-09 11:53+0200\n"
++"POT-Creation-Date: 2011-03-09 14:53+0100\n"
+ "PO-Revision-Date: 2009-08-08 17:18+0100\n"
+ "Last-Translator: <linux@dominikbrodowski.net>\n"
+ "Language-Team: NONE\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=ISO-8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+Index: cpufrequtils/po/fr.po
+===================================================================
+--- cpufrequtils.orig/po/fr.po 2012-05-06 13:29:57.000000000 +0900
++++ cpufrequtils/po/fr.po 2012-05-06 13:32:35.194574779 +0900
+@@ -8,10 +8,11 @@
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 0.1-pre2\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2008-07-17 11:29+0200\n"
++"POT-Creation-Date: 2011-03-09 14:53+0100\n"
+ "PO-Revision-Date: 2004-11-17 15:53+1000\n"
+ "Last-Translator: Bruno Ducrot <ducrot@poupinou.org>\n"
+ "Language-Team: NONE\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=ISO-8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+Index: cpufrequtils/po/it.po
+===================================================================
+--- cpufrequtils.orig/po/it.po 2012-05-06 13:29:57.000000000 +0900
++++ cpufrequtils/po/it.po 2012-05-06 13:33:01.661825791 +0900
+@@ -8,10 +8,11 @@
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 0.3\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2009-08-09 11:53+0200\n"
++"POT-Creation-Date: 2011-03-09 14:53+0100\n"
+ "PO-Revision-Date: 2009-08-15 12:00+0900\n"
+ "Last-Translator: Mattia Dongili <malattia@gmail.com>\n"
+ "Language-Team: NONE\n"
++"Language: \n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+Index: cpufrequtils/po/pt.po
+===================================================================
+--- cpufrequtils.orig/po/pt.po 2012-05-06 13:29:57.000000000 +0900
++++ cpufrequtils/po/pt.po 2012-05-06 13:33:24.845170668 +0900
+@@ -8,7 +8,7 @@
+ msgstr ""
+ "Project-Id-Version: cpufrequtils 004\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2009-08-09 11:53+0200\n"
++"POT-Creation-Date: 2011-03-09 14:53+0100\n"
+ "PO-Revision-Date: 2008-06-14 22:16-0400\n"
+ "Last-Translator: Claudio Eduardo <claudioeddy@gmail.com>\n"
+ "MIME-Version: 1.0\n"
diff --git a/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch b/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
new file mode 100644
index 000000000000..94088300f924
--- /dev/null
+++ b/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
@@ -0,0 +1,29 @@
+From 9f2efa7bc6969c10562ac2c720d50ff77083e5c2 Mon Sep 17 00:00:00 2001
+From: Roman Vasiyarov <rvasiyarov@gmail.com>
+Date: Mon, 25 Apr 2011 21:34:23 +0400
+Subject: [PATCH 5/8] cpufrequtils sysfs: increase MAX_LINE_LEN
+
+larger sysfs data (>255 bytes) was truncated and thus used improperly
+
+Signed-off-by: Roman Vasiyarov <rvasiyarov@gmail.com>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ lib/sysfs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/sysfs.c b/lib/sysfs.c
+index 4e0edab..24dd563 100644
+--- a/lib/sysfs.c
++++ b/lib/sysfs.c
+@@ -18,7 +18,7 @@
+ #include "cpufreq.h"
+
+ #define PATH_TO_CPU "/sys/devices/system/cpu/"
+-#define MAX_LINE_LEN 255
++#define MAX_LINE_LEN 4096
+ #define SYSFS_PATH_MAX 255
+
+ /* helper function to read file from /sys into given buffer */
+--
+1.7.10
+
diff --git a/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch b/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
new file mode 100644
index 000000000000..ee3adff75a4c
--- /dev/null
+++ b/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
@@ -0,0 +1,46 @@
+From 9085ce6f615d9d2e0182d3ce029b882835bd0a6b Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Tue, 26 Jul 2011 19:28:31 -0400
+Subject: [PATCH 6/8] aperf: fix compilation on x86-32 with -fPIC
+
+ebx is used to store the GOT pointer when compiled with -fPIC, so it's
+not usable by inline assembly.
+
+https://bugs.gentoo.org/375967
+
+Signed-off-by: Matt Turner <mattst88@gmail.com>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ utils/cpuid.h | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/utils/cpuid.h b/utils/cpuid.h
+index 2bac69a..53da789 100644
+--- a/utils/cpuid.h
++++ b/utils/cpuid.h
+@@ -5,9 +5,21 @@ static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
+ unsigned int *ecx, unsigned int *edx)
+ {
+ /* ecx is often an input as well as an output. */
+- asm volatile("cpuid"
++ asm volatile(
++#if defined(__i386__) && defined(__PIC__)
++ "push %%ebx\n"
++ "cpuid\n"
++ "movl %%ebx, %1\n"
++ "pop %%ebx\n"
++#else
++ "cpuid\n"
++#endif
+ : "=a" (*eax),
++#if defined(__i386__) && defined(__PIC__)
++ "=r" (*ebx),
++#else
+ "=b" (*ebx),
++#endif
+ "=c" (*ecx),
+ "=d" (*edx)
+ : "0" (*eax), "2" (*ecx));
+--
+1.7.10
+
diff --git a/0007-po-add-missing-word-in-DE.patch b/0007-po-add-missing-word-in-DE.patch
new file mode 100644
index 000000000000..d116791b14f3
--- /dev/null
+++ b/0007-po-add-missing-word-in-DE.patch
@@ -0,0 +1,28 @@
+From 26ce99ab92ae9f1f367a58b7858a96f4e1e6814c Mon Sep 17 00:00:00 2001
+From: Dominik Brodowski <linux@dominikbrodowski.net>
+Date: Fri, 29 Jul 2011 19:40:46 +0200
+Subject: [PATCH 7/8] po: add missing word in DE
+
+Reported-by: Michael Basse
+Reported-by: <tkranz@zedat.fu-berlin.de>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ po/de.po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/po/de.po b/po/de.po
+index 1da1f2b..ee793f5 100644
+--- a/po/de.po
++++ b/po/de.po
+@@ -304,7 +304,7 @@ msgid ""
+ "modified\n"
+ msgstr ""
+ " -c CPU, --cpu CPU Nummer der CPU, deren Taktfrequenz-Einstellung\n"
+-" werden soll\n"
++" verndert werden soll\n"
+
+ #: utils/set.c:39
+ #, c-format
+--
+1.7.10
+
diff --git a/0008-cpufrequtils-make-NLS-optional.patch b/0008-cpufrequtils-make-NLS-optional.patch
new file mode 100644
index 000000000000..03724f1ef05e
--- /dev/null
+++ b/0008-cpufrequtils-make-NLS-optional.patch
@@ -0,0 +1,88 @@
+From a2f0c39d5f21596bb9f5223e895c0ff210b265d0 Mon Sep 17 00:00:00 2001
+From: Sergey Dryabzhinsky <sergey.dryabzhinsky@gmail.com>
+Date: Sat, 13 Aug 2011 23:02:20 -0400
+Subject: [PATCH 8/8] cpufrequtils: make NLS optional
+
+https://bugs.gentoo.org/205576
+
+Signed-off-by: Matt Turner <mattst88@gmail.com>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+ Makefile | 1 +
+ utils/info.c | 10 +++++++++-
+ utils/set.c | 10 +++++++++-
+ 3 files changed, 19 insertions(+), 2 deletions(-)
+
+Index: cpufrequtils/Makefile
+===================================================================
+--- cpufrequtils.orig/Makefile 2012-05-06 13:30:41.865796974 +0900
++++ cpufrequtils/Makefile 2012-05-06 13:35:13.994099919 +0900
+@@ -140,6 +140,7 @@
+ ifeq ($(strip $(NLS)),true)
+ INSTALL_NLS += install-gmo
+ COMPILE_NLS += update-gmo
++ CPPFLAGS += -DNLS
+ endif
+
+ ifeq ($(strip $(CPUFRQ_BENCH)),true)
+Index: cpufrequtils/utils/info.c
+===================================================================
+--- cpufrequtils.orig/utils/info.c 2012-05-06 11:56:20.287842838 +0900
++++ cpufrequtils/utils/info.c 2012-05-06 13:35:13.994099919 +0900
+@@ -10,7 +10,6 @@
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <libintl.h>
+ #include <locale.h>
+
+ #include <getopt.h>
+@@ -18,9 +17,18 @@
+ #include "cpufreq.h"
+
+
++#ifdef NLS
++#include <libintl.h>
+ #define _(String) gettext (String)
+ #define gettext_noop(String) String
+ #define N_(String) gettext_noop (String)
++#else
++#define gettext_noop(String) String
++#define _(String) gettext_noop (String)
++#define gettext(String) gettext_noop (String)
++#define N_(String) gettext_noop (String)
++#define textdomain(String)
++#endif
+
+ #define LINE_LEN 10
+
+Index: cpufrequtils/utils/set.c
+===================================================================
+--- cpufrequtils.orig/utils/set.c 2012-05-06 11:56:20.287842838 +0900
++++ cpufrequtils/utils/set.c 2012-05-06 13:35:13.994099919 +0900
+@@ -12,16 +12,24 @@
+ #include <limits.h>
+ #include <string.h>
+ #include <ctype.h>
+-#include <libintl.h>
+ #include <locale.h>
+
+ #include <getopt.h>
+
+ #include "cpufreq.h"
+
++#ifdef NLS
++#include <libintl.h>
+ #define _(String) gettext(String)
+ #define gettext_noop(String) String
+ #define N_(String) gettext_noop(String)
++#else
++#define gettext_noop(String) String
++#define _(String) gettext_noop (String)
++#define gettext(String) gettext_noop (String)
++#define N_(String) gettext_noop (String)
++#define textdomain(String)
++#endif
+
+ #define NORM_FREQ_LEN 32
+
diff --git a/01_add_cpufreq-aperf_manpage.patch b/01_add_cpufreq-aperf_manpage.patch
new file mode 100644
index 000000000000..4764dbe1b91f
--- /dev/null
+++ b/01_add_cpufreq-aperf_manpage.patch
@@ -0,0 +1,92 @@
+Add a manpage mostly taken from the source code comments and
+the command help output.
+
+Index: cpufrequtils/man/cpufreq-aperf.1
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ cpufrequtils/man/cpufreq-aperf.1 2012-05-06 13:29:37.943624564 +0900
+@@ -0,0 +1,44 @@
++.TH "cpufreq-aperf" "1" "0.1" "Mattia Dongili" ""
++.SH "NAME"
++.LP
++cpufreq\-aperf \- Calculates the average frequency over a time period
++.SH "SYNTAX"
++.LP
++cpufreq\-aperf [\fIoptions\fP]
++.SH "DESCRIPTION"
++.LP
++On latest processors exist two MSR registers refered to as:
++ - MPERF increasing with maxium (P0) frequency in C0
++ - APERF increasing with current/actual frequency in C0
++
++From this information the average frequency over a time period can be
++calculated and this is what this tool does.
++
++A nice falloff feature beside the average frequency is the time
++a processor core remained in C0 (working state) or any CX (sleep state)
++processor sleep state during the measured time period. This information
++can be determined from the fact that MPERF only increases in C0 state.
++.SH "OPTIONS"
++.LP
++.TP
++\fB\-c\fR \fB\-\-cpu\fR <\fICPU\fP>
++ The <\fICPU\fP> core to measure - default all cores.
++.TP
++\fB\-i\fR \fB\-\-interval\fR <\fIseconds\fP>
++Refresh rate - default 1 second.
++.TP
++\fB\-o\fR \fB\-\-once\fR
++Exit after one interval.
++.TP
++\fB\-h\fR \fB\-\-help\fR
++Prints the available options.
++.SH "REMARKS"
++.LP
++The msr driver must be loaded for this command to work.
++.SH "AUTHORS"
++.nf
++Thomas Renninger <trenn@suse.de>
++.fi
++.SH "SEE ALSO"
++.LP
++cpufreq\-set(1), cpufreq\-info(1)
+Index: cpufrequtils/man/cpufreq-info.1
+===================================================================
+--- cpufrequtils.orig/man/cpufreq-info.1 2012-05-06 11:56:21.215806103 +0900
++++ cpufrequtils/man/cpufreq-info.1 2012-05-06 13:29:37.943624564 +0900
+@@ -73,4 +73,4 @@
+ .fi
+ .SH "SEE ALSO"
+ .LP
+-cpufreq\-set(1)
++cpufreq\-set(1), cpufreq-aperf(1)
+Index: cpufrequtils/man/cpufreq-set.1
+===================================================================
+--- cpufrequtils.orig/man/cpufreq-set.1 2012-05-06 11:56:21.215806103 +0900
++++ cpufrequtils/man/cpufreq-set.1 2012-05-06 13:29:37.943624564 +0900
+@@ -53,4 +53,4 @@
+ .fi
+ .SH "SEE ALSO"
+ .LP
+-cpufreq\-info(1)
++cpufreq\-info(1), cpufreq-aperf(1)
+Index: cpufrequtils/Makefile
+===================================================================
+--- cpufrequtils.orig/Makefile 2012-05-06 11:56:21.215806103 +0900
++++ cpufrequtils/Makefile 2012-05-06 13:29:37.943624564 +0900
+@@ -248,6 +248,7 @@
+ install-man:
+ $(INSTALL_DATA) -D man/cpufreq-set.1 $(DESTDIR)${mandir}/man1/cpufreq-set.1
+ $(INSTALL_DATA) -D man/cpufreq-info.1 $(DESTDIR)${mandir}/man1/cpufreq-info.1
++ $(INSTALL_DATA) -D man/cpufreq-aperf.1 $(DESTDIR)${mandir}/man1/cpufreq-aperf.1
+
+ install-gmo:
+ $(INSTALL) -d $(DESTDIR)${localedir}
+@@ -270,6 +271,7 @@
+ - rm -f $(DESTDIR)${bindir}/cpufreq-aperf
+ - rm -f $(DESTDIR)${mandir}/man1/cpufreq-set.1
+ - rm -f $(DESTDIR)${mandir}/man1/cpufreq-info.1
++ - rm -f $(DESTDIR)${mandir}/man1/cpufreq-aperf.1
+ - for HLANG in $(LANGUAGES); do \
+ rm -f $(DESTDIR)${localedir}/$$HLANG/LC_MESSAGES/cpufrequtils.mo; \
+ done;
diff --git a/10_build_static_lib.patch b/10_build_static_lib.patch
new file mode 100644
index 000000000000..d6df88dd45f7
--- /dev/null
+++ b/10_build_static_lib.patch
@@ -0,0 +1,26 @@
+Build the static library archive even without libtool
+
+Index: cpufrequtils/Makefile
+===================================================================
+--- cpufrequtils.orig/Makefile 2012-05-06 14:54:58.573929641 +0900
++++ cpufrequtils/Makefile 2012-05-06 14:55:30.049333295 +0900
+@@ -193,7 +193,10 @@
+ @ln -sf $@ libcpufreq.so
+ @ln -sf $@ libcpufreq.so.$(LIB_MIN)
+
+-libcpufreq: libcpufreq.so.$(LIB_MAJ)
++libcpufreq.a: $(LIB_OBJS)
++ $(QUIET) $(AR) rcs $@ $(LIB_OBJS)
++
++libcpufreq: libcpufreq.so.$(LIB_MAJ) libcpufreq.a
+
+ cpufreq-%: libcpufreq.so.$(LIB_MAJ) $(UTIL_SRC)
+ $(QUIET) $(CC) $(CPPFLAGS) $(CFLAGS) -I. -I./lib/ -c -o utils/$@.o utils/$*.c
+@@ -237,6 +240,7 @@
+ install-lib:
+ $(INSTALL) -d $(DESTDIR)${libdir}
+ $(CP) libcpufreq.so* $(DESTDIR)${libdir}/
++ $(CP) libcpufreq.a $(DESTDIR)${libdir}/
+ $(INSTALL) -d $(DESTDIR)${includedir}
+ $(INSTALL_DATA) lib/cpufreq.h $(DESTDIR)${includedir}/cpufreq.h
+
diff --git a/11_dont_touch_po_files.patch b/11_dont_touch_po_files.patch
new file mode 100644
index 000000000000..0289150d410e
--- /dev/null
+++ b/11_dont_touch_po_files.patch
@@ -0,0 +1,31 @@
+Do not update po files upon building and installing binaries.
+Use a separate target instead.
+
+Index: cpufrequtils/Makefile
+===================================================================
+--- cpufrequtils.orig/Makefile 2012-05-06 14:55:18.445553259 +0900
++++ cpufrequtils/Makefile 2012-05-06 14:55:26.589398186 +0900
+@@ -211,9 +211,9 @@
+ test -f $(PACKAGE).po && \
+ mv -f $(PACKAGE).po po/$(PACKAGE).pot
+
+-update-gmo: po/$(PACKAGE).pot
++update-po: po/$(PACKAGE).pot
+ @for HLANG in $(LANGUAGES); do \
+- echo -n "Translating $$HLANG "; \
++ echo -n "Updating $$HLANG "; \
+ if msgmerge po/$$HLANG.po po/$(PACKAGE).pot -o \
+ po/$$HLANG.new.po; then \
+ mv -f po/$$HLANG.new.po po/$$HLANG.po; \
+@@ -221,6 +221,11 @@
+ echo "msgmerge for $$HLANG failed!"; \
+ rm -f po/$$HLANG.new.po; \
+ fi; \
++ done;
++
++update-gmo: po/$(PACKAGE).pot
++ @for HLANG in $(LANGUAGES); do \
++ echo -n "Translating $$HLANG "; \
+ msgfmt --statistics -o po/$$HLANG.gmo po/$$HLANG.po; \
+ done;
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..8f03a4cf94a1
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,57 @@
+# Maintainer: h8red h8red at yandex dot ru
+# Contributor: Mattia Dongili <Mattia Dongili>
+
+pkgname=cpufrequtils
+pkgver=008
+pkgrel=1
+pkgdesc="This package provides very useful tools to get information about the CPUFreq"
+arch=('i686' 'x86_64')
+url="http://kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html"
+license=('GPL2')
+source=("http://deb.debian.org/debian/pool/main/c/cpufrequtils/cpufrequtils_008.orig.tar.bz2"
+ '0001-Only-x86-has-cpuid-instruction.patch'
+ '0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch'
+ '0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch'
+ '0004-i18n-Catalan.patch'
+ '0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch'
+ '0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch'
+ '0007-po-add-missing-word-in-DE.patch'
+ '0008-cpufrequtils-make-NLS-optional.patch'
+ '01_add_cpufreq-aperf_manpage.patch'
+ '10_build_static_lib.patch'
+ '11_dont_touch_po_files.patch')
+md5sums=('e60e0b07810b51babd4447ae07285e7d'
+ '9ed71a50670aa99e12245cb3f5199142'
+ '4ccbd46b0b1563067d0c31fe510ff89d'
+ '5dd9add84e63b213295e2e2a30fd3667'
+ '2f7a864539dd0db18b6ff0d77873a8b2'
+ '139b340b964e2c942dbe426b061c6bc8'
+ '2242f015ca6b8478d6c1a3bfbca5ea48'
+ '0b7d50274fa8286796c9df0b156e2962'
+ 'a99653aab0d334569496a402389f062f'
+ '35dc88b7dfa18276b094355467957022'
+ '6e08e20d319d70770b90be548027503f'
+ 'a837db201e0bb724ccf617757a575e26')
+build() {
+ cd ${srcdir}
+
+ cd ${pkgname}-${pkgver}
+
+ patch -p1 < ${srcdir}/01_add_cpufreq-aperf_manpage.patch
+ patch -p1 < ${srcdir}/0001-Only-x86-has-cpuid-instruction.patch
+ #patch -p1 < ${srcdir}/0002-cpufrequtils-Remove-proc-compile-option-and-interfac.patch
+ patch -p1 < ${srcdir}/0003-cpufrequtils-aperf-Fix-MSR-read-on-32-bit.patch
+ patch -p1 < ${srcdir}/0004-i18n-Catalan.patch
+ patch -p1 < ${srcdir}/0005-cpufrequtils-sysfs-increase-MAX_LINE_LEN.patch
+ patch -p1 < ${srcdir}/0006-aperf-fix-compilation-on-x86-32-with-fPIC.patch
+ patch -p1 < ${srcdir}/0007-po-add-missing-word-in-DE.patch
+ patch -p1 < ${srcdir}/0008-cpufrequtils-make-NLS-optional.patch
+ patch -p1 < ${srcdir}/10_build_static_lib.patch
+ patch -p1 < ${srcdir}/11_dont_touch_po_files.patch
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+}