Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on May 14, 2010
  1. Steven Rostedt

    tracing: Let tracepoints have data passed to tracepoint callbacks

    Steven Rostedt authored rostedt committed
    This patch adds data to be passed to tracepoint callbacks.
    The created functions from DECLARE_TRACE() now need a mandatory data
    parameter. For example:
    DECLARE_TRACE(mytracepoint, int value, value)
    Will create the register function:
    int register_trace_mytracepoint((void(*)(void *data, int value))probe,
                                    void *data);
    As the first argument, all callbacks (probes) must take a (void *data)
    parameter. So a callback for the above tracepoint will look like:
    void myprobe(void *data, int value)
    The callback may choose to ignore the data parameter.
    This change allows callbacks to register a private data pointer along
    with the function probe.
    	void mycallback(void *data, int value);
    	register_trace_mytracepoint(mycallback, mydata);
    Then the mycallback() will receive the "mydata" as the first parameter
    before the args.
    A more detailed example:
      DECLARE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));
      /* In the C file */
      DEFINE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));
      /* In a file registering this tracepoint */
      int my_callback(void *data, int status)
    	struct my_struct my_data = data;
    	my_data = kmalloc(sizeof(*my_data), GFP_KERNEL);
    	register_trace_mytracepoint(my_callback, my_data);
    The same callback can also be registered to the same tracepoint as long
    as the data registered is different. Note, the data must also be used
    to unregister the callback:
    	unregister_trace_mytracepoint(my_callback, my_data);
    Because of the data parameter, tracepoints declared this way can not have
    no args. That is:
      DECLARE_TRACE(mytracepoint, TP_PROTO(void), TP_ARGS());
    will cause an error.
    If no arguments are needed, a new macro can be used instead:
    Since there are no arguments, the proto and args fields are left out.
    This is part of a series to make the tracepoint footprint smaller:
       text	   data	    bss	    dec	    hex	filename
    4913961	1088356	 861512	6863829	 68bbd5	vmlinux.orig
    4914025	1088868	 861512	6864405	 68be15	vmlinux.class
    4918492	1084612	 861512	6864616	 68bee8	vmlinux.tracepoint
    Again, this patch also increases the size of the kernel, but
    lays the ground work for decreasing it.
     v5: Fixed net/core/drop_monitor.c to handle these updates.
     v4: Moved the DECLARE_TRACE() DECLARE_TRACE_NOARGS out of the
         #ifdef CONFIG_TRACE_POINTS, since the two are the same in both
         cases. The __DECLARE_TRACE() is what changes.
         Thanks to Frederic Weisbecker for pointing this out.
     v3: Made all register_* functions require data to be passed and
         all callbacks to take a void * parameter as its first argument.
         This makes the calling functions comply with C standards.
         Also added more comments to the modifications of DECLARE_TRACE().
     v2: Made the DECLARE_TRACE() have the ability to pass arguments
         and added a new DECLARE_TRACE_NOARGS() for tracepoints that
         do not need any arguments.
    Acked-by: Mathieu Desnoyers <>
    Acked-by: Masami Hiramatsu <>
    Acked-by: Frederic Weisbecker <>
    Cc: Neil Horman <>
    Cc: David S. Miller <>
    Signed-off-by: Steven Rostedt <>
