- Update to 3.2-rc5 version (not much changed, includes the
use-manpage-on-help patch -> removed it) - Change licence from GPL-2.0+ to GPL-2.0 to fit the kernel licence where sources are coming from - Provide a tiny script to quickly export and tar sources from the git repo OBS-URL: https://build.opensuse.org/package/show/hardware/cpupower?expand=0&rev=9
This commit is contained in:
parent
9b973a2c87
commit
a7c50bbe28
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:8afb2547a03de078d68d27aa819d1d394fde2929ec031345fa813a0d4abfa249
|
|
||||||
size 65620
|
|
3
cpupower-3.2.rc5.tar.bz2
Normal file
3
cpupower-3.2.rc5.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:74b69fc030e79caf654cb5c2a351e0d10479fbbe0b4c29a012e10c6a116a8648
|
||||||
|
size 67066
|
@ -1,657 +0,0 @@
|
|||||||
From: Dominik Brodowski <linux@dominikbrodowski.net>
|
|
||||||
Subject: cpupower: use man(1) when calling "cpupower help subcommand"
|
|
||||||
References: fate#310630
|
|
||||||
Patch-Mainline: 498ca793d90aef8ad38a852a969c257f62832738 undefined
|
|
||||||
Git-commit: 498ca793d90aef8ad38a852a969c257f62832738
|
|
||||||
|
|
||||||
|
|
||||||
Signed-off-by: Thomas Renninger <trenn@suse.de>
|
|
||||||
|
|
||||||
Instead of printing something non-formatted to stdout, call
|
|
||||||
man(1) to show the man page for the proper subcommand.
|
|
||||||
|
|
||||||
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
|
|
||||||
|
|
||||||
diff --git a/man/cpupower-frequency-info.1 b/man/cpupower-frequency-info.1
|
|
||||||
index 3194811..bb60a8d 100644
|
|
||||||
--- a/man/cpupower-frequency-info.1
|
|
||||||
+++ b/man/cpupower-frequency-info.1
|
|
||||||
@@ -1,10 +1,10 @@
|
|
||||||
-.TH "cpufreq-info" "1" "0.1" "Mattia Dongili" ""
|
|
||||||
+.TH "cpupower-frequency-info" "1" "0.1" "Mattia Dongili" ""
|
|
||||||
.SH "NAME"
|
|
||||||
.LP
|
|
||||||
-cpufreq\-info \- Utility to retrieve cpufreq kernel information
|
|
||||||
+cpupower frequency\-info \- Utility to retrieve cpufreq kernel information
|
|
||||||
.SH "SYNTAX"
|
|
||||||
.LP
|
|
||||||
-cpufreq\-info [\fIoptions\fP]
|
|
||||||
+cpupower [ \-c cpulist ] frequency\-info [\fIoptions\fP]
|
|
||||||
.SH "DESCRIPTION"
|
|
||||||
.LP
|
|
||||||
A small tool which prints out cpufreq information helpful to developers and interested users.
|
|
||||||
diff --git a/man/cpupower-frequency-set.1 b/man/cpupower-frequency-set.1
|
|
||||||
index 26e3e13..685f469 100644
|
|
||||||
--- a/man/cpupower-frequency-set.1
|
|
||||||
+++ b/man/cpupower-frequency-set.1
|
|
||||||
@@ -1,13 +1,13 @@
|
|
||||||
-.TH "cpufreq-set" "1" "0.1" "Mattia Dongili" ""
|
|
||||||
+.TH "cpupower-freqency-set" "1" "0.1" "Mattia Dongili" ""
|
|
||||||
.SH "NAME"
|
|
||||||
.LP
|
|
||||||
-cpufreq\-set \- A small tool which allows to modify cpufreq settings.
|
|
||||||
+cpupower frequency\-set \- A small tool which allows to modify cpufreq settings.
|
|
||||||
.SH "SYNTAX"
|
|
||||||
.LP
|
|
||||||
-cpufreq\-set [\fIoptions\fP]
|
|
||||||
+cpupower [ \-c cpu ] frequency\-set [\fIoptions\fP]
|
|
||||||
.SH "DESCRIPTION"
|
|
||||||
.LP
|
|
||||||
-cpufreq\-set allows you to modify cpufreq settings without having to type e.g. "/sys/devices/system/cpu/cpu0/cpufreq/scaling_set_speed" all the time.
|
|
||||||
+cpupower frequency\-set allows you to modify cpufreq settings without having to type e.g. "/sys/devices/system/cpu/cpu0/cpufreq/scaling_set_speed" all the time.
|
|
||||||
.SH "OPTIONS"
|
|
||||||
.LP
|
|
||||||
.TP
|
|
||||||
diff --git a/man/cpupower.1 b/man/cpupower.1
|
|
||||||
index 78c20fe..baf741d 100644
|
|
||||||
--- a/man/cpupower.1
|
|
||||||
+++ b/man/cpupower.1
|
|
||||||
@@ -3,7 +3,7 @@
|
|
||||||
cpupower \- Shows and sets processor power related values
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.ft B
|
|
||||||
-.B cpupower [ \-c cpulist ] subcommand [ARGS]
|
|
||||||
+.B cpupower [ \-c cpulist ] <command> [ARGS]
|
|
||||||
|
|
||||||
.B cpupower \-v|\-\-version
|
|
||||||
|
|
||||||
@@ -13,24 +13,24 @@ cpupower \- Shows and sets processor power related values
|
|
||||||
\fBcpupower \fP is a collection of tools to examine and tune power saving
|
|
||||||
related features of your processor.
|
|
||||||
|
|
||||||
-The manpages of the subcommands (cpupower\-<subcommand>(1)) provide detailed
|
|
||||||
+The manpages of the commands (cpupower\-<command>(1)) provide detailed
|
|
||||||
descriptions of supported features. Run \fBcpupower help\fP to get an overview
|
|
||||||
-of supported subcommands.
|
|
||||||
+of supported commands.
|
|
||||||
|
|
||||||
.SH Options
|
|
||||||
.PP
|
|
||||||
\-\-help, \-h
|
|
||||||
.RS 4
|
|
||||||
-Shows supported subcommands and general usage.
|
|
||||||
+Shows supported commands and general usage.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
\-\-cpu cpulist, \-c cpulist
|
|
||||||
.RS 4
|
|
||||||
Only show or set values for specific cores.
|
|
||||||
-This option is not supported by all subcommands, details can be found in the
|
|
||||||
-manpages of the subcommands.
|
|
||||||
+This option is not supported by all commands, details can be found in the
|
|
||||||
+manpages of the commands.
|
|
||||||
|
|
||||||
-Some subcommands access all cores (typically the *\-set commands), some only
|
|
||||||
+Some commands access all cores (typically the *\-set commands), some only
|
|
||||||
the first core (typically the *\-info commands) by default.
|
|
||||||
|
|
||||||
The syntax for <cpulist> is based on how the kernel exports CPU bitmasks via
|
|
||||||
diff --git a/utils/builtin.h b/utils/builtin.h
|
|
||||||
index c870ffb..c10496f 100644
|
|
||||||
--- a/utils/builtin.h
|
|
||||||
+++ b/utils/builtin.h
|
|
||||||
@@ -8,11 +8,4 @@ extern int cmd_freq_info(int argc, const char **argv);
|
|
||||||
extern int cmd_idle_info(int argc, const char **argv);
|
|
||||||
extern int cmd_monitor(int argc, const char **argv);
|
|
||||||
|
|
||||||
-extern void set_help(void);
|
|
||||||
-extern void info_help(void);
|
|
||||||
-extern void freq_set_help(void);
|
|
||||||
-extern void freq_info_help(void);
|
|
||||||
-extern void idle_info_help(void);
|
|
||||||
-extern void monitor_help(void);
|
|
||||||
-
|
|
||||||
#endif
|
|
||||||
diff --git a/utils/cpufreq-info.c b/utils/cpufreq-info.c
|
|
||||||
index 5a1d25f..28953c9 100644
|
|
||||||
--- a/utils/cpufreq-info.c
|
|
||||||
+++ b/utils/cpufreq-info.c
|
|
||||||
@@ -510,37 +510,6 @@ static int get_latency(unsigned int cpu, unsigned int human)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void freq_info_help(void)
|
|
||||||
-{
|
|
||||||
- printf(_("Usage: cpupower freqinfo [options]\n"));
|
|
||||||
- printf(_("Options:\n"));
|
|
||||||
- printf(_(" -e, --debug Prints out debug information [default]\n"));
|
|
||||||
- printf(_(" -f, --freq Get frequency the CPU currently runs at, according\n"
|
|
||||||
- " to the cpufreq core *\n"));
|
|
||||||
- printf(_(" -w, --hwfreq Get frequency the CPU currently runs at, by reading\n"
|
|
||||||
- " it from hardware (only available to root) *\n"));
|
|
||||||
- printf(_(" -l, --hwlimits Determine the minimum and maximum CPU frequency allowed *\n"));
|
|
||||||
- printf(_(" -d, --driver Determines the used cpufreq kernel driver *\n"));
|
|
||||||
- printf(_(" -p, --policy Gets the currently used cpufreq policy *\n"));
|
|
||||||
- printf(_(" -g, --governors Determines available cpufreq governors *\n"));
|
|
||||||
- printf(_(" -r, --related-cpus Determines which CPUs run at the same hardware frequency *\n"));
|
|
||||||
- printf(_(" -a, --affected-cpus Determines which CPUs need to have their frequency\n"
|
|
||||||
- " coordinated by software *\n"));
|
|
||||||
- printf(_(" -s, --stats Shows cpufreq statistics if available\n"));
|
|
||||||
- printf(_(" -y, --latency Determines the maximum latency on CPU frequency changes *\n"));
|
|
||||||
- printf(_(" -b, --boost Checks for turbo or boost modes *\n"));
|
|
||||||
- printf(_(" -o, --proc Prints out information like provided by the /proc/cpufreq\n"
|
|
||||||
- " interface in 2.4. and early 2.6. kernels\n"));
|
|
||||||
- printf(_(" -m, --human human-readable output for the -f, -w, -s and -y parameters\n"));
|
|
||||||
- printf(_(" -h, --help Prints out this screen\n"));
|
|
||||||
-
|
|
||||||
- printf("\n");
|
|
||||||
- printf(_("If no argument is given, full output about\n"
|
|
||||||
- "cpufreq is printed which is useful e.g. for reporting bugs.\n\n"));
|
|
||||||
- printf(_("By default info of CPU 0 is shown which can be overridden\n"
|
|
||||||
- "with the cpupower --cpu main command option.\n"));
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static struct option info_opts[] = {
|
|
||||||
{ .name = "debug", .has_arg = no_argument, .flag = NULL, .val = 'e'},
|
|
||||||
{ .name = "boost", .has_arg = no_argument, .flag = NULL, .val = 'b'},
|
|
||||||
@@ -556,7 +525,6 @@ static struct option info_opts[] = {
|
|
||||||
{ .name = "latency", .has_arg = no_argument, .flag = NULL, .val = 'y'},
|
|
||||||
{ .name = "proc", .has_arg = no_argument, .flag = NULL, .val = 'o'},
|
|
||||||
{ .name = "human", .has_arg = no_argument, .flag = NULL, .val = 'm'},
|
|
||||||
- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'},
|
|
||||||
{ },
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -570,16 +538,12 @@ int cmd_freq_info(int argc, char **argv)
|
|
||||||
int output_param = 0;
|
|
||||||
|
|
||||||
do {
|
|
||||||
- ret = getopt_long(argc, argv, "hoefwldpgrasmyb", info_opts, NULL);
|
|
||||||
+ ret = getopt_long(argc, argv, "oefwldpgrasmyb", info_opts, NULL);
|
|
||||||
switch (ret) {
|
|
||||||
case '?':
|
|
||||||
output_param = '?';
|
|
||||||
cont = 0;
|
|
||||||
break;
|
|
||||||
- case 'h':
|
|
||||||
- output_param = 'h';
|
|
||||||
- cont = 0;
|
|
||||||
- break;
|
|
||||||
case -1:
|
|
||||||
cont = 0;
|
|
||||||
break;
|
|
||||||
@@ -642,11 +606,7 @@ int cmd_freq_info(int argc, char **argv)
|
|
||||||
return -EINVAL;
|
|
||||||
case '?':
|
|
||||||
printf(_("invalid or unknown argument\n"));
|
|
||||||
- freq_info_help();
|
|
||||||
return -EINVAL;
|
|
||||||
- case 'h':
|
|
||||||
- freq_info_help();
|
|
||||||
- return EXIT_SUCCESS;
|
|
||||||
case 'o':
|
|
||||||
proc_cpufreq_output();
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
diff --git a/utils/cpufreq-set.c b/utils/cpufreq-set.c
|
|
||||||
index 5f78362..dd1539e 100644
|
|
||||||
--- a/utils/cpufreq-set.c
|
|
||||||
+++ b/utils/cpufreq-set.c
|
|
||||||
@@ -20,34 +20,11 @@
|
|
||||||
|
|
||||||
#define NORM_FREQ_LEN 32
|
|
||||||
|
|
||||||
-void freq_set_help(void)
|
|
||||||
-{
|
|
||||||
- printf(_("Usage: cpupower frequency-set [options]\n"));
|
|
||||||
- printf(_("Options:\n"));
|
|
||||||
- printf(_(" -d FREQ, --min FREQ new minimum CPU frequency the governor may select\n"));
|
|
||||||
- printf(_(" -u FREQ, --max FREQ new maximum CPU frequency the governor may select\n"));
|
|
||||||
- printf(_(" -g GOV, --governor GOV new cpufreq governor\n"));
|
|
||||||
- printf(_(" -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n"
|
|
||||||
- " governor to be available and loaded\n"));
|
|
||||||
- printf(_(" -r, --related Switches all hardware-related CPUs\n"));
|
|
||||||
- printf(_(" -h, --help Prints out this screen\n"));
|
|
||||||
- printf("\n");
|
|
||||||
- printf(_("Notes:\n"
|
|
||||||
- "1. Omitting the -c or --cpu argument is equivalent to setting it to \"all\"\n"));
|
|
||||||
- printf(_("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"));
|
|
||||||
-
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static struct option set_opts[] = {
|
|
||||||
{ .name = "min", .has_arg = required_argument, .flag = NULL, .val = 'd'},
|
|
||||||
{ .name = "max", .has_arg = required_argument, .flag = NULL, .val = 'u'},
|
|
||||||
{ .name = "governor", .has_arg = required_argument, .flag = NULL, .val = 'g'},
|
|
||||||
{ .name = "freq", .has_arg = required_argument, .flag = NULL, .val = 'f'},
|
|
||||||
- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'},
|
|
||||||
{ .name = "related", .has_arg = no_argument, .flag = NULL, .val='r'},
|
|
||||||
{ },
|
|
||||||
};
|
|
||||||
@@ -80,7 +57,6 @@ const struct freq_units def_units[] = {
|
|
||||||
static void print_unknown_arg(void)
|
|
||||||
{
|
|
||||||
printf(_("invalid or unknown argument\n"));
|
|
||||||
- freq_set_help();
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long string_to_frequency(const char *str)
|
|
||||||
@@ -231,14 +207,11 @@ int cmd_freq_set(int argc, char **argv)
|
|
||||||
|
|
||||||
/* parameter parsing */
|
|
||||||
do {
|
|
||||||
- ret = getopt_long(argc, argv, "d:u:g:f:hr", set_opts, NULL);
|
|
||||||
+ ret = getopt_long(argc, argv, "d:u:g:f:r", set_opts, NULL);
|
|
||||||
switch (ret) {
|
|
||||||
case '?':
|
|
||||||
print_unknown_arg();
|
|
||||||
return -EINVAL;
|
|
||||||
- case 'h':
|
|
||||||
- freq_set_help();
|
|
||||||
- return 0;
|
|
||||||
case -1:
|
|
||||||
cont = 0;
|
|
||||||
break;
|
|
||||||
diff --git a/utils/cpuidle-info.c b/utils/cpuidle-info.c
|
|
||||||
index 70da357..b028267 100644
|
|
||||||
--- a/utils/cpuidle-info.c
|
|
||||||
+++ b/utils/cpuidle-info.c
|
|
||||||
@@ -139,30 +139,14 @@ static void proc_cpuidle_cpu_output(unsigned int cpu)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* --freq / -f */
|
|
||||||
-
|
|
||||||
-void idle_info_help(void)
|
|
||||||
-{
|
|
||||||
- printf(_ ("Usage: cpupower idleinfo [options]\n"));
|
|
||||||
- printf(_ ("Options:\n"));
|
|
||||||
- printf(_ (" -s, --silent Only show general C-state information\n"));
|
|
||||||
- printf(_ (" -o, --proc Prints out information like provided by the /proc/acpi/processor/*/power\n"
|
|
||||||
- " interface in older kernels\n"));
|
|
||||||
- printf(_ (" -h, --help Prints out this screen\n"));
|
|
||||||
-
|
|
||||||
- printf("\n");
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static struct option info_opts[] = {
|
|
||||||
{ .name = "silent", .has_arg = no_argument, .flag = NULL, .val = 's'},
|
|
||||||
{ .name = "proc", .has_arg = no_argument, .flag = NULL, .val = 'o'},
|
|
||||||
- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'},
|
|
||||||
{ },
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void cpuidle_exit(int fail)
|
|
||||||
{
|
|
||||||
- idle_info_help();
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -174,7 +158,7 @@ int cmd_idle_info(int argc, char **argv)
|
|
||||||
unsigned int cpu = 0;
|
|
||||||
|
|
||||||
do {
|
|
||||||
- ret = getopt_long(argc, argv, "hos", info_opts, NULL);
|
|
||||||
+ ret = getopt_long(argc, argv, "os", info_opts, NULL);
|
|
||||||
if (ret == -1)
|
|
||||||
break;
|
|
||||||
switch (ret) {
|
|
||||||
@@ -182,10 +166,6 @@ int cmd_idle_info(int argc, char **argv)
|
|
||||||
output_param = '?';
|
|
||||||
cont = 0;
|
|
||||||
break;
|
|
||||||
- case 'h':
|
|
||||||
- output_param = 'h';
|
|
||||||
- cont = 0;
|
|
||||||
- break;
|
|
||||||
case 's':
|
|
||||||
verbose = 0;
|
|
||||||
break;
|
|
||||||
@@ -211,8 +191,6 @@ int cmd_idle_info(int argc, char **argv)
|
|
||||||
case '?':
|
|
||||||
printf(_("invalid or unknown argument\n"));
|
|
||||||
cpuidle_exit(EXIT_FAILURE);
|
|
||||||
- case 'h':
|
|
||||||
- cpuidle_exit(EXIT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Default is: show output of CPU 0 only */
|
|
||||||
diff --git a/utils/cpupower-info.c b/utils/cpupower-info.c
|
|
||||||
index 85253cb..3f68632 100644
|
|
||||||
--- a/utils/cpupower-info.c
|
|
||||||
+++ b/utils/cpupower-info.c
|
|
||||||
@@ -16,31 +16,16 @@
|
|
||||||
#include "helpers/helpers.h"
|
|
||||||
#include "helpers/sysfs.h"
|
|
||||||
|
|
||||||
-void info_help(void)
|
|
||||||
-{
|
|
||||||
- printf(_("Usage: cpupower info [ -b ] [ -m ] [ -s ]\n"));
|
|
||||||
- printf(_("Options:\n"));
|
|
||||||
- printf(_(" -b, --perf-bias Gets CPU's power vs performance policy on some\n"
|
|
||||||
- " Intel models [0-15], see manpage for details\n"));
|
|
||||||
- printf(_(" -m, --sched-mc Gets the kernel's multi core scheduler policy.\n"));
|
|
||||||
- printf(_(" -s, --sched-smt Gets the kernel's thread sibling scheduler policy.\n"));
|
|
||||||
- printf(_(" -h, --help Prints out this screen\n"));
|
|
||||||
- printf(_("\nPassing no option will show all info, by default only on core 0\n"));
|
|
||||||
- printf("\n");
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static struct option set_opts[] = {
|
|
||||||
{ .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
|
|
||||||
{ .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
|
|
||||||
{ .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
|
|
||||||
- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'},
|
|
||||||
{ },
|
|
||||||
};
|
|
||||||
|
|
||||||
static void print_wrong_arg_exit(void)
|
|
||||||
{
|
|
||||||
printf(_("invalid or unknown argument\n"));
|
|
||||||
- info_help();
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -64,11 +49,8 @@ int cmd_info(int argc, char **argv)
|
|
||||||
textdomain(PACKAGE);
|
|
||||||
|
|
||||||
/* parameter parsing */
|
|
||||||
- while ((ret = getopt_long(argc, argv, "msbh", set_opts, NULL)) != -1) {
|
|
||||||
+ while ((ret = getopt_long(argc, argv, "msb", set_opts, NULL)) != -1) {
|
|
||||||
switch (ret) {
|
|
||||||
- case 'h':
|
|
||||||
- info_help();
|
|
||||||
- return 0;
|
|
||||||
case 'b':
|
|
||||||
if (params.perf_bias)
|
|
||||||
print_wrong_arg_exit();
|
|
||||||
diff --git a/utils/cpupower-set.c b/utils/cpupower-set.c
|
|
||||||
index bc1b391..dc4de37 100644
|
|
||||||
--- a/utils/cpupower-set.c
|
|
||||||
+++ b/utils/cpupower-set.c
|
|
||||||
@@ -17,30 +17,16 @@
|
|
||||||
#include "helpers/sysfs.h"
|
|
||||||
#include "helpers/bitmask.h"
|
|
||||||
|
|
||||||
-void set_help(void)
|
|
||||||
-{
|
|
||||||
- printf(_("Usage: cpupower set [ -b val ] [ -m val ] [ -s val ]\n"));
|
|
||||||
- printf(_("Options:\n"));
|
|
||||||
- printf(_(" -b, --perf-bias [VAL] Sets CPU's power vs performance policy on some\n"
|
|
||||||
- " Intel models [0-15], see manpage for details\n"));
|
|
||||||
- printf(_(" -m, --sched-mc [VAL] Sets the kernel's multi core scheduler policy.\n"));
|
|
||||||
- printf(_(" -s, --sched-smt [VAL] Sets the kernel's thread sibling scheduler policy.\n"));
|
|
||||||
- printf(_(" -h, --help Prints out this screen\n"));
|
|
||||||
- printf("\n");
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static struct option set_opts[] = {
|
|
||||||
{ .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
|
|
||||||
{ .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
|
|
||||||
{ .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
|
|
||||||
- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'},
|
|
||||||
{ },
|
|
||||||
};
|
|
||||||
|
|
||||||
static void print_wrong_arg_exit(void)
|
|
||||||
{
|
|
||||||
printf(_("invalid or unknown argument\n"));
|
|
||||||
- set_help();
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -66,12 +52,9 @@ int cmd_set(int argc, char **argv)
|
|
||||||
|
|
||||||
params.params = 0;
|
|
||||||
/* parameter parsing */
|
|
||||||
- while ((ret = getopt_long(argc, argv, "m:s:b:h",
|
|
||||||
+ while ((ret = getopt_long(argc, argv, "m:s:b:",
|
|
||||||
set_opts, NULL)) != -1) {
|
|
||||||
switch (ret) {
|
|
||||||
- case 'h':
|
|
||||||
- set_help();
|
|
||||||
- return 0;
|
|
||||||
case 'b':
|
|
||||||
if (params.perf_bias)
|
|
||||||
print_wrong_arg_exit();
|
|
||||||
@@ -110,10 +93,8 @@ int cmd_set(int argc, char **argv)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
- if (!params.params) {
|
|
||||||
- set_help();
|
|
||||||
- return -EINVAL;
|
|
||||||
- }
|
|
||||||
+ if (!params.params)
|
|
||||||
+ print_wrong_arg_exit();
|
|
||||||
|
|
||||||
if (params.sched_mc) {
|
|
||||||
ret = sysfs_set_sched("mc", sched_mc);
|
|
||||||
diff --git a/utils/cpupower.c b/utils/cpupower.c
|
|
||||||
index 5844ae0..52bee59 100644
|
|
||||||
--- a/utils/cpupower.c
|
|
||||||
+++ b/utils/cpupower.c
|
|
||||||
@@ -11,6 +11,7 @@
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
+#include <errno.h>
|
|
||||||
|
|
||||||
#include "builtin.h"
|
|
||||||
#include "helpers/helpers.h"
|
|
||||||
@@ -19,13 +20,12 @@
|
|
||||||
struct cmd_struct {
|
|
||||||
const char *cmd;
|
|
||||||
int (*main)(int, const char **);
|
|
||||||
- void (*usage)(void);
|
|
||||||
int needs_root;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
|
||||||
|
|
||||||
-int cmd_help(int argc, const char **argv);
|
|
||||||
+static int cmd_help(int argc, const char **argv);
|
|
||||||
|
|
||||||
/* Global cpu_info object available for all binaries
|
|
||||||
* Info only retrieved from CPU 0
|
|
||||||
@@ -44,55 +44,66 @@ int be_verbose;
|
|
||||||
static void print_help(void);
|
|
||||||
|
|
||||||
static struct cmd_struct commands[] = {
|
|
||||||
- { "frequency-info", cmd_freq_info, freq_info_help, 0 },
|
|
||||||
- { "frequency-set", cmd_freq_set, freq_set_help, 1 },
|
|
||||||
- { "idle-info", cmd_idle_info, idle_info_help, 0 },
|
|
||||||
- { "set", cmd_set, set_help, 1 },
|
|
||||||
- { "info", cmd_info, info_help, 0 },
|
|
||||||
- { "monitor", cmd_monitor, monitor_help, 0 },
|
|
||||||
- { "help", cmd_help, print_help, 0 },
|
|
||||||
- /* { "bench", cmd_bench, NULL, 1 }, */
|
|
||||||
+ { "frequency-info", cmd_freq_info, 0 },
|
|
||||||
+ { "frequency-set", cmd_freq_set, 1 },
|
|
||||||
+ { "idle-info", cmd_idle_info, 0 },
|
|
||||||
+ { "set", cmd_set, 1 },
|
|
||||||
+ { "info", cmd_info, 0 },
|
|
||||||
+ { "monitor", cmd_monitor, 0 },
|
|
||||||
+ { "help", cmd_help, 0 },
|
|
||||||
+ /* { "bench", cmd_bench, 1 }, */
|
|
||||||
};
|
|
||||||
|
|
||||||
-int cmd_help(int argc, const char **argv)
|
|
||||||
-{
|
|
||||||
- unsigned int i;
|
|
||||||
-
|
|
||||||
- if (argc > 1) {
|
|
||||||
- for (i = 0; i < ARRAY_SIZE(commands); i++) {
|
|
||||||
- struct cmd_struct *p = commands + i;
|
|
||||||
- if (strcmp(p->cmd, argv[1]))
|
|
||||||
- continue;
|
|
||||||
- if (p->usage) {
|
|
||||||
- p->usage();
|
|
||||||
- return EXIT_SUCCESS;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- print_help();
|
|
||||||
- if (argc == 1)
|
|
||||||
- return EXIT_SUCCESS; /* cpupower help */
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void print_help(void)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
- printf(_("cpupower [ -d ][ -c cpulist ] subcommand [ARGS]\n"));
|
|
||||||
- printf(_(" -d, --debug May increase output (stderr) on some subcommands\n"));
|
|
||||||
+ printf(_("Usage:\tcpupower [-d|--debug] [-c|--cpu cpulist ] <command> [<args>]\n"));
|
|
||||||
#else
|
|
||||||
- printf(_("cpupower [ -c cpulist ] subcommand [ARGS]\n"));
|
|
||||||
+ printf(_("Usage:\tcpupower [-c|--cpu cpulist ] <command> [<args>]\n"));
|
|
||||||
#endif
|
|
||||||
- printf(_("cpupower --version\n"));
|
|
||||||
- printf(_("Supported subcommands are:\n"));
|
|
||||||
+ printf(_("Supported commands are:\n"));
|
|
||||||
for (i = 0; i < ARRAY_SIZE(commands); i++)
|
|
||||||
printf("\t%s\n", commands[i].cmd);
|
|
||||||
- printf(_("\nSome subcommands can make use of the -c cpulist option.\n"));
|
|
||||||
- printf(_("Look at the general cpupower manpage how to use it\n"));
|
|
||||||
- printf(_("and read up the subcommand's manpage whether it is supported.\n"));
|
|
||||||
- printf(_("\nUse cpupower help subcommand for getting help for above subcommands.\n"));
|
|
||||||
+ printf(_("\nNot all commands can make use of the -c cpulist option.\n"));
|
|
||||||
+ printf(_("\nUse 'cpupower help <command>' for getting help for above commands.\n"));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int print_man_page(const char *subpage)
|
|
||||||
+{
|
|
||||||
+ int len;
|
|
||||||
+ char *page;
|
|
||||||
+
|
|
||||||
+ len = 10; /* enough for "cpupower-" */
|
|
||||||
+ if (subpage != NULL)
|
|
||||||
+ len += strlen(subpage);
|
|
||||||
+
|
|
||||||
+ page = malloc(len);
|
|
||||||
+ if (!page)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ sprintf(page, "cpupower");
|
|
||||||
+ if ((subpage != NULL) && strcmp(subpage, "help")) {
|
|
||||||
+ strcat(page, "-");
|
|
||||||
+ strcat(page, subpage);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ execlp("man", "man", page, NULL);
|
|
||||||
+
|
|
||||||
+ /* should not be reached */
|
|
||||||
+ return -EINVAL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int cmd_help(int argc, const char **argv)
|
|
||||||
+{
|
|
||||||
+ if (argc > 1) {
|
|
||||||
+ print_man_page(argv[1]); /* exits within execlp() */
|
|
||||||
+ return EXIT_FAILURE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ print_help();
|
|
||||||
+ return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_version(void)
|
|
||||||
diff --git a/utils/idle_monitor/cpupower-monitor.c b/utils/idle_monitor/cpupower-monitor.c
|
|
||||||
index 6cb8d9e..0d6571e 100644
|
|
||||||
--- a/utils/idle_monitor/cpupower-monitor.c
|
|
||||||
+++ b/utils/idle_monitor/cpupower-monitor.c
|
|
||||||
@@ -43,6 +43,12 @@ static struct cpupower_topology cpu_top;
|
|
||||||
/* ToDo: Document this in the manpage */
|
|
||||||
static char range_abbr[RANGE_MAX] = { 'T', 'C', 'P', 'M', };
|
|
||||||
|
|
||||||
+static void print_wrong_arg_exit(void)
|
|
||||||
+{
|
|
||||||
+ printf(_("invalid or unknown argument\n"));
|
|
||||||
+ exit(EXIT_FAILURE);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
long long timespec_diff_us(struct timespec start, struct timespec end)
|
|
||||||
{
|
|
||||||
struct timespec temp;
|
|
||||||
@@ -56,21 +62,6 @@ long long timespec_diff_us(struct timespec start, struct timespec end)
|
|
||||||
return (temp.tv_sec * 1000000) + (temp.tv_nsec / 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
-void monitor_help(void)
|
|
||||||
-{
|
|
||||||
- printf(_("cpupower monitor: [-m <mon1>,[<mon2>],.. ] command\n"));
|
|
||||||
- printf(_("cpupower monitor: [-m <mon1>,[<mon2>],.. ] [ -i interval_sec ]\n"));
|
|
||||||
- printf(_("cpupower monitor: -l\n"));
|
|
||||||
- printf(_("\t command: pass an arbitrary command to measure specific workload\n"));
|
|
||||||
- printf(_("\t -i: time intervall to measure for in seconds (default 1)\n"));
|
|
||||||
- printf(_("\t -l: list available CPU sleep monitors (for use with -m)\n"));
|
|
||||||
- printf(_("\t -m: show specific CPU sleep monitors only (in same order)\n"));
|
|
||||||
- printf(_("\t -h: print this help\n"));
|
|
||||||
- printf("\n");
|
|
||||||
- printf(_("only one of: -l, -m are allowed\nIf none of them is passed,"));
|
|
||||||
- printf(_(" all supported monitors are shown\n"));
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void print_n_spaces(int n)
|
|
||||||
{
|
|
||||||
int x;
|
|
||||||
@@ -246,7 +237,6 @@ static void parse_monitor_param(char *param)
|
|
||||||
if (hits == 0) {
|
|
||||||
printf(_("No matching monitor found in %s, "
|
|
||||||
"try -l option\n"), param);
|
|
||||||
- monitor_help();
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
/* Override detected/registerd monitors array with requested one */
|
|
||||||
@@ -343,37 +333,27 @@ static void cmdline(int argc, char *argv[])
|
|
||||||
int opt;
|
|
||||||
progname = basename(argv[0]);
|
|
||||||
|
|
||||||
- while ((opt = getopt(argc, argv, "+hli:m:")) != -1) {
|
|
||||||
+ while ((opt = getopt(argc, argv, "+li:m:")) != -1) {
|
|
||||||
switch (opt) {
|
|
||||||
- case 'h':
|
|
||||||
- monitor_help();
|
|
||||||
- exit(EXIT_SUCCESS);
|
|
||||||
case 'l':
|
|
||||||
- if (mode) {
|
|
||||||
- monitor_help();
|
|
||||||
- exit(EXIT_FAILURE);
|
|
||||||
- }
|
|
||||||
+ if (mode)
|
|
||||||
+ print_wrong_arg_exit();
|
|
||||||
mode = list;
|
|
||||||
break;
|
|
||||||
case 'i':
|
|
||||||
/* only allow -i with -m or no option */
|
|
||||||
- if (mode && mode != show) {
|
|
||||||
- monitor_help();
|
|
||||||
- exit(EXIT_FAILURE);
|
|
||||||
- }
|
|
||||||
+ if (mode && mode != show)
|
|
||||||
+ print_wrong_arg_exit();
|
|
||||||
interval = atoi(optarg);
|
|
||||||
break;
|
|
||||||
case 'm':
|
|
||||||
- if (mode) {
|
|
||||||
- monitor_help();
|
|
||||||
- exit(EXIT_FAILURE);
|
|
||||||
- }
|
|
||||||
+ if (mode)
|
|
||||||
+ print_wrong_arg_exit();
|
|
||||||
mode = show;
|
|
||||||
show_monitors_param = optarg;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
- monitor_help();
|
|
||||||
- exit(EXIT_FAILURE);
|
|
||||||
+ print_wrong_arg_exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!mode)
|
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 15 10:58:25 UTC 2011 - trenn@suse.de
|
||||||
|
|
||||||
|
- Update to 3.2-rc5 version (not much changed, includes the
|
||||||
|
use-manpage-on-help patch -> removed it)
|
||||||
|
- Change licence from GPL-2.0+ to GPL-2.0 to fit the kernel
|
||||||
|
licence where sources are coming from
|
||||||
|
- Provide a tiny script to quickly export and tar sources from
|
||||||
|
the git repo
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Dec 15 10:38:07 UTC 2011 - coolo@suse.com
|
Thu Dec 15 10:38:07 UTC 2011 - coolo@suse.com
|
||||||
|
|
||||||
|
@ -16,23 +16,24 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Name: cpupower
|
Name: cpupower
|
||||||
Url: http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html
|
Url: http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html
|
||||||
# Use this as version when things are in mainline kernel
|
# Use this as version when things are in mainline kernel
|
||||||
%define version %(rpm -q --qf '%{VERSION}' kernel-source)
|
%define version %(rpm -q --qf '%{VERSION}' kernel-source)
|
||||||
Version: 2.6.39
|
Version: 3.2.rc5
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Tools to determine and set CPU Power related Settings
|
Summary: Tools to determine and set CPU Power related Settings
|
||||||
License: GPL-2.0+
|
License: GPL-2.0
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Patch0: cpupower-use-manpage-on-help-command.patch
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: gettext-tools
|
BuildRequires: gettext-tools
|
||||||
BuildRequires: pciutils
|
BuildRequires: pciutils
|
||||||
BuildRequires: pciutils-devel
|
BuildRequires: pciutils-devel
|
||||||
Obsoletes: cpufrequtils
|
Obsoletes: cpufrequtils < %version
|
||||||
Provides: cpufrequtils
|
Provides: cpufrequtils = %version
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This tool is to make access to the Linux kernel's processor power subsystems
|
This tool is to make access to the Linux kernel's processor power subsystems
|
||||||
@ -58,8 +59,8 @@ Include files and C-libraries for C/C++ development
|
|||||||
%package bench
|
%package bench
|
||||||
Summary: CPU frequency micro benchmark
|
Summary: CPU frequency micro benchmark
|
||||||
Group: System/Benchmark
|
Group: System/Benchmark
|
||||||
Obsoletes: cpufrequtils-bench
|
Obsoletes: cpufrequtils-bench < %version
|
||||||
Provides: cpufrequtils-bench
|
Provides: cpufrequtils-bench = %version
|
||||||
|
|
||||||
%description bench
|
%description bench
|
||||||
Helps to test the condition of a given kernel cpufreq
|
Helps to test the condition of a given kernel cpufreq
|
||||||
@ -70,7 +71,6 @@ powersave module.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# This package failed when testing with -Wl,-as-needed being default.
|
# This package failed when testing with -Wl,-as-needed being default.
|
||||||
|
49
cpupower_export_tarball_from_git.sh
Normal file
49
cpupower_export_tarball_from_git.sh
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Author: Thomas Renninger <trenn@suse.de>
|
||||||
|
# This code is covered and distributed under
|
||||||
|
# the General Public Licence v2
|
||||||
|
|
||||||
|
function usage(){
|
||||||
|
echo "$(basename $0) [ git_tag ]"
|
||||||
|
echo
|
||||||
|
echo "git_tag must be a valid kernel git tag, for example v3.1"
|
||||||
|
echo " if git_tag is not passed HEAD will be used which"
|
||||||
|
echo " may produce a package incompatible tarball name"
|
||||||
|
echo " BEST ALWAYS PASS AN EXISTING TAG"
|
||||||
|
echo " cpupower got introduced in 3.1-rc1"
|
||||||
|
echo
|
||||||
|
echo "export GIT_DIR= environment variable if the git repo is not the current directory"
|
||||||
|
echo "For example: GIT_DIR=/path_to_git_repo/.git"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -eq 1 ];then
|
||||||
|
if [ "$1" = "-h" ] || [ "$1" == "--help" ];then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
GIT_TAG="$1"
|
||||||
|
echo "Exporting cpupower from kernel version $GIT_TAG"
|
||||||
|
# convert - to . as package versions do not allow -
|
||||||
|
VERSION="${GIT_TAG/-/.}"
|
||||||
|
# remove leading v
|
||||||
|
VERSION="-${VERSION#v}"
|
||||||
|
else
|
||||||
|
GIT_TAG="HEAD"
|
||||||
|
VERSION=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Tried to do this with one git archive command, but
|
||||||
|
# --remote= param seem not to be configured for kernel.org gits
|
||||||
|
|
||||||
|
# set -x
|
||||||
|
DIR=`mktemp -d`
|
||||||
|
pushd "$DIR"
|
||||||
|
git archive --format=tar $GIT_TAG tools/power/cpupower |tar -x
|
||||||
|
mv tools/power/cpupower cpupower${VERSION}
|
||||||
|
tar -cvjf cpupower${VERSION}.tar.bz2 cpupower${VERSION}
|
||||||
|
popd
|
||||||
|
mv "$DIR/cpupower${VERSION}".tar.bz2 .
|
||||||
|
rm -rf "$DIR"
|
||||||
|
# set +x
|
||||||
|
echo cpupower${VERSION}.tar.bz2
|
Loading…
Reference in New Issue
Block a user