mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: itimers: Add tracepoints for itimer hrtimer: Add tracepoint for hrtimers timers: Add tracepoints for timer_list timers cputime: Optimize jiffies_to_cputime(1) itimers: Simplify arm_timer() code a bit itimers: Fix periodic tics precision itimers: Merge ITIMER_VIRT and ITIMER_PROF Trivial header file include conflicts in kernel/fork.c
This commit is contained in:
commit
31bbb9b58d
13 changed files with 620 additions and 172 deletions
|
@ -46,6 +46,9 @@
|
|||
#include <asm/timex.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/timer.h>
|
||||
|
||||
u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
|
||||
|
||||
EXPORT_SYMBOL(jiffies_64);
|
||||
|
@ -521,6 +524,25 @@ static inline void debug_timer_activate(struct timer_list *timer) { }
|
|||
static inline void debug_timer_deactivate(struct timer_list *timer) { }
|
||||
#endif
|
||||
|
||||
static inline void debug_init(struct timer_list *timer)
|
||||
{
|
||||
debug_timer_init(timer);
|
||||
trace_timer_init(timer);
|
||||
}
|
||||
|
||||
static inline void
|
||||
debug_activate(struct timer_list *timer, unsigned long expires)
|
||||
{
|
||||
debug_timer_activate(timer);
|
||||
trace_timer_start(timer, expires);
|
||||
}
|
||||
|
||||
static inline void debug_deactivate(struct timer_list *timer)
|
||||
{
|
||||
debug_timer_deactivate(timer);
|
||||
trace_timer_cancel(timer);
|
||||
}
|
||||
|
||||
static void __init_timer(struct timer_list *timer,
|
||||
const char *name,
|
||||
struct lock_class_key *key)
|
||||
|
@ -549,7 +571,7 @@ void init_timer_key(struct timer_list *timer,
|
|||
const char *name,
|
||||
struct lock_class_key *key)
|
||||
{
|
||||
debug_timer_init(timer);
|
||||
debug_init(timer);
|
||||
__init_timer(timer, name, key);
|
||||
}
|
||||
EXPORT_SYMBOL(init_timer_key);
|
||||
|
@ -568,7 +590,7 @@ static inline void detach_timer(struct timer_list *timer,
|
|||
{
|
||||
struct list_head *entry = &timer->entry;
|
||||
|
||||
debug_timer_deactivate(timer);
|
||||
debug_deactivate(timer);
|
||||
|
||||
__list_del(entry->prev, entry->next);
|
||||
if (clear_pending)
|
||||
|
@ -632,7 +654,7 @@ __mod_timer(struct timer_list *timer, unsigned long expires,
|
|||
goto out_unlock;
|
||||
}
|
||||
|
||||
debug_timer_activate(timer);
|
||||
debug_activate(timer, expires);
|
||||
|
||||
new_base = __get_cpu_var(tvec_bases);
|
||||
|
||||
|
@ -787,7 +809,7 @@ void add_timer_on(struct timer_list *timer, int cpu)
|
|||
BUG_ON(timer_pending(timer) || !timer->function);
|
||||
spin_lock_irqsave(&base->lock, flags);
|
||||
timer_set_base(timer, base);
|
||||
debug_timer_activate(timer);
|
||||
debug_activate(timer, timer->expires);
|
||||
if (time_before(timer->expires, base->next_timer) &&
|
||||
!tbase_get_deferrable(timer->base))
|
||||
base->next_timer = timer->expires;
|
||||
|
@ -1000,7 +1022,9 @@ static inline void __run_timers(struct tvec_base *base)
|
|||
*/
|
||||
lock_map_acquire(&lockdep_map);
|
||||
|
||||
trace_timer_expire_entry(timer);
|
||||
fn(data);
|
||||
trace_timer_expire_exit(timer);
|
||||
|
||||
lock_map_release(&lockdep_map);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue