On 10.09.12 10:40:16, David Ahern wrote:--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -294,6 +294,11 @@ try_again:
perf_evsel__name(pos));
rc = -err;
goto out;
+ } else if ((err == ENOTSUP) && (attr->precise_ip)) {
It is EOPNOTSUPP, did you test this?
+ ui__error("\'precise\' request not supported. "
+ "Try removing 'p' modifier\n");
I would better print "... request may not be supported.", since you
don't know for sure if this is the real cause.
+ rc = -err;
+ goto out;
}
printf("\n");
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 0513aaa..0d3653b 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -975,6 +975,10 @@ try_again:
ui__error("Too many events are opened.\n"
"Try again after reducing the number of events\n");
goto out_err;
+ } else if ((err == ENOTSUP) && (attr->precise_ip)) {
+ ui__error("\'precise\' request not supported. "
+ "Try removing 'p' modifier\n");
Same here.
+ goto out_err;
To avoid adding more duplicate code, maybe we should start to unify
the code by implementing this in a shared helper function.