1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2dd3a1db9SThomas Gleixner #ifndef _LINUX_IRQNR_H 3dd3a1db9SThomas Gleixner #define _LINUX_IRQNR_H 4dd3a1db9SThomas Gleixner 5607ca46eSDavid Howells #include <uapi/linux/irqnr.h> 6607ca46eSDavid Howells 70ebb26e7SIngo Molnar 80ebb26e7SIngo Molnar extern int nr_irqs; 9f9af0e70SKOSAKI Motohiro extern struct irq_desc *irq_to_desc(unsigned int irq); 10a98d24b7SThomas Gleixner unsigned int irq_get_next_irq(unsigned int offset); 110ebb26e7SIngo Molnar 12240d367bSYinghai Lu # define for_each_irq_desc(irq, desc) \ 13f9af0e70SKOSAKI Motohiro for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs; \ 1418eefedfSKOSAKI Motohiro irq++, desc = irq_to_desc(irq)) \ 1501d07820SKOSAKI Motohiro if (!desc) \ 1601d07820SKOSAKI Motohiro ; \ 1701d07820SKOSAKI Motohiro else 1818eefedfSKOSAKI Motohiro 1918eefedfSKOSAKI Motohiro 20240d367bSYinghai Lu # define for_each_irq_desc_reverse(irq, desc) \ 21f9af0e70SKOSAKI Motohiro for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0; \ 2218eefedfSKOSAKI Motohiro irq--, desc = irq_to_desc(irq)) \ 2301d07820SKOSAKI Motohiro if (!desc) \ 2401d07820SKOSAKI Motohiro ; \ 2501d07820SKOSAKI Motohiro else 26f9af0e70SKOSAKI Motohiro 27a98d24b7SThomas Gleixner # define for_each_active_irq(irq) \ 28a98d24b7SThomas Gleixner for (irq = irq_get_next_irq(0); irq < nr_irqs; \ 29a98d24b7SThomas Gleixner irq = irq_get_next_irq(irq + 1)) 30a98d24b7SThomas Gleixner 31240d367bSYinghai Lu #define for_each_irq_nr(irq) \ 32240d367bSYinghai Lu for (irq = 0; irq < nr_irqs; irq++) 33dd3a1db9SThomas Gleixner 34dd3a1db9SThomas Gleixner #endif 35