/** * irq_clear_pending - clear the irq pending * @channel: same as irq_init() channel */ void irq_clear_pending(unsigned int channel) { switch(irq_class(channel)) { case ic_timer: timer_clear_pending(irq_minor(channel)); break; } }
/** * irq_init - set interrupt service routine * * @channel: irq channel, define in irq.h * @func: isr function */ int irq_init(unsigned int channel, irq_func_t func) { pr_info("IRF(%x) address 0x%p\n", channel, func); switch(irq_class(channel)) { case ic_ext: irq_set_ext(irq_minor(channel), func); break; case ic_timer: irq_set_timer(irq_minor(channel), func); break; case ic_uart: irq_set_uart(irq_minor(channel), func); break; default: pr_err("unknown irq channel class! 0x%p\n", channel); break; } return 0; }
extern inline uint irq_file(const File* file) { return irq_minor(FILE_MINOR(file)); }
extern inline uint irq_inode(const Inode* inode) { return irq_minor(INODE_MINOR(inode)); }