*参照元 [#v1951214] #backlinks *説明 [#q59a6ec4] -パス: [[linux-2.6.33/include/linux/irq.h]] -FIXME: これは何? --説明 **参考 [#bb39fc3c] *実装 [#wf498c29] /** * struct irq_desc - interrupt descriptor * @irq: interrupt number for this descriptor * @timer_rand_state: pointer to timer rand state struct * @kstat_irqs: irq stats per cpu * @irq_2_iommu: iommu with this irq * @handle_irq: highlevel irq-events handler [if NULL, __do_IRQ()] * @chip: low level interrupt hardware access * @msi_desc: MSI descriptor * @handler_data: per-IRQ data for the irq_chip methods * @chip_data: platform-specific per-chip private data for the chip * methods, to allow shared chip implementations * @action: the irq action chain * @status: status information * @depth: disable-depth, for nested irq_disable() calls * @wake_depth: enable depth, for multiple set_irq_wake() callers * @irq_count: stats field to detect stalled irqs * @last_unhandled: aging timer for unhandled count * @irqs_unhandled: stats field for spurious unhandled interrupts * @lock: locking for SMP * @affinity: IRQ affinity on SMP * @node: node index useful for balancing * @pending_mask: pending rebalanced interrupts * @threads_active: number of irqaction threads currently running * @wait_for_threads: wait queue for sync_irq to wait for threaded handlers * @dir: /proc/irq/ procfs entry * @name: flow handler name for /proc/interrupts output */ struct irq_desc { unsigned int irq; struct timer_rand_state *timer_rand_state; - --[[linux-2.6.33/timer_rand_state]] unsigned int *kstat_irqs; #ifdef CONFIG_INTR_REMAP - --[[linux-2.6.33/CONFIG_INTR_REMAP]] struct irq_2_iommu *irq_2_iommu; - --[[linux-2.6.33/irq_2_iommu]] #endif irq_flow_handler_t handle_irq; - --[[linux-2.6.33/irq_flow_handler_t]] struct irq_chip *chip; - --[[linux-2.6.33/irq_chip]] struct msi_desc *msi_desc; - --[[linux-2.6.33/msi_desc]] void *handler_data; void *chip_data; struct irqaction *action; /* IRQ action list */ - --[[linux-2.6.33/irqaction]] unsigned int status; /* IRQ status */ unsigned int depth; /* nested irq disables */ unsigned int wake_depth; /* nested wake enables */ unsigned int irq_count; /* For detecting broken IRQs */ unsigned long last_unhandled; /* Aging timer for unhandled count */ unsigned int irqs_unhandled; raw_spinlock_t lock; - --[[linux-2.6.33/raw_spinlock_t]] #ifdef CONFIG_SMP - --[[linux-2.6.33/CONFIG_SMP]] cpumask_var_t affinity; - --[[linux-2.6.33/cpumask_var_t]] unsigned int node; #ifdef CONFIG_GENERIC_PENDING_IRQ - --[[linux-2.6.33/CONFIG_GENERIC_PENDING_IRQ]] cpumask_var_t pending_mask; #endif #endif atomic_t threads_active; - --[[linux-2.6.33/atomic_t]] wait_queue_head_t wait_for_threads; - --[[linux-2.6.33/wait_queue_head_t]] #ifdef CONFIG_PROC_FS - --[[linux-2.6.33/CONFIG_PROC_FS]] struct proc_dir_entry *dir; - --[[linux-2.6.33/proc_dir_entry]] #endif const char *name; } ____cacheline_internodealigned_in_smp; - --[[linux-2.6.33/____cacheline_internodealigned_in_smp]] *コメント [#i27bb3eb]