centos man page for del_timer_sync

Query: del_timer_sync

OS: centos

Section: 9

Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar

DEL_TIMER_SYNC(9)						   Driver Basics						 DEL_TIMER_SYNC(9)

NAME
del_timer_sync - deactivate a timer and wait for the handler to finish.
SYNOPSIS
int del_timer_sync(struct timer_list * timer);
ARGUMENTS
timer the timer to be deactivated
DESCRIPTION
This function only differs from del_timer on SMP: besides deactivating the timer it also makes sure the handler has finished executing on other CPUs.
SYNCHRONIZATION RULES
Callers must prevent restarting of the timer, otherwise this function is meaningless. It must not be called from interrupt contexts unless the timer is an irqsafe one. The caller must not hold locks which would prevent completion of the timer's handler. The timer's handler must not call add_timer_on. Upon exit the timer is not queued and the handler is not running on any CPU.
NOTE
For !irqsafe timers, you must not hold locks that are held in interrupt context while calling this function. Even if the lock has nothing to do with the timer in question. Here's why: CPU0 CPU1 ---- ---- <SOFTIRQ> call_timer_fn; base->running_timer = mytimer; spin_lock_irq(somelock); <IRQ> spin_lock(somelock); del_timer_sync(mytimer); while (base->running_timer == mytimer); Now del_timer_sync will never return and never release somelock. The interrupt on the other CPU is waiting to grab somelock but it has interrupted the softirq that CPU0 is waiting to finish. The function returns whether it has deactivated a pending timer or not.
COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 DEL_TIMER_SYNC(9)
Related Man Pages
struct_hrtimer(9) - centos
install_int(3alleg4) - debian
iv_timer(3) - debian
iv_timer_unregister(3) - debian
struct_hrtimer(9) - suse
Similar Topics in the Unix Linux Community
reply timer
Questions about timer in multi-threads environment
How to prevent job1 from running while job2 is running..
Perl how to make the 2nd CPU full?
change