#include #include #include #include #include size_t tcount = 0; irq_handler_t irq_handler (int irq, void *dev_id, struct pt_regs *regs) { tcount++; return (irq_handler_t) IRQ_HANDLED; } ssize_t read_proc(struct file* filp, char *buf, size_t count, loff_t *offp){ char message[128]; sprintf(message, "Total Calls: %ld\n", tcount); strcpy(buf, message); return count; } struct file_operations pfo = { read : read_proc, write: 0 }; int startthings (void){ int err = request_irq (, (irq_handler_t) irq_handler, IRQF_SHARED, "netmon", (void *)(irq_handler)); if(err){ printk(KERN_INFO "Received error %d\n", err); } proc_create("netmon", 0, NULL, &pfo); return err; } void cleanup(void){ remove_proc_entry("netmon", NULL); } MODULE_LICENSE ("GPL"); module_init(startthings); module_exit(cleanup);