lkml.org 
[lkml]   [2015]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:timers/core] timer: Stats: Simplify the flags handling
    Commit-ID:  c74441a17eb975b604e339ca6c11b9ab9aaca11f
    Gitweb: http://git.kernel.org/tip/c74441a17eb975b604e339ca6c11b9ab9aaca11f
    Author: Thomas Gleixner <tglx@linutronix.de>
    AuthorDate: Tue, 26 May 2015 22:50:31 +0000
    Committer: Thomas Gleixner <tglx@linutronix.de>
    CommitDate: Fri, 19 Jun 2015 15:18:27 +0200

    timer: Stats: Simplify the flags handling

    Simplify the handling of the flag storage for the timer statistics. No
    intermediate storage anymore. Just hand over the flags field.

    I left the printout of 'deferrable' for now because changing this
    would be an ABI update and I have no idea how strong people feel about
    that. OTOH, I wonder whether we should kill the whole timer stats
    stuff because all of that information can be retrieved via ftrace/perf
    as well.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Joonwoo Park <joonwoop@codeaurora.org>
    Cc: Wenbo Wang <wenbo.wang@memblaze.com>
    Link: http://lkml.kernel.org/r/20150526224512.046626248@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    include/linux/timer.h | 5 +----
    kernel/time/timer.c | 7 ++-----
    kernel/time/timer_stats.c | 10 +++++-----
    3 files changed, 8 insertions(+), 14 deletions(-)

    diff --git a/include/linux/timer.h b/include/linux/timer.h
    index 4a0d52b..ff0689b 100644
    --- a/include/linux/timer.h
    +++ b/include/linux/timer.h
    @@ -188,13 +188,10 @@ extern void set_timer_slack(struct timer_list *time, int slack_hz);

    extern int timer_stats_active;

    -#define TIMER_STATS_FLAG_DEFERRABLE 0x1
    -
    extern void init_timer_stats(void);

    extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
    - void *timerf, char *comm,
    - unsigned int timer_flag);
    + void *timerf, char *comm, u32 flags);

    extern void __timer_stats_timer_set_start_info(struct timer_list *timer,
    void *addr);
    diff --git a/kernel/time/timer.c b/kernel/time/timer.c
    index 1540af9..3398d93 100644
    --- a/kernel/time/timer.c
    +++ b/kernel/time/timer.c
    @@ -404,15 +404,12 @@ void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr)

    static void timer_stats_account_timer(struct timer_list *timer)
    {
    - unsigned int flag = 0;
    -
    if (likely(!timer->start_site))
    return;
    - if (unlikely(timer->flags & TIMER_DEFERRABLE))
    - flag |= TIMER_STATS_FLAG_DEFERRABLE;

    timer_stats_update_stats(timer, timer->start_pid, timer->start_site,
    - timer->function, timer->start_comm, flag);
    + timer->function, timer->start_comm,
    + timer->flags);
    }

    #else
    diff --git a/kernel/time/timer_stats.c b/kernel/time/timer_stats.c
    index 1fb08f2..1adecb4 100644
    --- a/kernel/time/timer_stats.c
    +++ b/kernel/time/timer_stats.c
    @@ -68,7 +68,7 @@ struct entry {
    * Number of timeout events:
    */
    unsigned long count;
    - unsigned int timer_flag;
    + u32 flags;

    /*
    * We save the command-line string to preserve
    @@ -227,13 +227,13 @@ static struct entry *tstat_lookup(struct entry *entry, char *comm)
    * @startf: pointer to the function which did the timer setup
    * @timerf: pointer to the timer callback function of the timer
    * @comm: name of the process which set up the timer
    + * @tflags: The flags field of the timer
    *
    * When the timer is already registered, then the event counter is
    * incremented. Otherwise the timer is registered in a free slot.
    */
    void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
    - void *timerf, char *comm,
    - unsigned int timer_flag)
    + void *timerf, char *comm, u32 tflags)
    {
    /*
    * It doesn't matter which lock we take:
    @@ -251,7 +251,7 @@ void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
    input.start_func = startf;
    input.expire_func = timerf;
    input.pid = pid;
    - input.timer_flag = timer_flag;
    + input.flags = tflags;

    raw_spin_lock_irqsave(lock, flags);
    if (!timer_stats_active)
    @@ -306,7 +306,7 @@ static int tstats_show(struct seq_file *m, void *v)

    for (i = 0; i < nr_entries; i++) {
    entry = entries + i;
    - if (entry->timer_flag & TIMER_STATS_FLAG_DEFERRABLE) {
    + if (entry->flags & TIMER_DEFERRABLE) {
    seq_printf(m, "%4luD, %5d %-16s ",
    entry->count, entry->pid, entry->comm);
    } else {
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2015-06-19 15:41    [W:4.427 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site