#include #include #include #include MODULE_LICENSE("mine"); size_t count = 0; size_t last_fib; ssize_t proc_read(struct file *fp, char *user_buffer, size_t ub_size, loff_t *offp ){ if(*offp) return 0; { size_t readlen = snprintf(user_buffer, ub_size, "Interrupts: %lu\n", count); *offp += readlen; return readlen; } } struct proc_ops operations = { proc_read: proc_read }; irq_handler_t keyboard_interrupt_action (int irq, void *dev_id, struct pt_regs *regs){ printk("We have interrupt 1"); count++; return (irq_handler_t) IRQ_HANDLED; } int init_module() { request_irq(1, (irq_handler_t)keyboard_interrupt_action, IRQF_DISABLED, "Our IRQ Handler", (void*)keyboard_interrupt_action); proc_create("irqcount", 0, 0, &operations); return 0; } void cleanup_module() { free_irq(1, (void*)keyboard_interrupt_action); remove_proc_entry("irqcount", 0); }