Author: mmel Date: Sat Nov 7 14:58:01 2020 New Revision: 367447 URL: https://svnweb.freebsd.org/changeset/base/367447
Log: Add a method to determine whether given interrupt is per CPU or not. MFC after: 2 weeks Modified: head/sys/kern/subr_intr.c head/sys/sys/intr.h Modified: head/sys/kern/subr_intr.c ============================================================================== --- head/sys/kern/subr_intr.c Sat Nov 7 13:16:11 2020 (r367446) +++ head/sys/kern/subr_intr.c Sat Nov 7 14:58:01 2020 (r367447) @@ -946,6 +946,21 @@ intr_resolve_irq(device_t dev, intptr_t xref, struct i } } +bool +intr_is_per_cpu(struct resource *res) +{ + u_int res_id; + struct intr_irqsrc *isrc; + + res_id = (u_int)rman_get_start(res); + isrc = intr_map_get_isrc(res_id); + + if (isrc == NULL) + panic("Attempt to get isrc for non-active resource id: %u\n", + res_id); + return ((isrc->isrc_flags & INTR_ISRCF_PPI) != 0); +} + int intr_activate_irq(device_t dev, struct resource *res) { Modified: head/sys/sys/intr.h ============================================================================== --- head/sys/sys/intr.h Sat Nov 7 13:16:11 2020 (r367446) +++ head/sys/sys/intr.h Sat Nov 7 14:58:01 2020 (r367447) @@ -115,6 +115,7 @@ int intr_pic_deregister(device_t, intptr_t); int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *, u_int); struct intr_pic *intr_pic_add_handler(device_t, struct intr_pic *, intr_child_irq_filter_t *, void *, uintptr_t, uintptr_t); +bool intr_is_per_cpu(struct resource *); extern device_t intr_irq_root_dev; _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"