Variable comtimer_active is used uninitialized. What's the chance of this variable getting the value FALSE? I suggest a removal of the code that deals with this variable.
But, on the other hand, this may not be a good solution. Maybe the variable should be initialized to FALSE, meaning that the comtimer() has not been called, and then write at the return of comtimer(): comtimer_active = FALSE; I don't really know what is better. * i386/i386at/com.c (comtimer_active): Remove variable. Remove check for !comtimer_active. (comtimer): Remove function. * i386/i386at/com.h (comtimer): Remove prototype. --- i386/i386at/com.c | 33 --------------------------------- i386/i386at/com.h | 2 -- 2 files changed, 35 deletions(-) diff --git a/i386/i386at/com.c b/i386/i386at/com.c index 90e1d0b..62aa85c 100644 --- a/i386/i386at/com.c +++ b/i386/i386at/com.c @@ -64,7 +64,6 @@ struct tty com_tty[NCOM]; int commodem[NCOM]; int comcarrier[NCOM] = {0, 0,}; boolean_t comfifo[NCOM]; -boolean_t comtimer_active; int comtimer_state[NCOM]; #define RCBAUD B9600 @@ -387,11 +386,6 @@ io_return_t comopen( result = char_open(dev, tp, flag, ior); - if (!comtimer_active) { - comtimer_active = TRUE; - comtimer(NULL); - } - s = spltty(); while(!(inb(INTR_ID(addr))&1)) { /* while pending interrupts */ (void) inb(LINE_STAT (addr)); /* reset overrun error */ @@ -667,33 +661,6 @@ comst_4++; #endif } -/* Check for stuck xmitters */ -int comtimer_interval = 5; - -void -comtimer(void * param) -{ - spl_t s = spltty(); - struct tty *tp = com_tty; - int i, nch; - - for (i = 0; i < NCOM; i++, tp++) { - if ((tp->t_state & TS_ISOPEN) == 0) - continue; - if (!tp->t_outq.c_cc) - continue; - if (++comtimer_state[i] < 2) - continue; - /* Its stuck */ -printf("Tty %p was stuck\n", tp); - nch = getc(&tp->t_outq); - outb(TXRX((int)tp->t_addr), nch); - } - - splx(s); - timeout(comtimer, 0, comtimer_interval*hz); -} - /* * Set receive modem state from modem status register. */ diff --git a/i386/i386at/com.h b/i386/i386at/com.h index 49f23ee..8179b39 100644 --- a/i386/i386at/com.h +++ b/i386/i386at/com.h @@ -34,8 +34,6 @@ */ extern void fix_modem_state(int unit, int modem_stat); -extern void comtimer(void * param); - /* * Modem change (input signals) */ -- 1.8.1.4