Sophie

Sophie

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

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>Linux generic IRQ handling</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Linux generic IRQ handling" /><link rel="next" href="intro.html" title="Chapter&#160;1.&#160;Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Linux generic IRQ handling</th></tr><tr><td width="20%" align="left">&#160;</td><th width="60%" align="center">&#160;</th><td width="20%" align="right">&#160;<a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="Generic-IRQ-Guide"></a>Linux generic IRQ handling</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Thomas</span> <span class="surname">Gleixner</span></h3><div class="affiliation"><div class="address"><p><br />
&#160;&#160;&#160;&#160;&#160;&#160;<code class="email">&lt;<a class="email" href="mailto:tglx@linutronix.de">tglx@linutronix.de</a>&gt;</code><br />
&#160;&#160;&#160;&#160;&#160;</p></div></div></div><div class="author"><h3 class="author"><span class="firstname">Ingo</span> <span class="surname">Molnar</span></h3><div class="affiliation"><div class="address"><p><br />
&#160;&#160;&#160;&#160;&#160;&#160;<code class="email">&lt;<a class="email" href="mailto:mingo@elte.hu">mingo@elte.hu</a>&gt;</code><br />
&#160;&#160;&#160;&#160;&#160;</p></div></div></div></div></div><div><p class="copyright">Copyright &#169; 2005-2010 Thomas Gleixner</p></div><div><p class="copyright">Copyright &#169; 2005-2006 Ingo Molnar</p></div><div><div class="legalnotice"><a id="idm140221690261968"></a><p>
     This documentation is free software; you can redistribute
     it and/or modify it under the terms of the GNU General Public
     License version 2 as published by the Free Software Foundation.
   </p><p>
     This program is distributed in the hope that it will be
     useful, but WITHOUT ANY WARRANTY; without even the implied
     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     See the GNU General Public License for more details.
   </p><p>
     You should have received a copy of the GNU General Public
     License along with this program; if not, write to the Free
     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
     MA 02111-1307 USA
   </p><p>
     For more details see the file COPYING in the source
     distribution of Linux.
   </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="intro.html">1. Introduction</a></span></dt><dt><span class="chapter"><a href="rationale.html">2. Rationale</a></span></dt><dt><span class="chapter"><a href="bugs.html">3. Known Bugs And Assumptions</a></span></dt><dt><span class="chapter"><a href="Abstraction.html">4. Abstraction layers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Abstraction.html#Interrupt_control_flow">Interrupt control flow</a></span></dt><dt><span class="sect1"><a href="Highlevel_Driver_API.html">Highlevel Driver API</a></span></dt><dt><span class="sect1"><a href="Highlevel_IRQ_flow_handlers.html">Highlevel IRQ flow handlers</a></span></dt><dd><dl><dt><span class="sect2"><a href="Highlevel_IRQ_flow_handlers.html#Default_flow_implementations">Default flow implementations</a></span></dt><dt><span class="sect2"><a href="Highlevel_IRQ_flow_handlers.html#Default_flow_handler_implementations">Default flow handler implementations</a></span></dt><dt><span class="sect2"><a href="Highlevel_IRQ_flow_handlers.html#Quirks_and_optimizations">Quirks and optimizations</a></span></dt><dt><span class="sect2"><a href="Highlevel_IRQ_flow_handlers.html#Delayed_interrupt_disable">Delayed interrupt disable</a></span></dt></dl></dd><dt><span class="sect1"><a href="Chiplevel_hardware_encapsulation.html">Chiplevel hardware encapsulation</a></span></dt></dl></dd><dt><span class="chapter"><a href="doirq.html">5. __do_IRQ entry point</a></span></dt><dt><span class="chapter"><a href="locking.html">6. Locking on SMP</a></span></dt><dt><span class="chapter"><a href="genericchip.html">7. Generic interrupt chip</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-irq-gc-mask-set-bit.html"><span class="phrase">irq_gc_mask_set_bit</span></a></span><span class="refpurpose"> &#8212; 
  Mask chip via setting bit in mask register
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-gc-mask-clr-bit.html"><span class="phrase">irq_gc_mask_clr_bit</span></a></span><span class="refpurpose"> &#8212; 
     Mask chip via clearing bit in mask register
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-gc-ack-set-bit.html"><span class="phrase">irq_gc_ack_set_bit</span></a></span><span class="refpurpose"> &#8212; 
     Ack pending interrupt via setting bit
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-alloc-generic-chip.html"><span class="phrase">irq_alloc_generic_chip</span></a></span><span class="refpurpose"> &#8212; 
     Allocate a generic chip and initialize it
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-alloc-domain-generic-chips.html"><span class="phrase">irq_alloc_domain_generic_chips</span></a></span><span class="refpurpose"> &#8212; 
     Allocate generic chips for an irq domain
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-get-domain-generic-chip.html"><span class="phrase">irq_get_domain_generic_chip</span></a></span><span class="refpurpose"> &#8212; 
     Get a pointer to the generic chip of a hw_irq
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-setup-generic-chip.html"><span class="phrase">irq_setup_generic_chip</span></a></span><span class="refpurpose"> &#8212; 
     Setup a range of interrupts with a generic chip
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-setup-alt-chip.html"><span class="phrase">irq_setup_alt_chip</span></a></span><span class="refpurpose"> &#8212; 
     Switch to alternative chip
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-remove-generic-chip.html"><span class="phrase">irq_remove_generic_chip</span></a></span><span class="refpurpose"> &#8212; 
     Remove a chip
 </span></dt></dl></dd><dt><span class="chapter"><a href="structs.html">8. Structures</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-irq-data.html"><span class="phrase">struct irq_data</span></a></span><span class="refpurpose"> &#8212; 
  per irq and irq chip data passed down to chip functions
 </span></dt><dt><span class="refentrytitle"><a href="API-struct-irq-chip.html"><span class="phrase">struct irq_chip</span></a></span><span class="refpurpose"> &#8212; 
     hardware interrupt chip descriptor
 </span></dt><dt><span class="refentrytitle"><a href="API-struct-irq-chip-regs.html"><span class="phrase">struct irq_chip_regs</span></a></span><span class="refpurpose"> &#8212; 
     register offsets for struct irq_gci
 </span></dt><dt><span class="refentrytitle"><a href="API-struct-irq-chip-type.html"><span class="phrase">struct irq_chip_type</span></a></span><span class="refpurpose"> &#8212; 
     Generic interrupt chip instance for a flow type
 </span></dt><dt><span class="refentrytitle"><a href="API-struct-irq-chip-generic.html"><span class="phrase">struct irq_chip_generic</span></a></span><span class="refpurpose"> &#8212; 
     Generic irq chip data structure
 </span></dt><dt><span class="refentrytitle"><a href="API-enum-irq-gc-flags.html"><span class="phrase">enum irq_gc_flags</span></a></span><span class="refpurpose"> &#8212; 
     Initialization flags for generic irq chips
 </span></dt><dt><span class="refentrytitle"><a href="API-struct-irqaction.html"><span class="phrase">struct irqaction</span></a></span><span class="refpurpose"> &#8212; 
  per interrupt action descriptor
 </span></dt><dt><span class="refentrytitle"><a href="API-struct-irq-affinity-notify.html"><span class="phrase">struct irq_affinity_notify</span></a></span><span class="refpurpose"> &#8212; 
     context for notification of IRQ affinity changes
 </span></dt></dl></dd><dt><span class="chapter"><a href="pubfunctions.html">9. Public Functions Provided</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-synchronize-irq.html"><span class="phrase">synchronize_irq</span></a></span><span class="refpurpose"> &#8212; 
  wait for pending IRQ handlers (on other CPUs)
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-affinity-notifier.html"><span class="phrase">irq_set_affinity_notifier</span></a></span><span class="refpurpose"> &#8212; 
     control notification of IRQ affinity changes
 </span></dt><dt><span class="refentrytitle"><a href="API-disable-irq-nosync.html"><span class="phrase">disable_irq_nosync</span></a></span><span class="refpurpose"> &#8212; 
     disable an irq without waiting
 </span></dt><dt><span class="refentrytitle"><a href="API-disable-irq.html"><span class="phrase">disable_irq</span></a></span><span class="refpurpose"> &#8212; 
     disable an irq and wait for completion
 </span></dt><dt><span class="refentrytitle"><a href="API-enable-irq.html"><span class="phrase">enable_irq</span></a></span><span class="refpurpose"> &#8212; 
     enable handling of an irq
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-irq-wake.html"><span class="phrase">irq_set_irq_wake</span></a></span><span class="refpurpose"> &#8212; 
     control irq power management wakeup
 </span></dt><dt><span class="refentrytitle"><a href="API-setup-irq.html"><span class="phrase">setup_irq</span></a></span><span class="refpurpose"> &#8212; 
     setup an interrupt
 </span></dt><dt><span class="refentrytitle"><a href="API-remove-irq.html"><span class="phrase">remove_irq</span></a></span><span class="refpurpose"> &#8212; 
     free an interrupt
 </span></dt><dt><span class="refentrytitle"><a href="API-free-irq.html"><span class="phrase">free_irq</span></a></span><span class="refpurpose"> &#8212; 
     free an interrupt allocated with request_irq
 </span></dt><dt><span class="refentrytitle"><a href="API-request-threaded-irq.html"><span class="phrase">request_threaded_irq</span></a></span><span class="refpurpose"> &#8212; 
     allocate an interrupt line
 </span></dt><dt><span class="refentrytitle"><a href="API-request-any-context-irq.html"><span class="phrase">request_any_context_irq</span></a></span><span class="refpurpose"> &#8212; 
     allocate an interrupt line
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-chip.html"><span class="phrase">irq_set_chip</span></a></span><span class="refpurpose"> &#8212; 
  set the irq chip for an irq
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-irq-type.html"><span class="phrase">irq_set_irq_type</span></a></span><span class="refpurpose"> &#8212; 
     set the irq trigger type for an irq
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-handler-data.html"><span class="phrase">irq_set_handler_data</span></a></span><span class="refpurpose"> &#8212; 
     set irq handler data for an irq
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-chip-data.html"><span class="phrase">irq_set_chip_data</span></a></span><span class="refpurpose"> &#8212; 
     set irq chip data for an irq
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-simple-irq.html"><span class="phrase">handle_simple_irq</span></a></span><span class="refpurpose"> &#8212; 
     Simple and software-decoded IRQs.
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-level-irq.html"><span class="phrase">handle_level_irq</span></a></span><span class="refpurpose"> &#8212; 
     Level type irq handler
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-edge-irq.html"><span class="phrase">handle_edge_irq</span></a></span><span class="refpurpose"> &#8212; 
     edge type IRQ handler
 </span></dt></dl></dd><dt><span class="chapter"><a href="intfunctions.html">10. Internal Functions Provided</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-irq-reserve-irqs.html"><span class="phrase">irq_reserve_irqs</span></a></span><span class="refpurpose"> &#8212; 
  mark irqs allocated
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-get-next-irq.html"><span class="phrase">irq_get_next_irq</span></a></span><span class="refpurpose"> &#8212; 
     get next allocated irq number
 </span></dt><dt><span class="refentrytitle"><a href="API-dynamic-irq-cleanup.html"><span class="phrase">dynamic_irq_cleanup</span></a></span><span class="refpurpose"> &#8212; 
     cleanup a dynamically allocated irq
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-bad-irq.html"><span class="phrase">handle_bad_irq</span></a></span><span class="refpurpose"> &#8212; 
  handle spurious and unhandled irqs
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-msi-desc-off.html"><span class="phrase">irq_set_msi_desc_off</span></a></span><span class="refpurpose"> &#8212; 
  set MSI descriptor data for an irq at offset
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-set-msi-desc.html"><span class="phrase">irq_set_msi_desc</span></a></span><span class="refpurpose"> &#8212; 
     set MSI descriptor data for an irq
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-disable.html"><span class="phrase">irq_disable</span></a></span><span class="refpurpose"> &#8212; 
     Mark interupt disabled
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-fasteoi-irq.html"><span class="phrase">handle_fasteoi_irq</span></a></span><span class="refpurpose"> &#8212; 
     irq handler for transparent controllers
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-edge-eoi-irq.html"><span class="phrase">handle_edge_eoi_irq</span></a></span><span class="refpurpose"> &#8212; 
     edge eoi type IRQ handler
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-percpu-irq.html"><span class="phrase">handle_percpu_irq</span></a></span><span class="refpurpose"> &#8212; 
     Per CPU local irq handler
 </span></dt><dt><span class="refentrytitle"><a href="API-handle-percpu-devid-irq.html"><span class="phrase">handle_percpu_devid_irq</span></a></span><span class="refpurpose"> &#8212; 
     Per CPU local irq handler with per cpu dev ids
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-cpu-online.html"><span class="phrase">irq_cpu_online</span></a></span><span class="refpurpose"> &#8212; 
     Invoke all irq_cpu_online functions.
 </span></dt><dt><span class="refentrytitle"><a href="API-irq-cpu-offline.html"><span class="phrase">irq_cpu_offline</span></a></span><span class="refpurpose"> &#8212; 
     Invoke all irq_cpu_offline functions.
 </span></dt></dl></dd><dt><span class="chapter"><a href="credits.html">11. Credits</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right">&#160;<a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right" valign="top">&#160;Chapter&#160;1.&#160;Introduction</td></tr></table></div></body></html>