Sophie

Sophie

distrib > Fedora > 18 > x86_64 > media > updates > by-pkgid > 1a595394b241504ff370a8d12ebfcea7 > files > 764

kernel-doc-3.11.10-100.fc18.noarch.rpm

<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>del_timer_sync</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Linux Device Drivers" /><link rel="up" href="ch01s03.html" title="Delaying, scheduling, and timer routines" /><link rel="prev" href="API-try-to-del-timer-sync.html" title="try_to_del_timer_sync" /><link rel="next" href="API-schedule-timeout.html" title="schedule_timeout" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">del_timer_sync</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-try-to-del-timer-sync.html">Prev</a>&#160;</td><th width="60%" align="center">Delaying, scheduling, and timer routines</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-schedule-timeout.html">Next</a></td></tr></table><hr /></div><div class="refentry"><a id="API-del-timer-sync"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>del_timer_sync &#8212; 
     deactivate a timer and wait for the handler to finish.
 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <strong class="fsfunc">del_timer_sync </strong>(</code></td><td>struct timer_list * <var class="pdparam">timer</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a id="idm140404968610304"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>timer</code></em></span></dt><dd><p>
     the timer to be deactivated
    </p></dd></dl></div></div><div class="refsect1"><a id="idm140404968607248"></a><h2>Description</h2><p>
   This function only differs from <code class="function">del_timer</code> on SMP: besides deactivating
   the timer it also makes sure the handler has finished executing on other
   CPUs.
</p></div><div class="refsect1"><a id="idm140404968605344"></a><h2>Synchronization rules</h2><p>
   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 <code class="function">add_timer_on</code>. Upon exit the
   timer is not queued and the handler is not running on any CPU.
</p></div><div class="refsect1"><a id="idm140404968602848"></a><h2>Note</h2><p>
   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:
   </p><p>

   CPU0                             CPU1
   ----                             ----
   &lt;SOFTIRQ&gt;
   <code class="function">call_timer_fn</code>;
   base-&gt;running_timer = mytimer;
   spin_lock_irq(somelock);
   &lt;IRQ&gt;
   spin_lock(somelock);
   del_timer_sync(mytimer);
   while (base-&gt;running_timer == mytimer);
   </p><p>

   Now <code class="function">del_timer_sync</code> 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.
   </p><p>

   The function returns whether it has deactivated a pending timer or not.
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-try-to-del-timer-sync.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch01s03.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-schedule-timeout.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">try_to_del_timer_sync</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">schedule_timeout</span></td></tr></table></div></body></html>