Lines Matching refs:consumer
55 prod->consumer = cons; in __connect()
80 prod->consumer = NULL; in __disconnect()
97 struct irq_bypass_consumer *consumer; in irq_bypass_register_producer() local
111 consumer = xa_load(&consumers, index); in irq_bypass_register_producer()
112 if (consumer) { in irq_bypass_register_producer()
113 ret = __connect(producer, consumer); in irq_bypass_register_producer()
142 if (producer->consumer) in irq_bypass_unregister_producer()
143 __disconnect(producer, producer->consumer); in irq_bypass_unregister_producer()
158 int irq_bypass_register_consumer(struct irq_bypass_consumer *consumer, in irq_bypass_register_consumer() argument
165 if (WARN_ON_ONCE(consumer->eventfd)) in irq_bypass_register_consumer()
168 if (!consumer->add_producer || !consumer->del_producer) in irq_bypass_register_consumer()
173 ret = xa_insert(&consumers, index, consumer, GFP_KERNEL); in irq_bypass_register_consumer()
179 ret = __connect(producer, consumer); in irq_bypass_register_consumer()
181 WARN_ON_ONCE(xa_erase(&consumers, index) != consumer); in irq_bypass_register_consumer()
186 consumer->eventfd = eventfd; in irq_bypass_register_consumer()
199 void irq_bypass_unregister_consumer(struct irq_bypass_consumer *consumer) in irq_bypass_unregister_consumer() argument
201 unsigned long index = (unsigned long)consumer->eventfd; in irq_bypass_unregister_consumer()
203 if (!consumer->eventfd) in irq_bypass_unregister_consumer()
208 if (consumer->producer) in irq_bypass_unregister_consumer()
209 __disconnect(consumer->producer, consumer); in irq_bypass_unregister_consumer()
211 WARN_ON_ONCE(xa_erase(&consumers, index) != consumer); in irq_bypass_unregister_consumer()
212 consumer->eventfd = NULL; in irq_bypass_unregister_consumer()