Lines Matching +full:interrupt +full:- +full:affinity
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* interrupt.h */
24 * linux/ioport.h to select the interrupt line behaviour. When
25 * requesting an interrupt without specifying a IRQF_TRIGGER, the
42 * IRQF_SHARED - allow sharing the irq among several devices
43 * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur
44 * IRQF_TIMER - Flag to mark this interrupt as timer interrupt
45 * IRQF_PERCPU - Interrupt is per cpu
46 * IRQF_NOBALANCING - Flag to exclude this interrupt from irq balancing
47 * IRQF_IRQPOLL - Interrupt is used for polling (only the interrupt that is
48 * registered first in a shared interrupt is considered for
50 * IRQF_ONESHOT - Interrupt is not reenabled after the hardirq handler finished.
53 * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee
54 * that this interrupt will wake the system from a suspended
55 * state. See Documentation/power/suspend-and-interrupts.rst
56 * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set
57 * IRQF_NO_THREAD - Interrupt cannot be threaded
58 * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
60 * IRQF_COND_SUSPEND - If the IRQ is shared with a NO_SUSPEND user, execute this
61 * interrupt handler after suspending interrupts. For system
63 * their interrupt handlers.
82 * describe the context the interrupt will be run in.
84 * IRQC_IS_HARDIRQ - interrupt runs in hardirq context
85 * IRQC_IS_NESTED - interrupt runs in a nested threaded context
95 * struct irqaction - per interrupt action descriptor
96 * @handler: interrupt handler function
101 * @irq: interrupt number
103 * @thread_fn: interrupt handler function for threaded interrupts
129 * If a (PCI) device interrupt is not connected we set dev->irq to
130 * IRQ_NOTCONNECTED. This causes request_irq() to fail with -ENOTCONN, so we
144 * request_irq - Add a handler for an interrupt line
145 * @irq: The interrupt line to allocate
150 * @name: Name of the device generating this interrupt
153 * This call allocates an interrupt and establishes a handler; see
225 * on hardirq delivery - in practice we dont seem to have such
227 * irqs-off latencies.
259 * struct irq_affinity_notify - context for notification of IRQ affinity changes
260 * @irq: Interrupt to which notification applies
281 * struct irq_affinity - Description for automatic irq affinity assignements
282 * @pre_vectors: Don't apply affinity to @pre_vectors at beginning of
283 * the MSI(-X) vector space
284 * @post_vectors: Don't apply affinity to @post_vectors at end of
285 * the MSI(-X) vector space
286 * @nr_sets: The number of interrupt sets for which affinity
288 * @set_size: Array holding the size of each interrupt set
290 * of interrupt sets
304 * struct irq_affinity_desc - Interrupt affinity descriptor
305 * @mask: cpumask to hold the affinity assignment
306 * @is_managed: 1 if the interrupt is managed internally
322 * irq_set_affinity - Set the irq affinity of a given irq
323 * @irq: Interrupt to set affinity
335 * irq_force_affinity - Force the irq affinity of a given irq
336 * @irq: Interrupt to set affinity
369 return -EINVAL; in irq_set_affinity()
387 return -EINVAL; in irq_set_affinity_hint()
415 * and which is the only irq-context user of a lock,
416 * that it's safe to take the lock in the irq-disabled
479 IRQCHIP_STATE_PENDING, /* Is interrupt pending? */
480 IRQCHIP_STATE_ACTIVE, /* Is interrupt in progress? */
481 IRQCHIP_STATE_MASKED, /* Is interrupt masked? */
586 /* Tasklets --- multithreaded analogue of BHs.
660 return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state); in tasklet_trylock()
666 clear_bit(TASKLET_STATE_RUN, &(t)->state); in tasklet_unlock()
671 while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { barrier(); } in tasklet_unlock_wait()
683 if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) in tasklet_schedule()
691 if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) in tasklet_hi_schedule()
697 atomic_inc(&t->count); in tasklet_disable_nosync()
711 atomic_dec(&t->count); in tasklet_enable()
732 * 1. clear and/or mask the device's internal interrupt.
735 * 4. enable the device and cause it to trigger an interrupt.
736 * 5. wait for the device to interrupt, using non-intrusive polling or a delay.
738 * 7. service the device to clear its pending interrupt.