Commits on Mar 30, 2010
  1. include cleanup: Update gfp.h and slab.h includes to prepare for brea…

    Tejun Heo authored
    …king implicit slab.h inclusion from percpu.h
    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files.  percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.
    percpu.h -> slab.h dependency is about to be removed.  Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability.  As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.
    The script does the followings.
    * Scan files for gfp and slab usages and update includes such that
      only the necessary includes are there.  ie. if only gfp is used,
      gfp.h, if slab is used, slab.h.
    * When the script inserts a new include, it looks at the include
      blocks and try to put the new include such that its order conforms
      to its surrounding.  It's put in the include block which contains
      core kernel includes, in the same order that the rest are ordered -
      alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
      doesn't seem to be any matching order.
    * If the script can't find a place to put a new include (mostly
      because the file doesn't have fitting include block), it prints out
      an error message indicating which .h file needs to be added to the
    The conversion was done in the following steps.
    1. The initial automatic conversion of all .c files updated slightly
       over 4000 files, deleting around 700 includes and adding ~480 gfp.h
       and ~3000 slab.h inclusions.  The script emitted errors for ~400
    2. Each error was manually checked.  Some didn't need the inclusion,
       some needed manual addition while adding it to implementation .h or
       embedding .c file was more appropriate for others.  This step added
       inclusions to around 150 files.
    3. The script was run again and the output was compared to the edits
       from #2 to make sure no file was left behind.
    4. Several build tests were done and a couple of problems were fixed.
       e.g. lib/decompress_*.c used malloc/free() wrappers around slab
       APIs requiring slab.h to be added manually.
    5. The script was run on all .h files but without automatically
       editing them as sprinkling gfp.h and slab.h inclusions around .h
       files could easily lead to inclusion dependency hell.  Most gfp.h
       inclusion directives were ignored as stuff from gfp.h was usually
       wildly available and often used in preprocessor macros.  Each
       slab.h inclusion directive was examined and added manually as
    6. percpu.h was updated not to include slab.h.
    7. Build test were done on the following configurations and failures
       were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
       distributed build env didn't work with gcov compiles) and a few
       more options had to be turned off depending on archs to make things
       build (like ipr on powerpc/64 which failed due to missing writeq).
       * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
       * powerpc and powerpc64 SMP allmodconfig
       * sparc and sparc64 SMP allmodconfig
       * ia64 SMP allmodconfig
       * s390 SMP allmodconfig
       * alpha SMP allmodconfig
       * um on x86_64 SMP allmodconfig
    8. percpu.h modifications were reverted so that it could be applied as
       a separate patch and serve as bisection point.
    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.
    Signed-off-by: Tejun Heo <>
    Guess-its-ok-by: Christoph Lameter <>
    Cc: Ingo Molnar <>
    Cc: Lee Schermerhorn <>
Commits on Mar 9, 2010
  1. Merge commit 'v2.6.34-rc1' into perf/urgent

    Ingo Molnar authored
    Merge reason: Pick up -rc1 and resolve the conflict as well.
    Signed-off-by: Ingo Molnar <>
Commits on Mar 8, 2010
  1. Emese Revfy Greg Kroah-Hartman

    Driver core: Constify struct sysfs_ops in struct kobj_type

    ephox-gcc-plugins authored gregkh committed
    Constify struct sysfs_ops.
    This is part of the ops structure constification
    effort started by Arjan van de Ven et al.
    Benefits of this constification:
     * prevents modification of data that is shared
       (referenced) by many other structure instances
       at runtime
     * detects/prevents accidental (but not intentional)
       modification attempts on archs that enforce
       read-only kernel data at runtime
     * potentially better optimized code as the compiler
       can assume that the const data cannot be changed
     * the compiler/linker move const data into .rodata
       and therefore exclude them from false sharing
    Signed-off-by: Emese Revfy <>
    Acked-by: David Teigland <>
    Acked-by: Matt Domsch <>
    Acked-by: Maciej Sosnowski <>
    Acked-by: Hans J. Koch <>
    Acked-by: Pekka Enberg <>
    Acked-by: Jens Axboe <>
    Acked-by: Stephen Hemminger <>
    Signed-off-by: Greg Kroah-Hartman <>
  2. Greg Kroah-Hartman

    kset-example: Spelling fixes.

    Radu Voicilas authored gregkh committed
    No change in functionality.
    Signed-off-by: Radu Voicilas <>
    Signed-off-by: Greg Kroah-Hartman <>
  3. Greg Kroah-Hartman

    kobject-example: Spelling fixes.

    Radu Voicilas authored gregkh committed
    No change in functionality.
    Signed-off-by: Radu Voicilas <>
    Signed-off-by: Greg Kroah-Hartman <>
Commits on Feb 27, 2010
  1. Frederic Weisbecker

    percpu: Add __percpu sparse annotations to hw_breakpoint

    Tejun Heo authored fweisbec committed
    Add __percpu sparse annotations to hw_breakpoint.
    These annotations are to make sparse consider percpu variables to be
    in a different address space and warn if accessed without going
    through percpu accessors.  This patch doesn't affect normal builds.
    In kernel/hw_breakpoint.c, per_cpu(nr_task_bp_pinned, cpu)'s will
    trigger spurious noderef related warnings from sparse.  Changing it to
    &per_cpu(nr_task_bp_pinned[0], cpu) will work around the problem but
    deemed to ugly by the maintainer.  Leave it alone until better
    solution can be found.
    Signed-off-by: Tejun Heo <>
    Cc: Stephen Rothwell <>
    Cc: K.Prasad <>
    LKML-Reference: <>
    Signed-off-by: Frederic Weisbecker <>
