*参照元 [#cfbef5c9] #backlinks *説明 [#o484c6bd] -パス: [[linux-4.4.1/include/linux/irqdesc.h]] -FIXME: これは何? --説明 **参考 [#gb51c3e5] *実装 [#ubdfb22d] /** * struct irq_desc - interrupt descriptor * @irq_common_data: per irq and chip data passed down to chip functions * @kstat_irqs: irq stats per cpu * @handle_irq: highlevel irq-events handler * @preflow_handler: handler called before the flow handler (currently used by sparc) * @action: the irq action chain * @status: status information * @core_internal_state__do_not_mess_with_it: core internal status information * @depth: disable-depth, for nested irq_disable() calls * @wake_depth: enable depth, for multiple irq_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 * @threads_handled: stats field for deferred spurious detection of threaded handlers * @threads_handled_last: comparator field for deferred spurious detection of theraded handlers * @lock: locking for SMP * @affinity_hint: hint to user space for preferred irq affinity * @affinity_notify: context for notification of affinity changes * @pending_mask: pending rebalanced interrupts * @threads_oneshot: bitfield to handle shared oneshot threads * @threads_active: number of irqaction threads currently running * @wait_for_threads: wait queue for sync_irq to wait for threaded handlers * @nr_actions: number of installed actions on this descriptor * @no_suspend_depth: number of irqactions on a irq descriptor with * IRQF_NO_SUSPEND set * @force_resume_depth: number of irqactions on a irq descriptor with * IRQF_FORCE_RESUME set * @dir: /proc/irq/ procfs entry * @name: flow handler name for /proc/interrupts output */ struct irq_desc { struct irq_common_data irq_common_data; struct irq_data irq_data; - --[[linux-4.4.1/irq_common_data]] --[[linux-4.4.1/irq_data]] unsigned int __percpu *kstat_irqs; irq_flow_handler_t handle_irq; - --[[linux-4.4.1/irq_flow_handler_t]] #ifdef CONFIG_IRQ_PREFLOW_FASTEOI - --[[linux-4.4.1/CONFIG_IRQ_PREFLOW_FASTEOI]] irq_preflow_handler_t preflow_handler; - --[[linux-4.4.1/irq_preflow_handler_t]] #endif struct irqaction *action; /* IRQ action list */ - --[[linux-4.4.1/irqaction]] unsigned int status_use_accessors; unsigned int core_internal_state__do_not_mess_with_it; 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; atomic_t threads_handled; - --[[linux-4.4.1/atomic_t]] int threads_handled_last; raw_spinlock_t lock; - --[[linux-4.4.1/raw_spinlock_t]] struct cpumask *percpu_enabled; - --[[linux-4.4.1/cpumask]] #ifdef CONFIG_SMP - --[[linux-4.4.1/CONFIG_SMP]] const struct cpumask *affinity_hint; struct irq_affinity_notify *affinity_notify; - --[[linux-4.4.1/cpumask]] --[[linux-4.4.1/irq_affinity_notify]] #ifdef CONFIG_GENERIC_PENDING_IRQ - --[[linux-4.4.1/CONFIG_GENERIC_PENDING_IRQ]] cpumask_var_t pending_mask; - --[[linux-4.4.1/cpumask_var_t]] #endif #endif unsigned long threads_oneshot; atomic_t threads_active; wait_queue_head_t wait_for_threads; - --[[linux-4.4.1/wait_queue_head_t]] #ifdef CONFIG_PM_SLEEP - --[[linux-4.4.1/CONFIG_PM_SLEEP]] unsigned int nr_actions; unsigned int no_suspend_depth; unsigned int cond_suspend_depth; unsigned int force_resume_depth; #endif #ifdef CONFIG_PROC_FS - --[[linux-4.4.1/CONFIG_PROC_FS]] struct proc_dir_entry *dir; - --[[linux-4.4.1/proc_dir_entry]] #endif int parent_irq; struct module *owner; - --[[linux-4.4.1/module]] const char *name; } ____cacheline_internodealigned_in_smp; - --[[linux-4.4.1/____cacheline_internodealigned_in_smp]] *コメント [#b4a38b61]