irq.c (a5ab7c8467f1934236e33d5fa1c3c6de831a6648) | irq.c (68f5d3f3b6543266b29e047cfaf9842333019b4c) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2017 - Cambridge Greys Ltd 4 * Copyright (C) 2011 - 2014 Cisco Systems Inc 5 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 6 * Derived (i.e. mostly copied) from arch/i386/kernel/irq.c: 7 * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar 8 */ --- 42 unchanged lines hidden (view full) --- 51 int fd; 52 struct irq_reg reg[NUM_IRQ_TYPES]; 53 bool suspended; 54 bool sigio_workaround; 55}; 56 57static DEFINE_SPINLOCK(irq_lock); 58static LIST_HEAD(active_fds); | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2017 - Cambridge Greys Ltd 4 * Copyright (C) 2011 - 2014 Cisco Systems Inc 5 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 6 * Derived (i.e. mostly copied) from arch/i386/kernel/irq.c: 7 * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar 8 */ --- 42 unchanged lines hidden (view full) --- 51 int fd; 52 struct irq_reg reg[NUM_IRQ_TYPES]; 53 bool suspended; 54 bool sigio_workaround; 55}; 56 57static DEFINE_SPINLOCK(irq_lock); 58static LIST_HEAD(active_fds); |
59static DECLARE_BITMAP(irqs_allocated, NR_IRQS); | 59static DECLARE_BITMAP(irqs_allocated, UM_LAST_SIGNAL_IRQ); |
60static bool irqs_suspended; 61 62static void irq_io_loop(struct irq_reg *irq, struct uml_pt_regs *regs) 63{ 64/* 65 * irq->active guards against reentry 66 * irq->pending accumulates pending requests 67 * if pending is raised the irq_handler is re-run --- 346 unchanged lines hidden (view full) --- 414 generic_handle_irq(irq); 415 irq_exit(); 416 set_irq_regs(old_regs); 417 return 1; 418} 419 420void um_free_irq(int irq, void *dev) 421{ | 60static bool irqs_suspended; 61 62static void irq_io_loop(struct irq_reg *irq, struct uml_pt_regs *regs) 63{ 64/* 65 * irq->active guards against reentry 66 * irq->pending accumulates pending requests 67 * if pending is raised the irq_handler is re-run --- 346 unchanged lines hidden (view full) --- 414 generic_handle_irq(irq); 415 irq_exit(); 416 set_irq_regs(old_regs); 417 return 1; 418} 419 420void um_free_irq(int irq, void *dev) 421{ |
422 if (WARN(irq < 0 || irq > NR_IRQS, "freeing invalid irq %d", irq)) | 422 if (WARN(irq < 0 || irq > UM_LAST_SIGNAL_IRQ, 423 "freeing invalid irq %d", irq)) |
423 return; 424 425 free_irq_by_irq_and_dev(irq, dev); 426 free_irq(irq, dev); 427 clear_bit(irq, irqs_allocated); 428} 429EXPORT_SYMBOL(um_free_irq); 430 --- 212 unchanged lines hidden (view full) --- 643}; 644 645void __init init_IRQ(void) 646{ 647 int i; 648 649 irq_set_chip_and_handler(TIMER_IRQ, &alarm_irq_type, handle_edge_irq); 650 | 424 return; 425 426 free_irq_by_irq_and_dev(irq, dev); 427 free_irq(irq, dev); 428 clear_bit(irq, irqs_allocated); 429} 430EXPORT_SYMBOL(um_free_irq); 431 --- 212 unchanged lines hidden (view full) --- 644}; 645 646void __init init_IRQ(void) 647{ 648 int i; 649 650 irq_set_chip_and_handler(TIMER_IRQ, &alarm_irq_type, handle_edge_irq); 651 |
651 for (i = 1; i < NR_IRQS; i++) | 652 for (i = 1; i < UM_LAST_SIGNAL_IRQ; i++) |
652 irq_set_chip_and_handler(i, &normal_irq_type, handle_edge_irq); 653 /* Initialize EPOLL Loop */ 654 os_setup_epoll(); 655} 656 657/* 658 * IRQ stack entry and exit: 659 * --- 108 unchanged lines hidden --- | 653 irq_set_chip_and_handler(i, &normal_irq_type, handle_edge_irq); 654 /* Initialize EPOLL Loop */ 655 os_setup_epoll(); 656} 657 658/* 659 * IRQ stack entry and exit: 660 * --- 108 unchanged lines hidden --- |