* Add handler to interrupt source. */
| 688 | * Add handler to interrupt source. |
| 689 | */ |
| 690 | static int |
| 691 | isrc_add_handler(struct intr_irqsrc *isrc, const char *name, |
| 692 | driver_filter_t filter, driver_intr_t handler, void *arg, |
| 693 | enum intr_type flags, void **cookiep) |
| 694 | { |
| 695 | int error; |
| 696 | |
| 697 | if (isrc->isrc_event == NULL) { |
| 698 | error = isrc_event_create(isrc); |
| 699 | if (error) |
| 700 | return (error); |
| 701 | } |
| 702 | |
| 703 | error = intr_event_add_handler(isrc->isrc_event, name, filter, handler, |
| 704 | arg, intr_priority(flags), flags, cookiep); |
| 705 | if (error == 0) { |
| 706 | mtx_lock(&isrc_table_lock); |
| 707 | intrcnt_updatename(isrc); |
| 708 | mtx_unlock(&isrc_table_lock); |
| 709 | } |
| 710 | |
| 711 | return (error); |
| 712 | } |
| 713 | |
| 714 | /* |
| 715 | * Lookup interrupt controller locked. |
no test coverage detected