if (tty->read_cnt >= N_TTY_BUF_SIZE-1) { 
if (tty->read_cnt >= N_TTY_BUF_SIZE-1) 
static inline void n_tty_receive_char(struct tty_struct *tty, unsigned char c){	unsigned long flags;	if (tty->raw) {		put_tty_queue(c, tty);		return;	}		if (tty->stopped && !tty->flow_stopped &&	    I_IXON(tty) && I_IXANY(tty)) {		start_tty(tty);		return;	}		if (I_ISTRIP(tty))		c &= 0x7f;	if (I_IUCLC(tty) && L_IEXTEN(tty))		c=tolower(c);	if (tty->closing) {		if (I_IXON(tty)) {			if (c == START_CHAR(tty))				start_tty(tty);			else if (c == STOP_CHAR(tty))				stop_tty(tty);		}		return;	}	/*	 * If the previous character was LNEXT, or we know that this	 * character is not one of the characters that we'll have to	 * handle specially, do shortcut processing to speed things	 * up.	 */	if (!test_bit(c, tty->process_char_map) || tty->lnext) {		finish_erasing(tty);		tty->lnext = 0;		if (L_ECHO(tty)) {			if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {				put_char('\a', tty); /* beep if no space */				return;			}			/* Record the column of first canon char. */			if (tty->canon_head == tty->read_head)				tty->canon_column = tty->column;			echo_char(c, tty);		}		if (I_PARMRK(tty) && c == (unsigned char) '\377')			put_tty_queue(c, tty);		put_tty_queue(c, tty);		return;	}			if (c == '\r') {		if (I_IGNCR(tty))			return;		if (I_ICRNL(tty))			c = '\n';	} else if (c == '\n' && I_INLCR(tty))		c = '\r';	if (I_IXON(tty)) {		if (c == START_CHAR(tty)) {			start_tty(tty);			return;		}		if (c == STOP_CHAR(tty)) {			stop_tty(tty);			return;		}	}	if (L_ISIG(tty)) {		int signal;		signal = SIGINT;		if (c == INTR_CHAR(tty))			goto send_signal;		signal = SIGQUIT;		if (c == QUIT_CHAR(tty))			goto send_signal;		signal = SIGTSTP;		if (c == SUSP_CHAR(tty)) {send_signal:			isig(signal, tty, 0);			return;		}	}	if (tty->icanon) {		if (c == ERASE_CHAR(tty) || c == KILL_CHAR(tty) ||		    (c == WERASE_CHAR(tty) && L_IEXTEN(tty))) {			eraser(c, tty);			return;		}		if (c == LNEXT_CHAR(tty) && L_IEXTEN(tty)) {			tty->lnext = 1;			if (L_ECHO(tty)) {				finish_erasing(tty);				if (L_ECHOCTL(tty)) {					put_char('^', tty);					put_char('\b', tty);				}			}			return;		}		if (c == REPRINT_CHAR(tty) && L_ECHO(tty) &&		    L_IEXTEN(tty)) {			unsigned long tail = tty->canon_head;			finish_erasing(tty);			echo_char(c, tty);			opost('\n', tty);			while (tail != tty->read_head) {				echo_char(tty->read_buf[tail], tty);				tail = (tail+1) & (N_TTY_BUF_SIZE-1);			}			return;		}		if (c == '\n') {			if (L_ECHO(tty) || L_ECHONL(tty)) {				if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {					put_char('\a', tty);					return;				}				opost('\n', tty);			}			goto handle_newline;		}		if (c == EOF_CHAR(tty)) {		        if (tty->canon_head != tty->read_head)			        set_bit(TTY_PUSH, &tty->flags);			c = __DISABLED_CHAR;			goto handle_newline;		}		if ((c == EOL_CHAR(tty)) ||		    (c == EOL2_CHAR(tty) && L_IEXTEN(tty))) {			/*			 * XXX are EOL_CHAR and EOL2_CHAR echoed?!?			 */			if (L_ECHO(tty)) {				if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {					put_char('\a', tty);					return;				}				/* Record the column of first canon char. */				if (tty->canon_head == tty->read_head)					tty->canon_column = tty->column;				echo_char(c, tty);			}			/*			 * XXX does PARMRK doubling happen for			 * EOL_CHAR and EOL2_CHAR?			 */			if (I_PARMRK(tty) && c == (unsigned char) '\377')				put_tty_queue(c, tty);		handle_newline:			spin_lock_irqsave(&tty->read_lock, flags);			set_bit(tty->read_head, tty->read_flags);			put_tty_queue_nolock(c, tty);			tty->canon_head = tty->read_head;			tty->canon_data++;			spin_unlock_irqrestore(&tty->read_lock, flags);			kill_fasync(&tty->fasync, SIGIO, POLL_IN);			if (waitqueue_active(&tty->read_wait))				wake_up_interruptible(&tty->read_wait);			return;		}	}		finish_erasing(tty);	if (L_ECHO(tty)) {		if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {			put_char('\a', tty); /* beep if no space */			return;		}		if (c == '\n')			opost('\n', tty);		else {			/* Record the column of first canon char. */			if (tty->canon_head == tty->read_head)				tty->canon_column = tty->column;			echo_char(c, tty);		}	}	if (I_PARMRK(tty) && c == (unsigned char) '\377')		put_tty_queue(c, tty);	put_tty_queue(c, tty);}	
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d6afe27bfff30fbec2cca6ad5626c22f4094d770/n_tty.c/clean/drivers/char/n_tty.c