Commits on Dec 12, 2009
  1. Linus Torvalds

    Merge branch 'perf-fixes-for-linus' of git://…

    torvalds authored
    * 'perf-fixes-for-linus' of git:// (57 commits)
      x86, perf events: Check if we have APIC enabled
      perf_event: Fix variable initialization in other codepaths
      perf kmem: Fix unused argument build warning
      perf symbols: perf_header__read_build_ids() offset'n'size should be u64
      perf symbols: dsos__read_build_ids() should read both user and kernel buildids
      perf tools: Align long options which have no short forms
      perf kmem: Show usage if no option is specified
      sched: Mark sched_clock() as notrace
      perf sched: Add max delay time snapshot
      perf tools: Correct size given to memset
      perf_event: Fix perf_swevent_hrtimer() variable initialization
      perf sched: Fix for getting task's execution time
      tracing/kprobes: Fix field creation's bad error handling
      perf_event: Cleanup for cpu_clock_perf_event_update()
      perf_event: Allocate children's perf_event_ctxp at the right time
      perf_event: Clean up __perf_event_init_context()
      hw-breakpoints: Modify breakpoints without unregistering them
      perf probe: Update perf-probe document
      perf probe: Support --del option
      trace-kprobe: Support delete probe syntax
Commits on Dec 7, 2009
  1. Merge branch 'for-next' into for-linus

    Jiri Kosina authored
Commits on Dec 6, 2009
  1. Frederic Weisbecker

    hw-breakpoints: Use overflow handler instead of the event callback

    fweisbec authored
    struct perf_event::event callback was called when a breakpoint
    triggers. But this is a rather opaque callback, pretty
    tied-only to the breakpoint API and not really integrated into perf
    as it triggers even when we don't overflow.
    We prefer to use overflow_handler() as it fits into the perf events
    rules, being called only when we overflow.
    Reported-by: Peter Zijlstra <>
    Signed-off-by: Frederic Weisbecker <>
    Cc: Paul Mackerras <>
    Cc: Arnaldo Carvalho de Melo <>
    Cc: "K. Prasad" <>
Commits on Nov 27, 2009
  1. Frederic Weisbecker

    hw-breakpoints: Use struct perf_event_attr to define kernel breakpoints

    fweisbec authored Ingo Molnar committed
    Kernel breakpoints are created using functions in which we pass
    breakpoint parameters as individual variables: address, length
    and type.
    Although it fits well for x86, this just does not scale across
    architectures that may support this api later as these may have
    more or different needs. Pass in a perf_event_attr structure
    instead because it is meant to evolve as much as possible into
    a generic hardware breakpoint parameter structure.
    Reported-by: K.Prasad <>
    Signed-off-by: Frederic Weisbecker <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
Commits on Nov 26, 2009
  1. Frederic Weisbecker

    hw-breakpoints: Simplify error handling in breakpoint creation requests

    fweisbec authored Ingo Molnar committed
    This simplifies the error handling when we create a breakpoint.
    We don't need to check the NULL return value corner case anymore
    since we have improved perf_event_create_kernel_counter() to
    always return an error code in the failure case.
    Signed-off-by: Frederic Weisbecker <>
    Cc: Peter Zijlstra <>
    Cc: Arnaldo Carvalho de Melo <>
    Cc: Paul Mackerras <>
    Cc: Steven Rostedt <>
    Cc: Prasad <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
Commits on Nov 23, 2009
  1. hw-breakpoint: Attribute authorship of hw-breakpoint related files

    K.Prasad authored Ingo Molnar committed
    Attribute authorship to developers of hw-breakpoint related
    Signed-off-by: K.Prasad <>
    Cc: Alan Stern <>
    Cc: Frederic Weisbecker <>
    LKML-Reference: <>
    [ v2: moved it to latest -tip ]
    Signed-off-by: Ingo Molnar <>
Commits on Nov 10, 2009
  1. Frederic Weisbecker

    hw-breakpoints: Fix broken hw-breakpoint sample module

    fweisbec authored
    The hw-breakpoint sample module has been broken during the
    hw-breakpoint internals refactoring. Propagate the changes
    to it.
    Reported-by: "K. Prasad" <>
    Signed-off-by: Frederic Weisbecker <>
Commits on Nov 9, 2009
  1. Kconfig: Remove useless and sometimes wrong comments

    Michael Roth authored Jiri Kosina committed
    Additionally, some excessive newlines removed.
    Signed-off-by: Michael Roth <>
    Signed-off-by: Jiri Kosina <>
Commits on Oct 17, 2009
  1. Frederic Weisbecker

    Merge commit 'perf/core' into perf/hw-breakpoint

    fweisbec authored
    Merge reason: We need to be uptodate with the perf events development
    branch because we plan to rewrite the breakpoints API on top of
    perf events.
