05 Mar, 2008

1 commit

  • Wrap __mark_check_format() into an if(0) to make sure that parameters such as

    trace_mark(mm_page_alloc, "order %u pfn %lu", order, page?page_to_pfn(page):0);

    (where page_to_pfn() has side-effects) won't generate code because of the
    __mark_check_format().

    Thanks to Jan Kiszka for reporting this.

    Signed-off-by: Mathieu Desnoyers
    Cc: Jan Kiszka
    Cc: "Frank Ch. Eigler"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     

14 Feb, 2008

2 commits

  • This adds some new magic in the MODPOST phase for CONFIG_MARKERS. Analogous
    to the Module.symvers file, the build will now write a Module.markers file
    when CONFIG_MARKERS=y is set. This file lists the name, defining module, and
    format string of each marker, separated by \t characters. This simple text
    file can be used by offline build procedures for instrumentation code,
    analogous to how System.map and Module.symvers can be useful to have for
    kernels other than the one you are running right now.

    The strings are made easy to extract by having the __trace_mark macro define
    the name and format together in a single array called __mstrtab_* in the
    __markers_strings section. This is straightforward and reliable as long as
    the marker structs are always defined by this macro. It is an unreasonable
    amount of hairy work to extract the string pointers from the __markers section
    structs, which entails handling a relocation type for every machine under the
    sun.

    Mathieu :
    - Ran through checkpatch.pl

    Signed-off-by: Roland McGrath
    Signed-off-by: Mathieu Desnoyers
    Cc: David Smith
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • RCU style multiple probes support for the Linux Kernel Markers. Common case
    (one probe) is still fast and does not require dynamic allocation or a
    supplementary pointer dereference on the fast path.

    - Move preempt disable from the marker site to the callback.

    Since we now have an internal callback, move the preempt disable/enable to the
    callback instead of the marker site.

    Since the callback change is done asynchronously (passing from a handler that
    supports arguments to a handler that does not setup the arguments is no
    arguments are passed), we can safely update it even if it is outside the
    preempt disable section.

    - Move probe arm to probe connection. Now, a connected probe is automatically
    armed.

    Remove MARK_MAX_FORMAT_LEN, unused.

    This patch modifies the Linux Kernel Markers API : it removes the probe
    "arm/disarm" and changes the probe function prototype : it now expects a
    va_list * instead of a "...".

    If we want to have more than one probe connected to a marker at a given
    time (LTTng, or blktrace, ssytemtap) then we need this patch. Without it,
    connecting a second probe handler to a marker will fail.

    It allow us, for instance, to do interesting combinations :

    Do standard tracing with LTTng and, eventually, to compute statistics
    with SystemTAP, or to have a special trigger on an event that would call
    a systemtap script which would stop flight recorder tracing.

    Signed-off-by: Mathieu Desnoyers
    Cc: Christoph Hellwig
    Cc: Mike Mason
    Cc: Dipankar Sarma
    Cc: David Smith
    Cc: "Paul E. McKenney"
    Cc: "Frank Ch. Eigler"
    Cc: Steven Rostedt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     

20 Oct, 2007

2 commits

  • Module example showing how to use the Linux Kernel Markers.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • The marker activation functions sits in kernel/marker.c. A hash table is used
    to keep track of the registered probes and armed markers, so the markers
    within a newly loaded module that should be active can be activated at module
    load time.

    marker_query has been removed. marker_get_first, marker_get_next and
    marker_release should be used as iterators on the markers.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Mathieu Desnoyers
    Acked-by: "Frank Ch. Eigler"
    Cc: Christoph Hellwig
    Cc: Rusty Russell
    Cc: Mike Mason
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers