|| ||Roland McGrath <firstname.lastname@example.org>|
|| ||Linus Torvalds <email@example.com>,
Andrew Morton <firstname.lastname@example.org>|
|| ||[PATCH 0/2] utrace|
|| ||Tue, 26 Aug 2008 15:01:02 -0700 (PDT)|
utrace is a new kernel-side API for kernel modules, intended to make it
tractable to work on novel ways to trace and debug user-mode tasks.
A previous utrace prototype was in all Fedora kernels since Fedora Core 6.
Some substantial implementation and API details in the current code are
different from those past versions. Please look freshly at these patches.
The current utrace code here is now included in Fedora Rawhide kernels.
People interested in this code are on the email@example.com mailing list.
(See https://www.redhat.com/mailman/listinfo/utrace-devel for list info.)
There is a wiki for this work at http://sourceware.org/systemtap/wiki/utrace
(with not much content, feel free to add some). Current copies of these
patches are at kept at http://people.redhat.com/roland/utrace/ as well as
in the GIT tree shown below.
This code cannot be enabled without CONFIG_HAVE_ARCH_TRACEHOOK and the arch
details it indicates. In Linus's tree as of v2.6.27-rc4, only powerpc and
sparc64 have that support. The x86 support is available by merging in the
tip/x86/tracehook branch. For working on other arch support, there are some
more details at http://sourceware.org/systemtap/wiki/utrace/arch/HowTo and
these are mentioned in the comments in arch/Kconfig too (in v2.6.27-rc4).
The first patch adds the utrace kernel API (if CONFIG_UTRACE=y is set).
There is no change at all without the config option, and with it there is
no effect on anything at all until a kernel module using the utrace API is
loaded. There is detailed documentation on the API in DocBook form.
The second patch adds the CONFIG_UTRACE_PTRACE option. When set, this
makes ptrace use the utrace API as much as is necessary so that using both
ptrace and utrace to debug the same threads at the same time won't become
confused. The ptrace changes are somewhat kludgey. They're intended to be
the simplest, non-regressing thing that suffices to enable hacking on new
utrace modules while also doing normal ptrace-based debugging. The ptrace
implementation can still use many more cleanups later on.
The following changes since commit 1941246dd98089dd637f44d3bd4f6cc1c61aa9e4:
Linus Torvalds (1):
Merge branch 'for-linus' of git://git.kernel.org/.../tiwai/sound-2.6
are available in the git repository at:
Roland McGrath (2):
utrace: ptrace cooperation
Documentation/DocBook/Makefile | 2 +-
Documentation/DocBook/utrace.tmpl | 566 +++++++++
fs/proc/array.c | 3 +
include/linux/ptrace.h | 21 +
include/linux/sched.h | 6 +
include/linux/tracehook.h | 65 +-
include/linux/utrace.h | 711 +++++++++++
init/Kconfig | 27 +
kernel/Makefile | 1 +
kernel/ptrace.c | 604 +++++++++-
kernel/signal.c | 14 +-
kernel/utrace.c | 2511 +++++++++++++++++++++++++++++++++++++
12 files changed, 4523 insertions(+), 8 deletions(-)
create mode 100644 Documentation/DocBook/utrace.tmpl
create mode 100644 include/linux/utrace.h
create mode 100644 kernel/utrace.c