Commits on Oct 1, 2009
  1. Linus Torvalds

    const: constify remaining file_operations

    Alexey Dobriyan authored torvalds committed
    [ fix KVM]
    Signed-off-by: Alexey Dobriyan <>
    Acked-by: Mike Frysinger <>
    Signed-off-by: Andrew Morton <>
    Signed-off-by: Linus Torvalds <>
Commits on Sep 18, 2009
  1. tracing: Remove markers

    Christoph Hellwig authored Ingo Molnar committed
    Now that the last users of markers have migrated to the event
    tracer we can kill off the (now orphan) support code.
    Signed-off-by: Christoph Hellwig <>
    Acked-by: Mathieu Desnoyers <>
    Cc: Steven Rostedt <>
    Cc: Frederic Weisbecker <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
Commits on Sep 15, 2009
  1. Greg Kroah-Hartman

    debugfs: Change debuhgfs directory of trace-events-sample.h

    GeunSik Lim authored gregkh committed
    Default directory of debug filesystem for ftrace is /sys/kernel/debug/.
    Signed-off-by: GeunSik Lim <>
    Signed-off-by: Greg Kroah-Hartman <>
  2. Merge branch 'linus' into tracing/hw-breakpoints

    Ingo Molnar authored
    Semantic conflict fixed in:
    Signed-off-by: Ingo Molnar <>
Commits on Sep 7, 2009
  1. Merge branch 'tracing/core' into tracing/hw-breakpoints

    Ingo Molnar authored
    Merge reason: resolve the conflicts, plus adopt to the new
                  ring-buffer APIs.
    Signed-off-by: Ingo Molnar <>
Commits on Aug 17, 2009
  1. davem330

    sparc64: cheaper asm/uaccess.h inclusion

    Alexey Dobriyan authored davem330 committed
    sched.h inclusion is definitely not needed like in 32-bit version,
    remove it, fixup compilation.
    Signed-off-by: Alexey Dobriyan <>
    Signed-off-by: David S. Miller <>
Commits on Jul 13, 2009
  1. tracing/events: Move TRACE_SYSTEM outside of include guard

    Li Zefan authored Ingo Molnar committed
    If TRACE_INCLDUE_FILE is defined, <trace/events/TRACE_INCLUDE_FILE.h>
    will be included and compiled, otherwise it will be
    So TRACE_SYSTEM should be defined outside of #if proctection,
    just like TRACE_INCLUDE_FILE.
    Imaging this scenario:
     #include <trace/events/foo.h>
        -> TRACE_SYSTEM == foo
     #include <trace/events/bar.h>
        -> TRACE_SYSTEM == bar
     #include <trace/events/foo.h>
        -> TRACE_SYSTEM == bar !!!
    and then bar.h will be included and compiled.
    Signed-off-by: Li Zefan <>
    Cc: Steven Rostedt <>
    Cc: Frederic Weisbecker <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
Commits on Jun 20, 2009
  1. Linus Torvalds

    Merge branch 'tracing-fixes-for-linus' of git://…

    torvalds authored
    * 'tracing-fixes-for-linus' of git:// (24 commits)
      tracing/urgent: warn in case of ftrace_start_up inbalance
      tracing/urgent: fix unbalanced ftrace_start_up
      function-graph: add stack frame test
      function-graph: disable when both x86_32 and optimize for size are configured
      ring-buffer: have benchmark test print to trace buffer
      ring-buffer: do not grab locks in nmi
      ring-buffer: add locks around rb_per_cpu_empty
      ring-buffer: check for less than two in size allocation
      ring-buffer: remove useless compile check for buffer_page size
      ring-buffer: remove useless warn on check
      ring-buffer: use BUF_PAGE_HDR_SIZE in calculating index
      tracing: update sample event documentation
      tracing/filters: fix race between filter setting and module unload
      tracing/filters: free filter_string in destroy_preds()
      ring-buffer: use commit counters for commit pointer accounting
      ring-buffer: remove unused variable
      ring-buffer: have benchmark test handle discarded events
      ring-buffer: prevent adding write in discarded area
      tracing/filters: strloc should be unsigned short
      tracing/filters: operand can be negative
    Fix up kmemcheck-induced conflict in kernel/trace/ring_buffer.c manually
Commits on Jun 17, 2009
  1. Merge branch 'linus' into tracing/hw-breakpoints

    Ingo Molnar authored
    Semantic conflict:
    Merge reason: Resolve the conflicts, move from put_cpu_no_sched() to
                  put_cpu() in arch/x86/kernel/hw_breakpoint.c.
    Signed-off-by: Ingo Molnar <>
