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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to