Loading drivers/char/tlclk.c +12 −7 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include <linux/ioport.h> #include <linux/interrupt.h> #include <linux/spinlock.h> #include <linux/smp_lock.h> #include <linux/timer.h> #include <linux/sysfs.h> #include <linux/device.h> Loading Loading @@ -204,11 +205,14 @@ static int tlclk_open(struct inode *inode, struct file *filp) { int result; if (test_and_set_bit(0, &useflags)) return -EBUSY; lock_kernel(); if (test_and_set_bit(0, &useflags)) { result = -EBUSY; /* this legacy device is always one per system and it doesn't * know how to handle multiple concurrent clients. */ goto out; } /* Make sure there is no interrupt pending while * initialising interrupt handler */ Loading @@ -218,13 +222,14 @@ static int tlclk_open(struct inode *inode, struct file *filp) * we can't share this IRQ */ result = request_irq(telclk_interrupt, &tlclk_interrupt, IRQF_DISABLED, "telco_clock", tlclk_interrupt); if (result == -EBUSY) { if (result == -EBUSY) printk(KERN_ERR "tlclk: Interrupt can't be reserved.\n"); return -EBUSY; } else inb(TLCLK_REG6); /* Clear interrupt events */ return 0; out: unlock_kernel(); return result; } static int tlclk_release(struct inode *inode, struct file *filp) Loading Loading
drivers/char/tlclk.c +12 −7 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include <linux/ioport.h> #include <linux/interrupt.h> #include <linux/spinlock.h> #include <linux/smp_lock.h> #include <linux/timer.h> #include <linux/sysfs.h> #include <linux/device.h> Loading Loading @@ -204,11 +205,14 @@ static int tlclk_open(struct inode *inode, struct file *filp) { int result; if (test_and_set_bit(0, &useflags)) return -EBUSY; lock_kernel(); if (test_and_set_bit(0, &useflags)) { result = -EBUSY; /* this legacy device is always one per system and it doesn't * know how to handle multiple concurrent clients. */ goto out; } /* Make sure there is no interrupt pending while * initialising interrupt handler */ Loading @@ -218,13 +222,14 @@ static int tlclk_open(struct inode *inode, struct file *filp) * we can't share this IRQ */ result = request_irq(telclk_interrupt, &tlclk_interrupt, IRQF_DISABLED, "telco_clock", tlclk_interrupt); if (result == -EBUSY) { if (result == -EBUSY) printk(KERN_ERR "tlclk: Interrupt can't be reserved.\n"); return -EBUSY; } else inb(TLCLK_REG6); /* Clear interrupt events */ return 0; out: unlock_kernel(); return result; } static int tlclk_release(struct inode *inode, struct file *filp) Loading