synclink.c 2.5.41

synclink.c 2.5.41

Post by Paul Fulghu » Fri, 11 Oct 2002 21:20:06



* Remove cli()/restore()
* Use time_after() macro for jiffie wrap
* Remove unecessary printk

Please apply

Paul Fulghum

--- linux-2.5.41/drivers/char/synclink.c        Thu Oct 10 09:56:24 2002

 /*
  * linux/drivers/char/synclink.c
  *
- * $Id: synclink.c,v 4.2 2002/04/10 20:45:13 paulkf Exp $
+ * $Id: synclink.c,v 4.4 2002/10/10 14:53:36 paulkf Exp $
  *
  * Device driver for Microgate SyncLink ISA and PCI

 MODULE_PARM(txholdbufs,"1-" __MODULE_STRING(MAX_TOTAL_DEVICES) "i");

 static char *driver_name = "SyncLink serial driver";
-static char *driver_version = "$Revision: 4.2 $";
+static char *driver_version = "$Revision: 4.4 $";

 static int synclink_init_one (struct pci_dev *dev,

                        schedule_timeout(char_time);
                        if (signal_pending(current))
                                break;
-                       if (timeout && ((orig_jiffies + timeout) < jiffies))
+                       if (timeout && time_after(jiffies, orig_jiffies + timeout))
                                break;
                }

                        schedule_timeout(char_time);
                        if (signal_pending(current))
                                break;
-                       if (timeout && ((orig_jiffies + timeout) < jiffies))
+                       if (timeout && time_after(jiffies, orig_jiffies + timeout))
                                break;
                }

                printk("%s(%d):block_til_ready before block on %s count=%d\n",
                         __FILE__,__LINE__, tty->driver.name, info->count );

-       save_flags(flags); cli();
+       spin_lock_irqsave(&info->irq_spinlock, flags);
        if (!tty_hung_up_p(filp)) {
                extra_count = 1;
                info->count--;
        }
-       restore_flags(flags);
+       spin_unlock_irqrestore(&info->irq_spinlock, flags);
        info->blocked_open++;


 static void __exit synclink_exit(void)
 {
-       unsigned long flags;
        int rc;
        struct mgsl_struct *info;
        struct mgsl_struct *tmp;

        printk("Unloading %s: %s\n", driver_name, driver_version);
-       save_flags(flags);
-       cli();
+
        if ((rc = tty_unregister_driver(&serial_driver)))
                printk("%s(%d) failed to unregister tty driver err=%d\n",
                       __FILE__,__LINE__,rc);
        if ((rc = tty_unregister_driver(&callout_driver)))
                printk("%s(%d) failed to unregister callout driver err=%d\n",
                       __FILE__,__LINE__,rc);
-       restore_flags(flags);

        info = mgsl_device_list;

        EndTime = jiffies + jiffies_from_ms(100);

        for(;;) {
-               if ( jiffies > EndTime ) {
+               if (time_after(jiffies, EndTime)) {
                        rc = FALSE;
                        break;

        EndTime = jiffies + jiffies_from_ms(100);

        for(;;) {
-               if ( jiffies > EndTime ) {
+               if (time_after(jiffies, EndTime)) {
                        rc = FALSE;
                        break;

                spin_unlock_irqrestore(&info->irq_spinlock,flags);

                while ( !(status & (BIT6+BIT5+BIT4+BIT2+BIT1)) ) {
-                       if ( jiffies > EndTime ) {
+                       if (time_after(jiffies, EndTime)) {
                                rc = FALSE;
                                break;

                /* Wait for 16C32 to write receive status to buffer entry. */
                status=info->rx_buffer_list[0].status;
                while ( status == 0 ) {
-                       if ( jiffies > EndTime ) {
-                       printk(KERN_ERR"mark 4\n");
+                       if (time_after(jiffies, EndTime)) {
                                rc = FALSE;
                                break;
                        }

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/