There were some combinations of these switches that are not so
appropriate IMHO. Since there are implicit priorities between
them, they worked well anyway, but end up opening useless
duplicated events. For example, 'perf stat -t <pid> -a' will
open multiple events for the thread instead of one.
Add explicit checks and warn user in check_target_maps().
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/util/usage.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/tools/perf/util/usage.c b/tools/perf/util/usage.c
index d235013600e5..08423c037a7e 100644
--- a/tools/perf/util/usage.c
+++ b/tools/perf/util/usage.c
@@ -133,4 +133,17 @@ void check_target_maps(struct perf_maps_opts *maps)
maps->uid_str = NULL;
}
+ /* UID and CPU are mutually exclusive */
+ if (maps->uid_str && maps->cpu_list) {
+ ui__warning("UID switch overriding CPU\n");
+ sleep(1);
+ maps->cpu_list = NULL;
+ }
+
+ /* PID/UID and SYSTEM are mutually exclusive */
+ if ((maps->target_tid > 0 || maps->uid_str) && maps->system_wide) {
+ ui__warning("PID/TID/UID switch overriding CPU\n");
+ sleep(1);
+ maps->system_wide = false;
+ }
}
--
1.7.9