Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=aa7e5221fb47badbea618cc62704d6e4a4bcce15
Commit:     aa7e5221fb47badbea618cc62704d6e4a4bcce15
Parent:     9fa372a850b9ffcb177eb9ac0b75963b2f9af233
Author:     Jiri Slaby <[EMAIL PROTECTED]>
AuthorDate: Sat Feb 10 01:45:27 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Sun Feb 11 10:51:29 2007 -0800

    [PATCH] Char: moxa, timers cleanup
    
    Use kernel macros and functions for timer encapsulation -- do not access
    fileds directly.  Also del_timer on inactive is legal, so that noting if it
    runs is senseless, delete these variables.
    
    Signed-off-by: Jiri Slaby <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/char/moxa.c |   54 +++++++++++++-------------------------------------
 1 files changed, 14 insertions(+), 40 deletions(-)

diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
index 80a2bdf..84797a0 100644
--- a/drivers/char/moxa.c
+++ b/drivers/char/moxa.c
@@ -210,13 +210,6 @@ module_param_array(numports, int, NULL, 0);
 module_param(ttymajor, int, 0);
 module_param(verbose, bool, 0644);
 
-static struct tty_driver *moxaDriver;
-static struct moxa_str moxaChannels[MAX_PORTS];
-static int moxaTimer_on;
-static struct timer_list moxaTimer;
-static int moxaEmptyTimer_on[MAX_PORTS];
-static struct timer_list moxaEmptyTimer[MAX_PORTS];
-
 /*
  * static functions:
  */
@@ -300,6 +293,10 @@ static const struct tty_operations moxa_ops = {
        .tiocmset = moxa_tiocmset,
 };
 
+static struct tty_driver *moxaDriver;
+static struct moxa_str moxaChannels[MAX_PORTS];
+static DEFINE_TIMER(moxaTimer, moxa_poll, 0, 0);
+static struct timer_list moxaEmptyTimer[MAX_PORTS];
 static DEFINE_SPINLOCK(moxa_lock);
 
 #ifdef CONFIG_PCI
@@ -372,17 +369,11 @@ static int __init moxa_init(void)
                put_tty_driver(moxaDriver);
                return -1;
        }
-       for (i = 0; i < MAX_PORTS; i++) {
-               init_timer(&moxaEmptyTimer[i]);
-               moxaEmptyTimer[i].function = check_xmit_empty;
-               moxaEmptyTimer[i].data = (unsigned long) & moxaChannels[i];
-       }
+       for (i = 0; i < MAX_PORTS; i++)
+               setup_timer(&moxaEmptyTimer[i], check_xmit_empty,
+                               (unsigned long)&moxaChannels[i]);
 
-       init_timer(&moxaTimer);
-       moxaTimer.function = moxa_poll;
-       moxaTimer.expires = jiffies + (HZ / 50);
-       moxaTimer_on = 1;
-       add_timer(&moxaTimer);
+       mod_timer(&moxaTimer, jiffies + HZ / 50);
 
        /* Find the boards defined in source code */
        numBoards = 0;
@@ -468,12 +459,10 @@ static void __exit moxa_exit(void)
        if (verbose)
                printk("Unloading module moxa ...\n");
 
-       if (moxaTimer_on)
-               del_timer(&moxaTimer);
+       del_timer(&moxaTimer);
 
        for (i = 0; i < MAX_PORTS; i++)
-               if (moxaEmptyTimer_on[i])
-                       del_timer(&moxaEmptyTimer[i]);
+               del_timer(&moxaEmptyTimer[i]);
 
        if (tty_unregister_driver(moxaDriver))
                printk("Couldn't unregister MOXA Intellio family serial 
driver\n");
@@ -589,7 +578,6 @@ static void moxa_close(struct tty_struct *tty, struct file 
*filp)
        if (ch->asyncflags & ASYNC_INITIALIZED) {
                setup_empty_event(tty);
                tty_wait_until_sent(tty, 30 * HZ);      /* 30 seconds timeout */
-               moxaEmptyTimer_on[ch->port] = 0;
                del_timer(&moxaEmptyTimer[ch->port]);
        }
        shut_down(ch);
@@ -885,14 +873,10 @@ static void moxa_poll(unsigned long ignored)
        struct tty_struct *tp;
        int i, ports;
 
-       moxaTimer_on = 0;
        del_timer(&moxaTimer);
 
        if (MoxaDriverPoll() < 0) {
-               moxaTimer.function = moxa_poll;
-               moxaTimer.expires = jiffies + (HZ / 50);
-               moxaTimer_on = 1;
-               add_timer(&moxaTimer);
+               mod_timer(&moxaTimer, jiffies + HZ / 50);
                return;
        }
        for (card = 0; card < MAX_BOARDS; card++) {
@@ -932,10 +916,7 @@ static void moxa_poll(unsigned long ignored)
                }
        }
 
-       moxaTimer.function = moxa_poll;
-       moxaTimer.expires = jiffies + (HZ / 50);
-       moxaTimer_on = 1;
-       add_timer(&moxaTimer);
+       mod_timer(&moxaTimer, jiffies + HZ / 50);
 }
 
 
/******************************************************************************/
@@ -1062,11 +1043,7 @@ static void setup_empty_event(struct tty_struct *tty)
 
        spin_lock_irqsave(&moxa_lock, flags);
        ch->statusflags |= EMPTYWAIT;
-       moxaEmptyTimer_on[ch->port] = 0;
-       del_timer(&moxaEmptyTimer[ch->port]);
-       moxaEmptyTimer[ch->port].expires = jiffies + HZ;
-       moxaEmptyTimer_on[ch->port] = 1;
-       add_timer(&moxaEmptyTimer[ch->port]);
+       mod_timer(&moxaEmptyTimer[ch->port], jiffies + HZ);
        spin_unlock_irqrestore(&moxa_lock, flags);
 }
 
@@ -1075,7 +1052,6 @@ static void check_xmit_empty(unsigned long data)
        struct moxa_str *ch;
 
        ch = (struct moxa_str *) data;
-       moxaEmptyTimer_on[ch->port] = 0;
        del_timer(&moxaEmptyTimer[ch->port]);
        if (ch->tty && (ch->statusflags & EMPTYWAIT)) {
                if (MoxaPortTxQueue(ch->port) == 0) {
@@ -1083,9 +1059,7 @@ static void check_xmit_empty(unsigned long data)
                        tty_wakeup(ch->tty);
                        return;
                }
-               moxaEmptyTimer[ch->port].expires = jiffies + HZ;
-               moxaEmptyTimer_on[ch->port] = 1;
-               add_timer(&moxaEmptyTimer[ch->port]);
+               mod_timer(&moxaEmptyTimer[ch->port], jiffies + HZ);
        } else
                ch->statusflags &= ~EMPTYWAIT;
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to