Lines Matching +full:poll +full:- +full:only
1 // SPDX-License-Identifier: GPL-2.0
3 * Functions related to interrupt-poll handling in the block layer. This
20 * irq_poll_sched - Schedule a run of the iopoll handler
24 * Add this irq_poll structure to the pending poll list and trigger the
31 if (test_bit(IRQ_POLL_F_DISABLE, &iop->state)) in irq_poll_sched()
33 if (test_and_set_bit(IRQ_POLL_F_SCHED, &iop->state)) in irq_poll_sched()
37 list_add_tail(&iop->list, this_cpu_ptr(&blk_cpu_iopoll)); in irq_poll_sched()
44 * __irq_poll_complete - Mark this @iop as un-polled again
53 list_del(&iop->list); in __irq_poll_complete()
55 clear_bit_unlock(IRQ_POLL_F_SCHED, &iop->state); in __irq_poll_complete()
59 * irq_poll_complete - Mark this @iop as un-polled again
100 /* Even though interrupts have been re-enabled, this in irq_poll_softirq()
101 * access is safe because interrupts can only add new in irq_poll_softirq()
102 * entries to the tail of this list, and only ->poll() in irq_poll_softirq()
105 iop = list_entry(list->next, struct irq_poll, list); in irq_poll_softirq()
107 weight = iop->weight; in irq_poll_softirq()
109 if (test_bit(IRQ_POLL_F_SCHED, &iop->state)) in irq_poll_softirq()
110 work = iop->poll(iop, weight); in irq_poll_softirq()
112 budget -= work; in irq_poll_softirq()
122 * move the instance around on the list at-will. in irq_poll_softirq()
125 if (test_bit(IRQ_POLL_F_DISABLE, &iop->state)) in irq_poll_softirq()
128 list_move_tail(&iop->list, list); in irq_poll_softirq()
139 * irq_poll_disable - Disable iopoll on this @iop
147 set_bit(IRQ_POLL_F_DISABLE, &iop->state); in irq_poll_disable()
148 while (test_and_set_bit(IRQ_POLL_F_SCHED, &iop->state)) in irq_poll_disable()
150 clear_bit(IRQ_POLL_F_DISABLE, &iop->state); in irq_poll_disable()
155 * irq_poll_enable - Enable iopoll on this @iop
160 * scheduled, it will only mark it as active.
164 BUG_ON(!test_bit(IRQ_POLL_F_SCHED, &iop->state)); in irq_poll_enable()
166 clear_bit_unlock(IRQ_POLL_F_SCHED, &iop->state); in irq_poll_enable()
171 * irq_poll_init - Initialize this @iop
182 INIT_LIST_HEAD(&iop->list); in irq_poll_init()
183 iop->weight = weight; in irq_poll_init()
184 iop->poll = poll_fn; in irq_poll_init()