• R
    tracehook: add linux/tracehook.h · 88ac2921
    Roland McGrath 提交于
    This patch series introduces the "tracehook" interface layer of inlines in
    <linux/tracehook.h>.  There are more details in the log entry for patch
    01/23 and in the header file comments inside that patch.  Most of these
    changes move code around with little or no change, and they should not
    break anything or change any behavior.
    
    This sets a new standard for uniform arch support to enable clean
    arch-independent implementations of new debugging and tracing stuff,
    denoted by CONFIG_HAVE_ARCH_TRACEHOOK.  Patch 20/23 adds that symbol to
    arch/Kconfig, with comments listing everything an arch has to do before
    setting "select HAVE_ARCH_TRACEHOOK".  These are elaborted a bit at:
    
    	http://sourceware.org/systemtap/wiki/utrace/arch/HowTo
    
    The new inlines that arch code must define or call have detailed kerneldoc
    comments in the generic header files that say what is required.
    
    No arch is obligated to do any work, and no arch's build should be broken
    by these changes.  There are several steps that each arch should take so
    it can set HAVE_ARCH_TRACEHOOK.  Most of these are simple.  Providing this
    support will let new things people add for doing debugging and tracing of
    user-level threads "just work" for your arch in the future.  For an arch
    that does not provide HAVE_ARCH_TRACEHOOK, some new options for such
    features will not be available for config.
    
    I have done some arch work and will submit this to the arch maintainers
    after the generic tracehook series settles in.  For now, that work is
    available in my GIT repositories, and in patch and mbox-of-patches form at
    http://people.redhat.com/roland/utrace/2.6-current/
    
    This paves the way for my "utrace" work, to be submitted later.  But it is
    not innately tied to that.  I hope that the tracehook series can go in
    soon regardless of what eventually does or doesn't go on top of it.  For
    anyone implementing any kind of new tracing/debugging plan, or just
    understanding all the context of the existing ptrace implementation,
    having tracehook.h makes things much easier to find and understand.
    
    This patch:
    
    This adds the new kernel-internal header file <linux/tracehook.h>.  This
    is not yet used at all.  The comments in the header introduce what the
    following series of patches is about.
    
    The aim is to formalize and consolidate all the places that the core
    kernel code and the arch code now ties into the ptrace implementation.
    
    These patches mostly don't cause any functional change.  They just move
    the details of ptrace logic out of core code into tracehook.h inlines,
    where they are mostly compiled away to the same as before.  All that
    changes is that everything is thoroughly documented and any future
    reworking of ptrace, or addition of something new, would not have to touch
    core code all over, just change the tracehook.h inlines.
    
    The new linux/ptrace.h inlines are used by the following patches in the
    new tracehook_*() inlines.  Using these helpers for the ptrace event stops
    makes it simple to change or disable the old ptrace implementation of
    these stops conditionally later.
    Signed-off-by: NRoland McGrath <roland@redhat.com>
    Cc: Oleg Nesterov <oleg@tv-sign.ru>
    Reviewed-by: NIngo Molnar <mingo@elte.hu>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    88ac2921
ptrace.h 10.1 KB