最終更新:2014-06-05 (木) 16:53:11 (3606d)
kernel.org/doc/htmldocs/genericirq
https://www.kernel.org/doc/htmldocs/genericirq
目次
1. Introduction
2. Rationale
3. Known Bugs And Assumptions
4. Abstraction layers
- Interrupt control flow
- High-level Driver API
- High-level IRQ flow handlers
- Default flow implementations
- Default flow handler implementations
- Quirks and optimizations
- Delayed interrupt disable
- Chip-level hardware encapsulation
5. __do_IRQ? entry point
6. Locking on SMP
7. Generic interrupt chip
- irq_gc_mask_set_bit? — Mask chip via setting bit in mask register
- irq_gc_mask_clr_bit? — Mask chip via clearing bit in mask register
- irq_gc_ack_set_bit? — Ack pending interrupt via setting bit
- irq_alloc_generic_chip? — Allocate a generic chip and initialize it
- irq_alloc_domain_generic_chips? — Allocate generic chips for an irq domain
- irq_get_domain_generic_chip? — Get a pointer to the generic chip of a hw_irq
- irq_setup_generic_chip? — Setup a range of interrupts with a generic chip
- irq_setup_alt_chip? — Switch to alternative chip
- irq_remove_generic_chip? — Remove a chip
8. Structures
- irq_data? — per irq and irq chip data passed down to chip functions
- irq_chip? — hardware interrupt chip descriptor
- irq_chip_regs? — register offsets for struct irq_gci
- irq_chip_type? — Generic interrupt chip instance for a flow type
- irq_chip_generic? — Generic irq chip data structure
- irq_gc_flags? — Initialization flags for generic irq chips
- irqaction? — per interrupt action descriptor
- irq_set_affinity? — Set the irq affinity of a given irq
- irq_force_affinity? — Force the irq affinity of a given irq
- irq_affinity_notify? — context for notification of IRQ affinity changes
9. Public Functions Provided
- synchronize_hardirq? — wait for pending hard IRQ handlers (on other CPUs)
- synchronize_irq? — wait for pending IRQ handlers (on other CPUs)
- irq_set_affinity_notifier? — control notification of IRQ affinity changes
- disable_irq_nosync? — disable an irq without waiting
- disable_irq — disable an irq and wait for completion
- enable_irq? — enable handling of an irq
- irq_set_irq_wake? — control irq power management wakeup
- irq_wake_thread? — wake the irq thread for the action identified by dev_id
- setup_irq? — setup an interrupt
- remove_irq? — free an interrupt
- free_irq? — free an interrupt allocated with request_irq
- request_threaded_irq — allocate an interrupt line
- request_any_context_irq? — allocate an interrupt line
- irq_set_chip? — set the irq chip for an irq
- irq_set_irq_type? — set the irq trigger type for an irq
- irq_set_handler_data? — set irq handler data for an irq
- irq_set_chip_data? — set irq chip data for an irq
- handle_simple_irq? — Simple and software-decoded IRQs.
- handle_level_irq? — Level type irq handler
- handle_edge_irq? — edge type IRQ handler
10. Internal Functions Provided
- irq_reserve_irqs? — mark irqs allocated
- irq_get_next_irq? — get next allocated irq number
- dynamic_irq_cleanup? — cleanup a dynamically allocated irq
- handle_bad_irq? — handle spurious and unhandled irqs
- irq_set_msi_desc_off? — set MSI descriptor data for an irq at offset
- irq_set_msi_desc? — set MSI descriptor data for an irq
- irq_disable? — Mark interrupt disabled
- handle_fasteoi_irq? — irq handler for transparent controllers
- handle_edge_eoi_irq? — edge eoi type IRQ handler
- handle_percpu_irq? — Per CPU local irq handler
- handle_percpu_devid_irq? — Per CPU local irq handler with per cpu dev ids
- irq_cpu_online? — Invoke all irq_cpu_online functions.
- irq_cpu_offline? — Invoke all irq_cpu_offline functions.