mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
tools/power turbostat: verify arguments to params --show and --hide
$ sudo turbostat --quiet --show junk turbostat: Counter 'junk' can not be added. Previously, invalid arguments to --show and --hide were silently ignored Acked-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
5d939fbdd4
commit
d44c40e4e3
@ -2310,6 +2310,8 @@ char *deferred_add_names[MAX_DEFERRED];
|
|||||||
char *deferred_skip_names[MAX_DEFERRED];
|
char *deferred_skip_names[MAX_DEFERRED];
|
||||||
int deferred_add_index;
|
int deferred_add_index;
|
||||||
int deferred_skip_index;
|
int deferred_skip_index;
|
||||||
|
unsigned int deferred_add_consumed;
|
||||||
|
unsigned int deferred_skip_consumed;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HIDE_LIST - hide this list of counters, show the rest [default]
|
* HIDE_LIST - hide this list of counters, show the rest [default]
|
||||||
@ -10512,8 +10514,10 @@ int is_deferred_add(char *name)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < deferred_add_index; ++i)
|
for (i = 0; i < deferred_add_index; ++i)
|
||||||
if (!strcmp(name, deferred_add_names[i]))
|
if (!strcmp(name, deferred_add_names[i])) {
|
||||||
|
deferred_add_consumed |= (1 << i);
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10522,11 +10526,34 @@ int is_deferred_skip(char *name)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < deferred_skip_index; ++i)
|
for (i = 0; i < deferred_skip_index; ++i)
|
||||||
if (!strcmp(name, deferred_skip_names[i]))
|
if (!strcmp(name, deferred_skip_names[i])) {
|
||||||
|
deferred_skip_consumed |= (1 << i);
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void verify_deferred_consumed(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int fail = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < deferred_add_index; ++i) {
|
||||||
|
if (!(deferred_add_consumed & (1 << i))) {
|
||||||
|
warnx("Counter '%s' can not be added.", deferred_add_names[i]);
|
||||||
|
fail++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i = 0; i < deferred_skip_index; ++i) {
|
||||||
|
if (!(deferred_skip_consumed & (1 << i))) {
|
||||||
|
warnx("Counter '%s' can not be skipped.", deferred_skip_names[i]);
|
||||||
|
fail++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (fail)
|
||||||
|
exit(-EINVAL);
|
||||||
|
}
|
||||||
|
|
||||||
void probe_cpuidle_residency(void)
|
void probe_cpuidle_residency(void)
|
||||||
{
|
{
|
||||||
char path[64];
|
char path[64];
|
||||||
@ -10885,6 +10912,8 @@ skip_cgroup_setting:
|
|||||||
probe_cpuidle_residency();
|
probe_cpuidle_residency();
|
||||||
probe_cpuidle_counts();
|
probe_cpuidle_counts();
|
||||||
|
|
||||||
|
verify_deferred_consumed();
|
||||||
|
|
||||||
if (!getuid())
|
if (!getuid())
|
||||||
set_rlimit();
|
set_rlimit();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user