+static inline int
+irq_alloc_id(struct irq_domain* domain, irq_t irq, int start, int end)
+{
+ unsigned int irq_id;
+
+ if (irq->vector != IRQ_VECTOR_UNSET) {
+ return EEXIST;
+ }
+
+ irq_id = (unsigned int)btrie_map(&domain->irq_map, start, end, irq);
+ if (irq_id == -1U) {
+ return E2BIG;
+ }
+
+ irq->vector = irq;
+ return 0;
+}
+