Commits on Jun 16, 2009
  1. Steven Rostedt

    tracing: update sample event documentation

    Steven Rostedt authored rostedt committed
    The comments in the sample code is a bit confusing. This patch
    cleans them up a little.
    Signed-off-by: Steven Rostedt <>
  2. Greg Kroah-Hartman

    firmware: remove broken example files

    gregkh authored
    The firmware example files are beyond broken, and will not work, and
    should not be used as an example at all.  So lets remove them and hope
    someone writes new files sometime in the future.
    Signed-off-by: Greg Kroah-Hartman <>
  3. michal42 Greg Kroah-Hartman

    kobject: samples: make SAMPLE_KOBJECT module-only

    michal42 authored gregkh committed
    With SAMPLE_KOBJECT=y, it isn't even linked into the kernel image.
    Signed-off-by: Michal Marek <>
    Signed-off-by: Greg Kroah-Hartman <>
Commits on Jun 2, 2009
  1. Frederic Weisbecker

    hw-breakpoints: sample HW breakpoint over kernel data address

    K.Prasad authored fweisbec committed
    This patch introduces a sample kernel module to demonstrate the use of Hardware
    Breakpoint feature. It places a breakpoint over the kernel variable 'pid_max'
    to monitor all write operations and emits a function-backtrace when done.
    Signed-off-by: K.Prasad <>
    Signed-off-by: Frederic Weisbecker <>
Commits on May 7, 2009
  1. Steven Rostedt

    tracing: update sample with TRACE_INCLUDE_FILE

    Steven Rostedt authored rostedt committed
    When creating trace events for ftrace, the header file with the TRACE_EVENT
    macros must also have a macro called TRACE_SYSTEM. This macro describes
    the name of the system the TRACE_EVENTS are defined for. It also doubles
    as a way for the define_trace.h file to include the file that included
    For example:
    in irq.h
     #define TRACE_SYSTEM irq
     #include <trace/define_trace.h>
    The define_trace will use TRACE_SYSTEM to include irq.h. But if the name
    of the trace system does not match the name of the trace header file,
    one can override it with:
    Which will change define_trace.h to inclued foo_trace.h instead of foo.h
    The sample comments this, but people that use the sample code will more
    likely use the code and not read the comments. This patch changes the
    sample code to use the TRACE_INCLUDE_FILE to better show developers how to
    use it.
    [ Impact: make sample less confusing to developers ]
    Reported-by: Christoph Hellwig <>
    Signed-off-by: Steven Rostedt <>
Commits on May 6, 2009
  1. tracing: small trave_events sample Makefile cleanup

    Christoph Hellwig authored Ingo Molnar committed
    Use -I$(src) to add the current directory the include path.
    [ Impact: cleanup ]
    Signed-off-by: Christoph Hellwig <>
    Acked-by: Steven Rostedt <>
    LKML-Reference: <new-submission>
    Signed-off-by: Ingo Molnar <>
  2. tracing/events: make SAMPLE_TRACE_EVENTS default to n

    Li Zefan authored Ingo Molnar committed
    Normally a config should be default to n. This patch also makes the
    sample module-only, like SAMPLE_MARKERS and SAMPLE_TRACEPOINTS.
    [ Impact: don't build trace event sample by default ]
    Signed-off-by: Li Zefan <>
    Acked-by: Steven Rostedt <>
    Acked-by: Frederic Weisbecker <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
  3. tracing/events: don't say hi when loading the trace event sample

    Li Zefan authored Ingo Molnar committed
    The sample is useful for testing, and I'm using it. But after
    loading the module, it keeps saying hi every 10 seconds, this may
    be disturbing.
    Also Steven said commenting out the "hi" helped in causing races. :)
    [ Impact: make testing a bit easier ]
    Signed-off-by: Li Zefan <>
    Acked-by: Steven Rostedt <>
    Acked-by: Frederic Weisbecker <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
Commits on Apr 15, 2009
  1. Steven Rostedt

    tracing/events: add trace-events-sample

    Steven Rostedt authored rostedt committed
    This patch adds a sample to the samples directory on how to create
    and use TRACE_EVENT trace points.
    Signed-off-by: Steven Rostedt <>
Commits on Mar 24, 2009
  1. tracing: Documentation / sample code fixes for tracepoints

    Jody McIntyre authored Ingo Molnar committed
    Fix the tracepoint documentation to refer to "tracepoint-sample"
    instead of "tracepoint-example" to match what actually exists;
    fix the directory, and clarify how to compile.
    Change every instance of "example" in the sample tracepoint code
    to "sample" for consistency.
    Signed-off-by: Jody McIntyre <>
    Acked-by: Mathieu Desnoyers <>
    LKML-Reference: <20090324200027.GH8294@clouds>
    Signed-off-by: Ingo Molnar <>
Something went wrong with that request. Please try again.