[PATCH RFC v3 0/6] Introduce extended syscall error reporting

From: Alexander Shishkin
Date: Fri Sep 11 2015 - 12:00:22 EST


Hi Ingo, Peter and everybody,

This is another stab at the error reporting problem. I've been sitting
on this code for a couple of weeks now for no good reason, so I
figured I'd just put it out there and see where we go next.

This time around, the error reporting itself is a separate
"infrastructure", which is mostly a header file infested with macros
and some code to set it all up and deliver to userspace. The latter is
now done with a prctl() like Ingo suggested. This is the first
patch. Then, it gets integrated into perf core and one example error
return is annotated with a message. The rest of the patchset adds
support to perf tooling, which includes its own JSON parser (I wasn't
aware that Andi was bringing one in with one of his pull requests at
the moment of writing it and I still like it better not only because
of the NIH symptoms) and extends perf_evsel__open_strerror() to fetch
these error messages from the kernel. I didn't include all the
instrumentation that I did in the previous versions of the patchset to
keep the noise level down.

Alexander Shishkin (6):
exterr: Introduce extended syscall error reporting
perf: Use extended syscall error reporting
perf/x86: Annotate a BTS error with extended error reporting
perf tools: Add a simple JSON parser
perf tools: Add userspace counterpart for extended error reporting
perf tools: Use extended syscall error reporting

arch/x86/kernel/cpu/perf_event.c | 5 +-
include/linux/exterr.h | 99 ++++++++++++++++
include/linux/perf_event.h | 14 +++
include/linux/sched.h | 1 +
include/uapi/linux/prctl.h | 5 +
kernel/events/core.c | 17 ++-
kernel/sys.c | 6 +
lib/Makefile | 2 +
lib/exterr.c | 157 ++++++++++++++++++++++++
tools/include/tools/json.h | 40 +++++++
tools/lib/util/json.c | 250 +++++++++++++++++++++++++++++++++++++++
tools/perf/util/Build | 6 +
tools/perf/util/evsel.c | 12 +-
tools/perf/util/exterr.c | 79 +++++++++++++
tools/perf/util/exterr.h | 21 ++++
15 files changed, 711 insertions(+), 3 deletions(-)
create mode 100644 include/linux/exterr.h
create mode 100644 lib/exterr.c
create mode 100644 tools/include/tools/json.h
create mode 100644 tools/lib/util/json.c
create mode 100644 tools/perf/util/exterr.c
create mode 100644 tools/perf/util/exterr.h

--
2.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/