lkml.org 
[lkml]   [2014]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v7 0/2] Tracepoint API simplification/cleanup
    Date
    Here is v7 of the tracepoint register/unregister API simplification,
    submitted for 3.15.

    Changes since v1:
    - Adapt ftrace/perf callers,
    - Update tracepoint.h macro,
    - Build tested.

    Changes since v2:
    - Introduce for_each_tracepoint() iterator to allow listing the
    currently loaded tracepoints, for modules using coming/going
    notifiers to track tracepoints.

    Changes since v3:
    - Introduce module coming and going notifiers each with their own
    priority to ensure that other coming notifiers are called after, and
    coming notifiers are called before the tracepoint notifiers.
    - Fix: move for_each_tracepoint() outside of the CONFIG_MODULE ifdef.

    Changes since v4:
    - Split tracepoints_mutex into two locks: tp_modlist_mutex, which
    protects the tracepoint list of modules, and a tracepoint_mutex, which
    protects the tracepoints per se. tracepoint_mutex nests inside
    tp_modlist_mutex.
    - Introduce a tracepoint module notifier, to ensure consistency between
    iteration on tracepoints with for_each_tracepoint() and module coming
    and going notifications. This consistency is ensured by holding
    tp_modlist_mutex when calling the notifier and when iterating on the
    tracepoint module list.

    Changes since v5:
    - Remove tracepoint_add_old_probes within "Tracepoint cleanup: remove
    unused API functions" rather than in later patch.
    - Remove struct tp_probes "old probes" list within "Tracepoint cleanup:
    remove unused API functions", as it is not needed anymore.
    - Within "Tracepoint cleanup: remove unused API functions", simply add
    the new module to tail of list, since there is no need to keep it
    ordered anymore.

    Changes since v6:
    - Remove unused struct list_head list from struct tp_probes in patch
    "Tracepoint: register/unregister struct tracepoint",
    - Rename for_each_tracepoint() to for_each_kernel_tracepoint(). Only
    iterate on kernel tracepoints,
    - Registered tracepoint module notifiers now receive struct tp_module
    pointer rather than struct module pointer,
    - register_tracepoint_module_notifier and
    unregister_tracepoint_module_notifier now iterate on all modules and
    call coming/going notifiers. This ensures notifier registration and
    listing of already loaded modules are done atomically (protected by
    tp_modlist_mutex).

    Thanks!

    Mathieu

    Mathieu Desnoyers (2):
    Tracepoint cleanup: remove unused API functions
    Tracepoint: register/unregister struct tracepoint

    include/linux/ftrace_event.h | 1 +
    include/linux/tracepoint.h | 60 ++--
    include/trace/ftrace.h | 2 +
    kernel/trace/trace_events.c | 8 +-
    kernel/tracepoint.c | 705 ++++++++++++++----------------------------
    5 files changed, 260 insertions(+), 516 deletions(-)

    --
    1.7.10.4



    \
     
     \ /
      Last update: 2014-03-21 07:22    [W:3.164 / U:0.448 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site