taglinefilesource code
tty70drivers/char/console.cint paste_selection(struct tty_struct *tty);
tty702drivers/char/console.cstatic void respond_string(char * p, int currcons, struct tty_struct * tty)
tty705drivers/char/console.cput_tty_queue(*p, &tty->read_q);
tty708drivers/char/console.cTTY_READ_FLUSH(tty);
tty711drivers/char/console.cstatic void respond_num(unsigned int n, int currcons, struct tty_struct * tty)
tty721drivers/char/console.cput_tty_queue(buff[i], &tty->read_q);
tty726drivers/char/console.cstatic void cursor_report(int currcons, struct tty_struct * tty)
tty728drivers/char/console.cput_tty_queue('\033', &tty->read_q);
tty729drivers/char/console.cput_tty_queue('[', &tty->read_q);
tty730drivers/char/console.crespond_num(y + (decom ? top+1 : 1), currcons, tty);
tty731drivers/char/console.cput_tty_queue(';', &tty->read_q);
tty732drivers/char/console.crespond_num(x+1, currcons, tty);
tty733drivers/char/console.cput_tty_queue('R', &tty->read_q);
tty734drivers/char/console.cTTY_READ_FLUSH(tty);
tty737drivers/char/console.cstatic inline void status_report(int currcons, struct tty_struct * tty)
tty739drivers/char/console.crespond_string("\033[0n", currcons, tty);  /* Terminal ok */
tty742drivers/char/console.cstatic inline void respond_ID(int currcons, struct tty_struct * tty)
tty744drivers/char/console.crespond_string(VT102ID, currcons, tty);
tty994drivers/char/console.cvoid con_write(struct tty_struct * tty)
tty999drivers/char/console.ccurrcons = tty->line - 1;
tty1007drivers/char/console.cif (!EMPTY(&tty->write_q) && currcons == sel_cons)
tty1011drivers/char/console.cwhile (!tty->stopped &&  (c = get_tty_queue(&tty->write_q)) >= 0) {
tty1099drivers/char/console.crespond_ID(currcons,tty);
tty1160drivers/char/console.cstatus_report(currcons,tty);
tty1162drivers/char/console.ccursor_report(currcons,tty);
tty1224drivers/char/console.crespond_ID(currcons,tty);
tty1314drivers/char/console.cif (LEFT(&tty->write_q) > WAKEUP_CHARS)
tty1315drivers/char/console.cwake_up_interruptible(&tty->write_q.proc_list);
tty1619drivers/char/console.cint con_open(struct tty_struct *tty, struct file * filp)
tty1621drivers/char/console.ctty->write = con_write;
tty1622drivers/char/console.ctty->ioctl = vt_ioctl;
tty1623drivers/char/console.cif (tty->line > NR_CONSOLES)
tty1802drivers/char/console.cint paste_selection(struct tty_struct *tty)
tty1810drivers/char/console.cput_tty_queue(*bp, &tty->read_q);
tty1812drivers/char/console.cTTY_READ_FLUSH(tty);
tty93drivers/char/keyboard.cstatic struct tty_struct * tty = NULL;
tty227drivers/char/keyboard.ctty = TTY_TABLE(0);
tty334drivers/char/keyboard.c(vc_kbd_mode(kbd,VC_REPEAT) && tty &&
tty335drivers/char/keyboard.c(L_ECHO(tty) || (EMPTY(&tty->secondary) && EMPTY(&tty->read_q)))))
tty363drivers/char/keyboard.cif (!tty)
tty365drivers/char/keyboard.cqp = &tty->read_q;
tty380drivers/char/keyboard.cif (!tty)
tty382drivers/char/keyboard.cqp = &tty->read_q;
tty442drivers/char/keyboard.cif (rep || !tty)
tty450drivers/char/keyboard.cif (tty->stopped)
tty451drivers/char/keyboard.cstart_tty(tty);
tty453drivers/char/keyboard.cstop_tty(tty);
tty823drivers/char/keyboard.cif (tty && !I_IGNBRK(tty)) {
tty824drivers/char/keyboard.cif (I_BRKINT(tty)) {
tty825drivers/char/keyboard.cflush_input(tty);
tty826drivers/char/keyboard.cflush_output(tty);
tty827drivers/char/keyboard.cif (tty->pgrp > 0)
tty828drivers/char/keyboard.ckill_pg(tty->pgrp, SIGINT, 1);
tty831drivers/char/keyboard.cif (LEFT(&tty->read_q) >= 2) {
tty832drivers/char/keyboard.cset_bit(tty->read_q.head,
tty833drivers/char/keyboard.c&tty->readq_flags);
tty27drivers/char/pty.cstatic void pty_close(struct tty_struct * tty, struct file * filp)
tty29drivers/char/pty.cif (!tty)
tty31drivers/char/pty.cif (IS_A_PTY_MASTER(tty->line)) {
tty32drivers/char/pty.cif (tty->count > 1)
tty33drivers/char/pty.cprintk("master pty_close: count = %d!!\n", tty->count);
tty35drivers/char/pty.cif (tty->count > 2)
tty38drivers/char/pty.cwake_up_interruptible(&tty->secondary.proc_list);
tty39drivers/char/pty.cwake_up_interruptible(&tty->read_q.proc_list);
tty40drivers/char/pty.cwake_up_interruptible(&tty->write_q.proc_list);
tty41drivers/char/pty.cif (!tty->link)
tty43drivers/char/pty.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty44drivers/char/pty.cwake_up_interruptible(&tty->link->read_q.proc_list);
tty45drivers/char/pty.cwake_up_interruptible(&tty->link->write_q.proc_list);
tty46drivers/char/pty.cif (IS_A_PTY_MASTER(tty->line))
tty47drivers/char/pty.ctty_hangup(tty->link);
tty49drivers/char/pty.cstart_tty(tty);
tty50drivers/char/pty.cset_bit(TTY_SLAVE_CLOSED, &tty->link->flags);
tty86drivers/char/pty.cstatic void pty_write(struct tty_struct * tty)
tty88drivers/char/pty.cif (tty->link)
tty89drivers/char/pty.cpty_copy(tty,tty->link);
tty92drivers/char/pty.cint pty_open(struct tty_struct *tty, struct file * filp)
tty94drivers/char/pty.cif (!tty || !tty->link)
tty96drivers/char/pty.cif (IS_A_PTY_SLAVE(tty->line))
tty97drivers/char/pty.cclear_bit(TTY_SLAVE_CLOSED, &tty->link->flags);
tty98drivers/char/pty.ctty->write = tty->link->write = pty_write;
tty99drivers/char/pty.ctty->close = tty->link->close = pty_close;
tty100drivers/char/pty.cwake_up_interruptible(&tty->read_q.proc_list);
tty103drivers/char/pty.cwhile (!tty->link->count && !(current->signal & ~current->blocked))
tty104drivers/char/pty.cinterruptible_sleep_on(&tty->link->read_q.proc_list);
tty105drivers/char/pty.cif (!tty->link->count)
tty188drivers/char/serial.cstatic void rs_throttle(struct tty_struct * tty, int status);
tty235drivers/char/serial.cstatic void rs_stop(struct tty_struct *tty)
tty239drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty242drivers/char/serial.ctty->stopped = 0;
tty243drivers/char/serial.ctty->hw_stopped = 0;
tty253drivers/char/serial.cstatic void rs_start(struct tty_struct *tty)
tty257drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty322drivers/char/serial.cqueue = &info->tty->read_q;
tty334drivers/char/serial.cset_bit(head, &info->tty->readq_flags);
tty351drivers/char/serial.c&info->tty->flags)) 
tty352drivers/char/serial.crs_throttle(info->tty, TTY_THROTTLE_RQ_FULL);
tty364drivers/char/serial.cqueue = &info->tty->write_q;
tty387drivers/char/serial.cif (info->tty->write_data_cnt) {
tty388drivers/char/serial.cset_bit(info->tty->line, &tty_check_write);
tty404drivers/char/serial.cif ((status & UART_MSR_DDCD) && !C_CLOCAL(info->tty)) {
tty419drivers/char/serial.cif (C_CRTSCTS(info->tty) && !(info->flags & ASYNC_CLOSING)) {
tty420drivers/char/serial.cif (info->tty->hw_stopped) {
tty425drivers/char/serial.cinfo->tty->hw_stopped = 0;
tty426drivers/char/serial.crs_start(info->tty);
tty434drivers/char/serial.cinfo->tty->hw_stopped = 1;
tty435drivers/char/serial.crs_stop(info->tty);
tty477drivers/char/serial.cif (info->tty &&
tty478drivers/char/serial.cinfo->tty->termios &&
tty491drivers/char/serial.cif (!info->tty->stopped &&
tty492drivers/char/serial.c!info->tty->hw_stopped)
tty546drivers/char/serial.cdo_SAK(info->tty);
tty548drivers/char/serial.cif (!I_IGNBRK(info->tty) && I_BRKINT(info->tty)) {
tty549drivers/char/serial.cflush_input(info->tty);
tty550drivers/char/serial.cflush_output(info->tty);
tty551drivers/char/serial.cif (info->tty->pgrp > 0)
tty552drivers/char/serial.ckill_pg(info->tty->pgrp, SIGINT,1);
tty572drivers/char/serial.cif (!info->tty)  
tty575drivers/char/serial.cTTY_READ_FLUSH(info->tty);
tty578drivers/char/serial.cwake_up_interruptible(&info->tty->write_q.proc_list);
tty581drivers/char/serial.ctty_hangup(info->tty);
tty711drivers/char/serial.cif (info->tty)
tty712drivers/char/serial.cset_bit(TTY_IO_ERROR, &info->tty->flags);
tty792drivers/char/serial.cif (info->tty)
tty793drivers/char/serial.cclear_bit(TTY_IO_ERROR, &info->tty->flags);
tty797drivers/char/serial.cif (info->tty && info->tty->termios && I_INPCK(info->tty))
tty871drivers/char/serial.cif (info->tty && !(info->tty->termios->c_cflag & HUPCL))
tty882drivers/char/serial.cif (info->tty)
tty883drivers/char/serial.cset_bit(TTY_IO_ERROR, &info->tty->flags);
tty904drivers/char/serial.cif (!info->tty || !info->tty->termios)
tty906drivers/char/serial.ccflag = info->tty->termios->c_cflag;
tty991drivers/char/serial.cqueue = &info->tty->write_q;
tty1010drivers/char/serial.cvoid rs_write(struct tty_struct * tty)
tty1014drivers/char/serial.cif (!tty || tty->stopped || tty->hw_stopped)
tty1016drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty1018drivers/char/serial.cif (!info || !info->tty || !(info->flags & ASYNC_INITIALIZED)) {
tty1040drivers/char/serial.cstatic void rs_throttle(struct tty_struct * tty, int status)
tty1048drivers/char/serial.cprintk("throttle tty%d: %d (%d, %d)....\n", DEV_TO_SL(tty->line),
tty1049drivers/char/serial.cstatus, LEFT(&tty->read_q), LEFT(&tty->secondary));
tty1053drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty1054drivers/char/serial.cif (I_IXOFF(tty)) {
tty1055drivers/char/serial.cinfo->x_char = STOP_CHAR(tty);
tty1063drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty1064drivers/char/serial.cif (I_IXOFF(tty)) {
tty1068drivers/char/serial.cinfo->x_char = START_CHAR(tty);
tty1347drivers/char/serial.cstatic int rs_ioctl(struct tty_struct *tty, struct file * file,
tty1353drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1370drivers/char/serial.cput_fs_long(C_CLOCAL(tty) ? 1 : 0,
tty1375drivers/char/serial.ctty->termios->c_cflag =
tty1376drivers/char/serial.c((tty->termios->c_cflag & ~CLOCAL) |
tty1424drivers/char/serial.cstatic void rs_set_termios(struct tty_struct *tty, struct termios *old_termios)
tty1428drivers/char/serial.cif (tty->termios->c_cflag == old_termios->c_cflag)
tty1431drivers/char/serial.cinfo = &rs_table[DEV_TO_SL(tty->line)];
tty1433drivers/char/serial.cchange_speed(DEV_TO_SL(tty->line));
tty1436drivers/char/serial.c!(tty->termios->c_cflag & CRTSCTS)) {
tty1437drivers/char/serial.ctty->hw_stopped = 0;
tty1438drivers/char/serial.crs_write(tty);
tty1442drivers/char/serial.c(tty->termios->c_cflag & CLOCAL))
tty1445drivers/char/serial.cif (I_INPCK(tty))
tty1463drivers/char/serial.cstatic void rs_close(struct tty_struct *tty, struct file * filp)
tty1471drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1478drivers/char/serial.cif ((tty->count == 1) && (info->count != 1)) {
tty1503drivers/char/serial.cinfo->normal_termios = *tty->termios;
tty1505drivers/char/serial.cinfo->callout_termios = *tty->termios;
tty1506drivers/char/serial.ctty->stopped = 0;    /* Force flush to succeed */
tty1507drivers/char/serial.ctty->hw_stopped = 0;
tty1509drivers/char/serial.crs_start(tty);
tty1510drivers/char/serial.cwait_until_sent(tty, 6000); /* 60 seconds timeout */
tty1512drivers/char/serial.cflush_output(tty);
tty1513drivers/char/serial.cflush_input(tty);
tty1520drivers/char/serial.crs_start(tty);  /* Make sure THRI interrupt enabled */
tty1527drivers/char/serial.cinfo->tty = 0;
tty1530drivers/char/serial.ctty->count++; /* avoid race condition */
tty1534drivers/char/serial.ctty->count--;
tty1546drivers/char/serial.cvoid rs_hangup(struct tty_struct *tty)
tty1551drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1561drivers/char/serial.cinfo->tty = 0;
tty1570drivers/char/serial.cstatic int block_til_ready(struct tty_struct *tty, struct file * filp,
tty1575drivers/char/serial.cint    do_clocal = C_CLOCAL(tty);
tty1694drivers/char/serial.cint rs_open(struct tty_struct *tty, struct file * filp)
tty1699drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1707drivers/char/serial.cinfo->tty = tty;
tty1709drivers/char/serial.ctty->write = rs_write;
tty1710drivers/char/serial.ctty->close = rs_close;
tty1711drivers/char/serial.ctty->ioctl = rs_ioctl;
tty1712drivers/char/serial.ctty->throttle = rs_throttle;
tty1713drivers/char/serial.ctty->set_termios = rs_set_termios;
tty1714drivers/char/serial.ctty->stop = rs_stop;
tty1715drivers/char/serial.ctty->start = rs_start;
tty1716drivers/char/serial.ctty->hangup = rs_hangup;
tty1719drivers/char/serial.c*tty->termios = info->normal_termios;
tty1721drivers/char/serial.c*tty->termios = info->callout_termios;
tty1730drivers/char/serial.cretval = block_til_ready(tty, filp, info);
tty2009drivers/char/serial.cinfo->tty = 0;
tty81drivers/char/tty_io.cstatic void initialize_tty_struct(int line, struct tty_struct *tty);
tty142drivers/char/tty_io.cint tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp, int buflen)
tty152drivers/char/tty_io.ctail = tty->read_q.tail;
tty153drivers/char/tty_io.chead = tty->read_q.head;
tty155drivers/char/tty_io.cok = !clear_bit (tail, &tty->readq_flags);
tty156drivers/char/tty_io.c*p++ =  tty->read_q.buf[tail++];
tty160drivers/char/tty_io.ctty->read_q.tail = tail;
tty166drivers/char/tty_io.cvoid tty_write_flush(struct tty_struct * tty)
tty168drivers/char/tty_io.cif (!tty->write || EMPTY(&tty->write_q))
tty170drivers/char/tty_io.cif (set_bit(TTY_WRITE_BUSY,&tty->flags))
tty172drivers/char/tty_io.ctty->write(tty);
tty173drivers/char/tty_io.cif (!clear_bit(TTY_WRITE_BUSY,&tty->flags))
tty177drivers/char/tty_io.cvoid tty_read_flush(struct tty_struct * tty)
tty179drivers/char/tty_io.cif (!tty || EMPTY(&tty->read_q))
tty181drivers/char/tty_io.cif (set_bit(TTY_READ_BUSY, &tty->flags))
tty183drivers/char/tty_io.cldiscs[tty->disc].handler(tty);
tty184drivers/char/tty_io.cif (!clear_bit(TTY_READ_BUSY, &tty->flags))
tty238drivers/char/tty_io.cvoid do_tty_hangup(struct tty_struct * tty, struct file_operations *fops)
tty245drivers/char/tty_io.cif (!tty)
tty247drivers/char/tty_io.cdev = MKDEV(TTY_MAJOR,tty->line);
tty259drivers/char/tty_io.cflush_input(tty);
tty260drivers/char/tty_io.cflush_output(tty);
tty261drivers/char/tty_io.cwake_up_interruptible(&tty->secondary.proc_list);
tty262drivers/char/tty_io.cif (tty->session > 0) {
tty263drivers/char/tty_io.ckill_sl(tty->session,SIGHUP,1);
tty264drivers/char/tty_io.ckill_sl(tty->session,SIGCONT,1);
tty266drivers/char/tty_io.ctty->session = 0;
tty267drivers/char/tty_io.ctty->pgrp = -1;
tty269drivers/char/tty_io.cif (p->tty == tty->line)
tty270drivers/char/tty_io.cp->tty = -1;
tty272drivers/char/tty_io.cif (tty->hangup)
tty273drivers/char/tty_io.c(tty->hangup)(tty);
tty276drivers/char/tty_io.cvoid tty_hangup(struct tty_struct * tty)
tty279drivers/char/tty_io.cprintk("tty%d hangup...\n", tty->line);
tty281drivers/char/tty_io.cdo_tty_hangup(tty, &hung_up_tty_fops);
tty284drivers/char/tty_io.cvoid tty_vhangup(struct tty_struct * tty)
tty287drivers/char/tty_io.cprintk("tty%d vhangup...\n", tty->line);
tty289drivers/char/tty_io.cdo_tty_hangup(tty, &hung_up_tty_fops);
tty309drivers/char/tty_io.cstruct tty_struct *tty;
tty312drivers/char/tty_io.cif (current->tty >= 0) {
tty313drivers/char/tty_io.ctty = tty_table[current->tty];
tty314drivers/char/tty_io.cif (tty) {
tty315drivers/char/tty_io.cif (tty->pgrp > 0) {
tty316drivers/char/tty_io.ckill_pg(tty->pgrp, SIGHUP, priv);
tty317drivers/char/tty_io.ckill_pg(tty->pgrp, SIGCONT, priv);
tty319drivers/char/tty_io.ctty->session = 0;
tty320drivers/char/tty_io.ctty->pgrp = -1;
tty327drivers/char/tty_io.cp->tty = -1;
tty511drivers/char/tty_io.cvoid stop_tty(struct tty_struct *tty)
tty513drivers/char/tty_io.cif (tty->stopped)
tty515drivers/char/tty_io.ctty->stopped = 1;
tty516drivers/char/tty_io.cif (tty->link && tty->link->packet) {
tty517drivers/char/tty_io.ctty->ctrl_status &= ~TIOCPKT_START;
tty518drivers/char/tty_io.ctty->ctrl_status |= TIOCPKT_STOP;
tty519drivers/char/tty_io.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty521drivers/char/tty_io.cif (tty->stop)
tty522drivers/char/tty_io.c(tty->stop)(tty);
tty523drivers/char/tty_io.cif (IS_A_CONSOLE(tty->line)) {
tty529drivers/char/tty_io.cvoid start_tty(struct tty_struct *tty)
tty531drivers/char/tty_io.cif (!tty->stopped)
tty533drivers/char/tty_io.ctty->stopped = 0;
tty534drivers/char/tty_io.cif (tty->link && tty->link->packet) {
tty535drivers/char/tty_io.ctty->ctrl_status &= ~TIOCPKT_STOP;
tty536drivers/char/tty_io.ctty->ctrl_status |= TIOCPKT_START;
tty537drivers/char/tty_io.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty539drivers/char/tty_io.cif (tty->start)
tty540drivers/char/tty_io.c(tty->start)(tty);
tty541drivers/char/tty_io.cTTY_WRITE_FLUSH(tty);
tty542drivers/char/tty_io.cif (IS_A_CONSOLE(tty->line)) {
tty551drivers/char/tty_io.cstatic int opost(unsigned char c, struct tty_struct *tty)
tty553drivers/char/tty_io.cif (FULL(&tty->write_q))
tty555drivers/char/tty_io.cif (O_OPOST(tty)) {
tty558drivers/char/tty_io.cif (O_ONLRET(tty))
tty559drivers/char/tty_io.ctty->column = 0;
tty560drivers/char/tty_io.cif (O_ONLCR(tty)) {
tty561drivers/char/tty_io.cif (LEFT(&tty->write_q) < 2)
tty563drivers/char/tty_io.cput_tty_queue('\r', &tty->write_q);
tty564drivers/char/tty_io.ctty->column = 0;
tty566drivers/char/tty_io.ctty->canon_column = tty->column;
tty569drivers/char/tty_io.cif (O_ONOCR(tty) && tty->column == 0)
tty571drivers/char/tty_io.cif (O_OCRNL(tty)) {
tty573drivers/char/tty_io.cif (O_ONLRET(tty))
tty574drivers/char/tty_io.ctty->canon_column = tty->column = 0;
tty577drivers/char/tty_io.ctty->canon_column = tty->column = 0;
tty580drivers/char/tty_io.cif (O_TABDLY(tty) == XTABS) {
tty581drivers/char/tty_io.cif (LEFT(&tty->write_q) < 8)
tty584drivers/char/tty_io.cput_tty_queue(' ', &tty->write_q);
tty585drivers/char/tty_io.cwhile (++tty->column % 8);
tty588drivers/char/tty_io.ctty->column = (tty->column | 7) + 1;
tty591drivers/char/tty_io.cif (tty->column > 0)
tty592drivers/char/tty_io.ctty->column--;
tty595drivers/char/tty_io.cif (O_OLCUC(tty))
tty598drivers/char/tty_io.ctty->column++;
tty602drivers/char/tty_io.cput_tty_queue(c, &tty->write_q);
tty608drivers/char/tty_io.cstatic void echo_char(unsigned char c, struct tty_struct *tty)
tty610drivers/char/tty_io.cif (L_ECHOCTL(tty) && iscntrl(c) && c != '\t') {
tty611drivers/char/tty_io.copost('^', tty);
tty612drivers/char/tty_io.copost(c ^ 0100, tty);
tty614drivers/char/tty_io.copost(c, tty);
tty617drivers/char/tty_io.cstatic void eraser(unsigned char c, struct tty_struct *tty)
tty622drivers/char/tty_io.cif (tty->secondary.head == tty->canon_head) {
tty626drivers/char/tty_io.cif (c == ERASE_CHAR(tty))
tty628drivers/char/tty_io.celse if (c == WERASE_CHAR(tty))
tty631drivers/char/tty_io.cif (!L_ECHO(tty)) {
tty632drivers/char/tty_io.ctty->secondary.head = tty->canon_head;
tty635drivers/char/tty_io.cif (!L_ECHOK(tty) || !L_ECHOKE(tty)) {
tty636drivers/char/tty_io.ctty->secondary.head = tty->canon_head;
tty637drivers/char/tty_io.cif (tty->erasing) {
tty638drivers/char/tty_io.copost('/', tty);
tty639drivers/char/tty_io.ctty->erasing = 0;
tty641drivers/char/tty_io.cecho_char(KILL_CHAR(tty), tty);
tty643drivers/char/tty_io.cif (L_ECHOK(tty))
tty644drivers/char/tty_io.copost('\n', tty);
tty651drivers/char/tty_io.cwhile (tty->secondary.head != tty->canon_head) {
tty652drivers/char/tty_io.cc = LAST(&tty->secondary);
tty660drivers/char/tty_io.cDEC(tty->secondary.head);
tty661drivers/char/tty_io.cif (L_ECHO(tty)) {
tty662drivers/char/tty_io.cif (L_ECHOPRT(tty)) {
tty663drivers/char/tty_io.cif (!tty->erasing) {
tty664drivers/char/tty_io.copost('\\', tty);
tty665drivers/char/tty_io.ctty->erasing = 1;
tty667drivers/char/tty_io.cecho_char(c, tty);
tty668drivers/char/tty_io.c} else if (!L_ECHOE(tty)) {
tty669drivers/char/tty_io.cecho_char(ERASE_CHAR(tty), tty);
tty671drivers/char/tty_io.cunsigned int col = tty->canon_column;
tty672drivers/char/tty_io.cunsigned long tail = tty->canon_head;
tty675drivers/char/tty_io.cwhile (tail != tty->secondary.head) {
tty676drivers/char/tty_io.cc = tty->secondary.buf[tail];
tty680drivers/char/tty_io.cif (L_ECHOCTL(tty))
tty688drivers/char/tty_io.cwhile (tty->column > col) {
tty690drivers/char/tty_io.cput_tty_queue('\b', &tty->write_q);
tty691drivers/char/tty_io.ctty->column--;
tty694drivers/char/tty_io.cif (iscntrl(c) && L_ECHOCTL(tty)) {
tty695drivers/char/tty_io.copost('\b', tty);
tty696drivers/char/tty_io.copost(' ', tty);
tty697drivers/char/tty_io.copost('\b', tty);
tty699drivers/char/tty_io.cif (!iscntrl(c) || L_ECHOCTL(tty)) {
tty700drivers/char/tty_io.copost('\b', tty);
tty701drivers/char/tty_io.copost(' ', tty);
tty702drivers/char/tty_io.copost('\b', tty);
tty709drivers/char/tty_io.cif (tty->erasing && tty->secondary.head == tty->canon_head) {
tty710drivers/char/tty_io.copost('/', tty);
tty711drivers/char/tty_io.ctty->erasing = 0;
tty715drivers/char/tty_io.cstatic void isig(int sig, struct tty_struct *tty)
tty717drivers/char/tty_io.ckill_pg(tty->pgrp, sig, 1);
tty718drivers/char/tty_io.cif (!L_NOFLSH(tty)) {
tty719drivers/char/tty_io.cflush_input(tty);
tty720drivers/char/tty_io.cflush_output(tty);
tty724drivers/char/tty_io.cstatic void copy_to_cooked(struct tty_struct * tty)
tty729drivers/char/tty_io.cif (!tty) {
tty733drivers/char/tty_io.cif (!tty->write) {
tty735drivers/char/tty_io.ctty->line);
tty743drivers/char/tty_io.cc = LEFT(&tty->secondary);
tty744drivers/char/tty_io.cif (tty->throttle && (c < SQ_THRESHOLD_LW)
tty745drivers/char/tty_io.c&& !set_bit(TTY_SQ_THROTTLED, &tty->flags))
tty746drivers/char/tty_io.ctty->throttle(tty, TTY_THROTTLE_SQ_FULL);
tty750drivers/char/tty_io.cif (!EMPTY(&tty->read_q)) {
tty751drivers/char/tty_io.cc = tty->read_q.buf[tty->read_q.tail];
tty752drivers/char/tty_io.cspecial_flag = clear_bit(tty->read_q.tail,
tty753drivers/char/tty_io.c&tty->readq_flags);
tty754drivers/char/tty_io.cINC(tty->read_q.tail);
tty761drivers/char/tty_io.ctty->char_error = c;
tty764drivers/char/tty_io.cif (tty->char_error) {
tty765drivers/char/tty_io.cif (tty->char_error == TTY_BREAK) {
tty766drivers/char/tty_io.ctty->char_error = 0;
tty767drivers/char/tty_io.cif (I_IGNBRK(tty))
tty770drivers/char/tty_io.cif (I_BRKINT(tty))
tty772drivers/char/tty_io.cif (I_PARMRK(tty)) {
tty773drivers/char/tty_io.cput_tty_queue('\377', &tty->secondary);
tty774drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty776drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty779drivers/char/tty_io.cif (tty->char_error == TTY_OVERRUN) {
tty780drivers/char/tty_io.ctty->char_error = 0;
tty781drivers/char/tty_io.cprintk("tty%d: input overrun\n", tty->line);
tty785drivers/char/tty_io.ctty->char_error = 0;
tty786drivers/char/tty_io.cif (I_IGNPAR(tty)) {
tty789drivers/char/tty_io.cif (I_PARMRK(tty)) {
tty790drivers/char/tty_io.cput_tty_queue('\377', &tty->secondary);
tty791drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty792drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty794drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty797drivers/char/tty_io.cif (I_ISTRIP(tty))
tty799drivers/char/tty_io.cif (!tty->lnext) {
tty801drivers/char/tty_io.cif (I_IGNCR(tty))
tty803drivers/char/tty_io.cif (I_ICRNL(tty))
tty805drivers/char/tty_io.c} else if (c == '\n' && I_INLCR(tty))
tty808drivers/char/tty_io.cif (I_IUCLC(tty) && L_IEXTEN(tty))
tty811drivers/char/tty_io.ctty->lnext = 1;
tty812drivers/char/tty_io.cif (L_ICANON(tty) && !tty->lnext) {
tty813drivers/char/tty_io.cif (c == ERASE_CHAR(tty) || c == KILL_CHAR(tty) ||
tty814drivers/char/tty_io.c(c == WERASE_CHAR(tty) && L_IEXTEN(tty))) {
tty815drivers/char/tty_io.ceraser(c, tty);
tty818drivers/char/tty_io.cif (c == LNEXT_CHAR(tty) && L_IEXTEN(tty)) {
tty819drivers/char/tty_io.ctty->lnext = 1;
tty820drivers/char/tty_io.cif (L_ECHO(tty)) {
tty821drivers/char/tty_io.cif (tty->erasing) {
tty822drivers/char/tty_io.copost('/', tty);
tty823drivers/char/tty_io.ctty->erasing = 0;
tty825drivers/char/tty_io.cif (L_ECHOCTL(tty)) {
tty826drivers/char/tty_io.copost('^', tty);
tty827drivers/char/tty_io.copost('\b', tty);
tty832drivers/char/tty_io.cif (c == REPRINT_CHAR(tty) && L_ECHO(tty) &&
tty833drivers/char/tty_io.cL_IEXTEN(tty)) {
tty834drivers/char/tty_io.cunsigned long tail = tty->canon_head;
tty836drivers/char/tty_io.cif (tty->erasing) {
tty837drivers/char/tty_io.copost('/', tty);
tty838drivers/char/tty_io.ctty->erasing = 0;
tty840drivers/char/tty_io.cecho_char(c, tty);
tty841drivers/char/tty_io.copost('\n', tty);
tty842drivers/char/tty_io.cwhile (tail != tty->secondary.head) {
tty843drivers/char/tty_io.cecho_char(tty->secondary.buf[tail],
tty844drivers/char/tty_io.ctty);
tty850drivers/char/tty_io.cif (I_IXON(tty) && !tty->lnext) {
tty851drivers/char/tty_io.cif ((tty->stopped && I_IXANY(tty) && L_IEXTEN(tty)) ||
tty852drivers/char/tty_io.cc == START_CHAR(tty)) {
tty853drivers/char/tty_io.cstart_tty(tty);
tty856drivers/char/tty_io.cif (c == STOP_CHAR(tty)) {
tty857drivers/char/tty_io.cstop_tty(tty);
tty861drivers/char/tty_io.cif (L_ISIG(tty) && !tty->lnext) {
tty862drivers/char/tty_io.cif (c == INTR_CHAR(tty)) {
tty863drivers/char/tty_io.cisig(SIGINT, tty);
tty866drivers/char/tty_io.cif (c == QUIT_CHAR(tty)) {
tty867drivers/char/tty_io.cisig(SIGQUIT, tty);
tty870drivers/char/tty_io.cif (c == SUSP_CHAR(tty)) {
tty871drivers/char/tty_io.cif (!is_orphaned_pgrp(tty->pgrp))
tty872drivers/char/tty_io.cisig(SIGTSTP, tty);
tty877drivers/char/tty_io.cif (tty->erasing) {
tty878drivers/char/tty_io.copost('/', tty);
tty879drivers/char/tty_io.ctty->erasing = 0;
tty881drivers/char/tty_io.cif (c == '\n' && !tty->lnext) {
tty882drivers/char/tty_io.cif (L_ECHO(tty) || (L_ICANON(tty) && L_ECHONL(tty)))
tty883drivers/char/tty_io.copost('\n', tty);
tty884drivers/char/tty_io.c} else if (L_ECHO(tty)) {
tty888drivers/char/tty_io.cif (c != EOF_CHAR(tty) || !L_ICANON(tty) ||
tty889drivers/char/tty_io.ctty->lnext) {
tty891drivers/char/tty_io.cif (tty->canon_head == tty->secondary.head)
tty892drivers/char/tty_io.ctty->canon_column = tty->column;
tty893drivers/char/tty_io.cecho_char(c, tty);
tty897drivers/char/tty_io.cif (I_PARMRK(tty) && c == (unsigned char) '\377' &&
tty898drivers/char/tty_io.c(c != EOF_CHAR(tty) || !L_ICANON(tty) || tty->lnext))
tty899drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty901drivers/char/tty_io.cif (L_ICANON(tty) && !tty->lnext &&
tty902drivers/char/tty_io.c(c == '\n' || c == EOF_CHAR(tty) || c == EOL_CHAR(tty) ||
tty903drivers/char/tty_io.c(c == EOL2_CHAR(tty) && L_IEXTEN(tty)))) {
tty904drivers/char/tty_io.cif (c == EOF_CHAR(tty))
tty906drivers/char/tty_io.cset_bit(tty->secondary.head, &tty->secondary_flags);
tty907drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty908drivers/char/tty_io.ctty->canon_head = tty->secondary.head;
tty909drivers/char/tty_io.ctty->canon_data++;
tty911drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty912drivers/char/tty_io.ctty->lnext = 0;
tty914drivers/char/tty_io.cif (!EMPTY(&tty->write_q))
tty915drivers/char/tty_io.cTTY_WRITE_FLUSH(tty);
tty916drivers/char/tty_io.cif (L_ICANON(tty) ? tty->canon_data : !EMPTY(&tty->secondary))
tty917drivers/char/tty_io.cwake_up_interruptible(&tty->secondary.proc_list);
tty919drivers/char/tty_io.cif (tty->throttle && (LEFT(&tty->read_q) >= RQ_THRESHOLD_HW)
tty920drivers/char/tty_io.c&& clear_bit(TTY_RQ_THROTTLED, &tty->flags))
tty921drivers/char/tty_io.ctty->throttle(tty, TTY_THROTTLE_RQ_AVAIL);
tty930drivers/char/tty_io.cstatic inline int input_available_p(struct tty_struct *tty)
tty933drivers/char/tty_io.cif (L_ICANON(tty) ? tty->canon_data : !EMPTY(&tty->secondary))
tty937drivers/char/tty_io.cTTY_READ_FLUSH(tty);
tty938drivers/char/tty_io.cif (tty->link)
tty939drivers/char/tty_io.cTTY_WRITE_FLUSH(tty->link);
tty941drivers/char/tty_io.cif (L_ICANON(tty) ? tty->canon_data : !EMPTY(&tty->secondary))
tty946drivers/char/tty_io.cstatic int read_chan(struct tty_struct *tty, struct file *file,
tty961drivers/char/tty_io.ccurrent->tty == tty->line) {
tty962drivers/char/tty_io.cif (tty->pgrp <= 0)
tty964drivers/char/tty_io.celse if (current->pgrp != tty->pgrp) {
tty973drivers/char/tty_io.cif (L_ICANON(tty)) {
tty977drivers/char/tty_io.ctime = (HZ / 10) * TIME_CHAR(tty);
tty978drivers/char/tty_io.cminimum = MIN_CHAR(tty);
tty991drivers/char/tty_io.cadd_wait_queue(&tty->secondary.proc_list, &wait);
tty994drivers/char/tty_io.cif (tty->packet && tty->link->ctrl_status) {
tty997drivers/char/tty_io.cput_fs_byte(tty->link->ctrl_status, b++);
tty998drivers/char/tty_io.ctty->link->ctrl_status = 0;
tty1005drivers/char/tty_io.cif (!input_available_p(tty)) {
tty1006drivers/char/tty_io.cif (tty->flags & (1 << TTY_SLAVE_CLOSED)) {
tty1028drivers/char/tty_io.cif (tty->packet && b == buf) {
tty1037drivers/char/tty_io.cif (EMPTY(&tty->secondary)) {
tty1041drivers/char/tty_io.ceol = clear_bit(tty->secondary.tail,
tty1042drivers/char/tty_io.c&tty->secondary_flags);
tty1043drivers/char/tty_io.cc = tty->secondary.buf[tty->secondary.tail];
tty1052drivers/char/tty_io.ctty->canon_data--;
tty1053drivers/char/tty_io.cINC(tty->secondary.tail);
tty1055drivers/char/tty_io.cset_bit(tty->secondary.tail,
tty1056drivers/char/tty_io.c&tty->secondary_flags);
tty1062drivers/char/tty_io.cINC(tty->secondary.tail);
tty1065drivers/char/tty_io.cif (--tty->canon_data < 0) {
tty1067drivers/char/tty_io.ctty->canon_data = 0;
tty1081drivers/char/tty_io.cif (tty->throttle && (LEFT(&tty->secondary) >= SQ_THRESHOLD_HW)
tty1082drivers/char/tty_io.c&& clear_bit(TTY_SQ_THROTTLED, &tty->flags))
tty1083drivers/char/tty_io.ctty->throttle(tty, TTY_THROTTLE_SQ_AVAIL);
tty1090drivers/char/tty_io.cremove_wait_queue(&tty->secondary.proc_list, &wait);
tty1096drivers/char/tty_io.cstatic int write_chan(struct tty_struct * tty, struct file * file,
tty1105drivers/char/tty_io.cif (L_TOSTOP(tty) && file->f_inode->i_rdev != CONSOLE_DEV) {
tty1106drivers/char/tty_io.cretval = check_change(tty, tty->line);
tty1111drivers/char/tty_io.cadd_wait_queue(&tty->write_q.proc_list, &wait);
tty1118drivers/char/tty_io.cif (tty_hung_up_p(file) || (tty->link && !tty->link->count)) {
tty1126drivers/char/tty_io.cif (opost(c, tty) < 0)
tty1130drivers/char/tty_io.cTTY_WRITE_FLUSH(tty);
tty1133drivers/char/tty_io.cif (EMPTY(&tty->write_q) && !need_resched)
tty1142drivers/char/tty_io.cremove_wait_queue(&tty->write_q.proc_list, &wait);
tty1149drivers/char/tty_io.cstruct tty_struct * tty;
tty1157drivers/char/tty_io.ctty = TTY_TABLE(dev);
tty1158drivers/char/tty_io.cif (!tty || (tty->flags & (1 << TTY_IO_ERROR)))
tty1167drivers/char/tty_io.c(tty->pgrp > 0) &&
tty1168drivers/char/tty_io.c(current->tty == dev) &&
tty1169drivers/char/tty_io.c(tty->pgrp != current->pgrp))
tty1177drivers/char/tty_io.cif (ldiscs[tty->disc].read)
tty1179drivers/char/tty_io.ci = (ldiscs[tty->disc].read)(tty,file,(unsigned char *)buf,(unsigned int)count);
tty1190drivers/char/tty_io.cstruct tty_struct * tty;
tty1200drivers/char/tty_io.ctty = redirect;
tty1202drivers/char/tty_io.ctty = TTY_TABLE(dev);
tty1203drivers/char/tty_io.cif (!tty || !tty->write || (tty->flags & (1 << TTY_IO_ERROR)))
tty1206drivers/char/tty_io.cif (!is_console && L_TOSTOP(tty) && (tty->pgrp > 0) &&
tty1207drivers/char/tty_io.c(current->tty == dev) && (tty->pgrp != current->pgrp)) {
tty1216drivers/char/tty_io.cif (ldiscs[tty->disc].write)
tty1218drivers/char/tty_io.ci = (ldiscs[tty->disc].write)(tty,file,(unsigned char *)buf,(unsigned int)count);
tty1233drivers/char/tty_io.cstruct tty_struct *tty, *o_tty;
tty1239drivers/char/tty_io.ctty = o_tty = NULL;
tty1247drivers/char/tty_io.cif (!tty_table[dev] && !tty) {
tty1248drivers/char/tty_io.cif (!(tty = (struct tty_struct*) get_free_page(GFP_KERNEL)))
tty1250drivers/char/tty_io.cinitialize_tty_struct(dev, tty);
tty1302drivers/char/tty_io.ctty->termios = tty_termios[dev];
tty1303drivers/char/tty_io.ctty_table[dev] = tty;
tty1304drivers/char/tty_io.ctty = NULL;
tty1332drivers/char/tty_io.cif (tty)
tty1333drivers/char/tty_io.cfree_page((unsigned long) tty);
tty1354drivers/char/tty_io.cstruct tty_struct *tty, *o_tty;
tty1358drivers/char/tty_io.ctty = tty_table[dev];
tty1362drivers/char/tty_io.cif (!tty) {
tty1371drivers/char/tty_io.cprintk("release_dev of tty%d (tty count=%d)...", dev, tty->count);
tty1384drivers/char/tty_io.cif (tty->link != o_tty || o_tty->link != tty) {
tty1389drivers/char/tty_io.ctty->write_data_cnt = 0; /* Clear out pending trash */
tty1390drivers/char/tty_io.cif (tty->close)
tty1391drivers/char/tty_io.ctty->close(tty, filp);
tty1393drivers/char/tty_io.cif (--tty->link->count < 0) {
tty1395drivers/char/tty_io.cdev, tty->count);
tty1396drivers/char/tty_io.ctty->link->count = 0;
tty1399drivers/char/tty_io.cif (--tty->count < 0) {
tty1401drivers/char/tty_io.cdev, tty->count);
tty1402drivers/char/tty_io.ctty->count = 0;
tty1404drivers/char/tty_io.cif (tty->count)
tty1416drivers/char/tty_io.cif ((*p) && (*p)->tty == tty->line)
tty1417drivers/char/tty_io.c(*p)->tty = -1;
tty1424drivers/char/tty_io.cif (ldiscs[tty->disc].close != NULL)
tty1425drivers/char/tty_io.cldiscs[tty->disc].close(tty);
tty1426drivers/char/tty_io.ctty->disc = N_TTY;
tty1427drivers/char/tty_io.ctty->termios->c_line = N_TTY;
tty1442drivers/char/tty_io.cif (tty == redirect || o_tty == redirect)
tty1444drivers/char/tty_io.cfree_page((unsigned long) tty);
tty1465drivers/char/tty_io.cstruct tty_struct *tty;
tty1476drivers/char/tty_io.cminor = current->tty;
tty1496drivers/char/tty_io.ctty = tty_table[minor];
tty1498drivers/char/tty_io.cprintk("opening tty%d...", tty->line);
tty1500drivers/char/tty_io.cif (test_bit(TTY_EXCLUSIVE, &tty->flags) && !suser())
tty1516drivers/char/tty_io.ctty->ctrl_status = 0;
tty1517drivers/char/tty_io.ctty->packet = 0;
tty1520drivers/char/tty_io.cif (tty->open) {
tty1521drivers/char/tty_io.cretval = tty->open(tty, filp);
tty1527drivers/char/tty_io.cprintk("error %d in opening tty%d...", retval, tty->line);
tty1540drivers/char/tty_io.ccurrent->tty<0 &&
tty1541drivers/char/tty_io.ctty->session==0) {
tty1542drivers/char/tty_io.ccurrent->tty = minor;
tty1543drivers/char/tty_io.ctty->session = current->session;
tty1544drivers/char/tty_io.ctty->pgrp = current->pgrp;
tty1575drivers/char/tty_io.cstruct tty_struct * tty;
tty1583drivers/char/tty_io.ctty = TTY_TABLE(dev);
tty1584drivers/char/tty_io.cif (!tty) {
tty1588drivers/char/tty_io.cif (ldiscs[tty->disc].select)
tty1589drivers/char/tty_io.creturn (ldiscs[tty->disc].select)(tty, inode, filp,
tty1594drivers/char/tty_io.cstatic int normal_select(struct tty_struct * tty, struct inode * inode,
tty1599drivers/char/tty_io.cif (input_available_p(tty))
tty1603drivers/char/tty_io.cif (tty->packet && tty->link->ctrl_status)
tty1605drivers/char/tty_io.cif (tty->flags & (1 << TTY_SLAVE_CLOSED))
tty1609drivers/char/tty_io.cselect_wait(&tty->secondary.proc_list, wait);
tty1612drivers/char/tty_io.cif (LEFT(&tty->write_q) > WAKEUP_CHARS)
tty1614drivers/char/tty_io.cselect_wait(&tty->write_q.proc_list, wait);
tty1632drivers/char/tty_io.cvoid do_SAK( struct tty_struct *tty)
tty1635drivers/char/tty_io.ctty_hangup(tty);
tty1638drivers/char/tty_io.cint line = tty->line;
tty1639drivers/char/tty_io.cint session = tty->session;
tty1643drivers/char/tty_io.cflush_input(tty);
tty1644drivers/char/tty_io.cflush_output(tty);
tty1648drivers/char/tty_io.cif (((*p)->tty == line) ||
tty1680drivers/char/tty_io.cint tty_write_data(struct tty_struct *tty, char *bufp, int buflen,
tty1691drivers/char/tty_io.cif (tty->write_data_cnt) {
tty1696drivers/char/tty_io.chead = tty->write_q.head;
tty1697drivers/char/tty_io.ctail = tty->write_q.tail;
tty1702drivers/char/tty_io.ctty->write_q.buf[head++] = *p++;
tty1706drivers/char/tty_io.ctty->write_q.head = head;
tty1708drivers/char/tty_io.ctty->write_data_cnt = count;
tty1709drivers/char/tty_io.ctty->write_data_ptr = (unsigned char *) p;
tty1710drivers/char/tty_io.ctty->write_data_callback = callback;
tty1711drivers/char/tty_io.ctty->write_data_arg = callarg;
tty1714drivers/char/tty_io.ctty->write(tty);
tty1731drivers/char/tty_io.cstruct tty_struct * tty;
tty1740drivers/char/tty_io.ctty = tty_table[line];
tty1741drivers/char/tty_io.cif (!tty || !tty->write_data_cnt)
tty1744drivers/char/tty_io.chead = tty->write_q.head;
tty1745drivers/char/tty_io.ctail = tty->write_q.tail;
tty1746drivers/char/tty_io.ccount = tty->write_data_cnt;
tty1747drivers/char/tty_io.cp = tty->write_data_ptr;
tty1750drivers/char/tty_io.ctty->write_q.buf[head++] = *p++;
tty1754drivers/char/tty_io.ctty->write_q.head = head;
tty1755drivers/char/tty_io.ctty->write_data_ptr = p;
tty1756drivers/char/tty_io.ctty->write_data_cnt = count;
tty1759drivers/char/tty_io.c(tty->write_data_callback)
tty1760drivers/char/tty_io.c(tty->write_data_arg);
tty1771drivers/char/tty_io.cstatic void initialize_tty_struct(int line, struct tty_struct *tty)
tty1773drivers/char/tty_io.cmemset(tty, 0, sizeof(struct tty_struct));
tty1774drivers/char/tty_io.ctty->line = line;
tty1775drivers/char/tty_io.ctty->disc = N_TTY;
tty1776drivers/char/tty_io.ctty->pgrp = -1;
tty1778drivers/char/tty_io.ctty->open = con_open;
tty1779drivers/char/tty_io.ctty->winsize.ws_row = video_num_lines;
tty1780drivers/char/tty_io.ctty->winsize.ws_col = video_num_columns;
tty1782drivers/char/tty_io.ctty->open = rs_open;
tty1784drivers/char/tty_io.ctty->open = pty_open;
tty40drivers/char/tty_ioctl.cextern int paste_selection(struct tty_struct *tty);
tty43drivers/char/tty_ioctl.cstatic int tty_set_ldisc(struct tty_struct *tty, int ldisc);
tty45drivers/char/tty_ioctl.cvoid flush_input(struct tty_struct * tty)
tty48drivers/char/tty_ioctl.ctty->read_q.head = tty->read_q.tail = 0;
tty49drivers/char/tty_ioctl.ctty->secondary.head = tty->secondary.tail = 0;
tty50drivers/char/tty_ioctl.ctty->canon_head = tty->canon_data = tty->erasing = 0;
tty51drivers/char/tty_ioctl.cmemset(&tty->readq_flags, 0, sizeof tty->readq_flags);
tty52drivers/char/tty_ioctl.cmemset(&tty->secondary_flags, 0, sizeof tty->secondary_flags);
tty54drivers/char/tty_ioctl.cif (!tty->link)
tty57drivers/char/tty_ioctl.ctty->link->write_q.head = tty->link->write_q.tail = 0;
tty58drivers/char/tty_ioctl.cwake_up_interruptible(&tty->link->write_q.proc_list);
tty59drivers/char/tty_ioctl.cif (tty->link->packet) {
tty60drivers/char/tty_ioctl.ctty->ctrl_status |= TIOCPKT_FLUSHREAD;
tty61drivers/char/tty_ioctl.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty65drivers/char/tty_ioctl.cvoid flush_output(struct tty_struct * tty)
tty68drivers/char/tty_ioctl.ctty->write_q.head = tty->write_q.tail = 0;
tty70drivers/char/tty_ioctl.cwake_up_interruptible(&tty->write_q.proc_list);
tty71drivers/char/tty_ioctl.cif (!tty->link)
tty74drivers/char/tty_ioctl.ctty->link->read_q.head = tty->link->read_q.tail = 0;
tty75drivers/char/tty_ioctl.ctty->link->secondary.head = tty->link->secondary.tail = 0;
tty76drivers/char/tty_ioctl.ctty->link->canon_head = tty->link->canon_data = tty->link->erasing = 0;
tty77drivers/char/tty_ioctl.cmemset(&tty->link->readq_flags, 0, sizeof tty->readq_flags);
tty78drivers/char/tty_ioctl.cmemset(&tty->link->secondary_flags, 0, sizeof tty->secondary_flags);
tty79drivers/char/tty_ioctl.cif (tty->link->packet) {
tty80drivers/char/tty_ioctl.ctty->ctrl_status |= TIOCPKT_FLUSHWRITE;
tty81drivers/char/tty_ioctl.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty85drivers/char/tty_ioctl.cvoid wait_until_sent(struct tty_struct * tty, int timeout)
tty89drivers/char/tty_ioctl.cTTY_WRITE_FLUSH(tty);
tty90drivers/char/tty_ioctl.cif (EMPTY(&tty->write_q))
tty92drivers/char/tty_ioctl.cadd_wait_queue(&tty->write_q.proc_list, &wait);
tty102drivers/char/tty_ioctl.cTTY_WRITE_FLUSH(tty);
tty103drivers/char/tty_ioctl.cif (EMPTY(&tty->write_q))
tty108drivers/char/tty_ioctl.cremove_wait_queue(&tty->write_q.proc_list, &wait);
tty163drivers/char/tty_ioctl.cint check_change(struct tty_struct * tty, int channel)
tty168drivers/char/tty_ioctl.cif (current->tty != channel)
tty170drivers/char/tty_ioctl.cif (tty->pgrp <= 0) {
tty174drivers/char/tty_ioctl.cif (current->pgrp == tty->pgrp)
tty184drivers/char/tty_ioctl.cstatic int set_termios_2(struct tty_struct * tty, struct termios * termios)
tty186drivers/char/tty_ioctl.cstruct termios old_termios = *tty->termios;
tty191drivers/char/tty_ioctl.c*tty->termios = *termios;
tty193drivers/char/tty_ioctl.cmemset(&tty->secondary_flags, 0, sizeof tty->secondary_flags);
tty194drivers/char/tty_ioctl.ctty->canon_head = tty->secondary.tail;
tty195drivers/char/tty_ioctl.ctty->canon_data = 0;
tty196drivers/char/tty_ioctl.ctty->erasing = 0;
tty199drivers/char/tty_ioctl.cif (canon_change && !L_ICANON(tty) && !EMPTY(&tty->secondary))
tty201drivers/char/tty_ioctl.cwake_up_interruptible(&tty->secondary.proc_list);
tty205drivers/char/tty_ioctl.cif (tty->link && tty->link->packet) {
tty209drivers/char/tty_ioctl.cint new_flow = (I_IXON(tty) &&
tty210drivers/char/tty_ioctl.cSTOP_CHAR(tty) == '\023' &&
tty211drivers/char/tty_ioctl.cSTART_CHAR(tty) == '\021');
tty213drivers/char/tty_ioctl.ctty->ctrl_status &= ~(TIOCPKT_DOSTOP | TIOCPKT_NOSTOP);
tty215drivers/char/tty_ioctl.ctty->ctrl_status |= TIOCPKT_DOSTOP;
tty217drivers/char/tty_ioctl.ctty->ctrl_status |= TIOCPKT_NOSTOP;
tty218drivers/char/tty_ioctl.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty222drivers/char/tty_ioctl.cunset_locked_termios(tty->termios, &old_termios,
tty223drivers/char/tty_ioctl.ctermios_locked[tty->line]);
tty225drivers/char/tty_ioctl.cif (tty->set_termios)
tty226drivers/char/tty_ioctl.c(*tty->set_termios)(tty, &old_termios);
tty231drivers/char/tty_ioctl.cstatic int set_termios(struct tty_struct * tty, struct termios * termios,
tty237drivers/char/tty_ioctl.creturn set_termios_2(tty, &tmp_termios);
tty240drivers/char/tty_ioctl.cstatic int get_termio(struct tty_struct * tty, struct termio * termio)
tty248drivers/char/tty_ioctl.ctmp_termio.c_iflag = tty->termios->c_iflag;
tty249drivers/char/tty_ioctl.ctmp_termio.c_oflag = tty->termios->c_oflag;
tty250drivers/char/tty_ioctl.ctmp_termio.c_cflag = tty->termios->c_cflag;
tty251drivers/char/tty_ioctl.ctmp_termio.c_lflag = tty->termios->c_lflag;
tty252drivers/char/tty_ioctl.ctmp_termio.c_line = tty->termios->c_line;
tty254drivers/char/tty_ioctl.ctmp_termio.c_cc[i] = tty->termios->c_cc[i];
tty259drivers/char/tty_ioctl.cstatic int set_termio(struct tty_struct * tty, struct termio * termio,
tty265drivers/char/tty_ioctl.ctmp_termios = *tty->termios;
tty278drivers/char/tty_ioctl.creturn set_termios_2(tty, &tmp_termios);
tty281drivers/char/tty_ioctl.cstatic int set_window_size(struct tty_struct * tty, struct winsize * ws)
tty286drivers/char/tty_ioctl.cif (memcmp(&tmp_ws, &tty->winsize, sizeof (struct winsize)) &&
tty287drivers/char/tty_ioctl.ctty->pgrp > 0)
tty288drivers/char/tty_ioctl.ckill_pg(tty->pgrp, SIGWINCH, 1);
tty289drivers/char/tty_ioctl.ctty->winsize = tmp_ws;
tty294drivers/char/tty_ioctl.cstatic int tty_set_ldisc(struct tty_struct *tty, int ldisc)
tty300drivers/char/tty_ioctl.cif (tty->disc == ldisc)
tty304drivers/char/tty_ioctl.cwait_until_sent(tty, 0);
tty305drivers/char/tty_ioctl.cflush_input(tty);
tty306drivers/char/tty_ioctl.cif (ldiscs[tty->disc].close)
tty307drivers/char/tty_ioctl.cldiscs[tty->disc].close(tty);
tty310drivers/char/tty_ioctl.ctty->disc = ldisc;
tty311drivers/char/tty_ioctl.ctty->termios->c_line = ldisc;
tty312drivers/char/tty_ioctl.cif (ldiscs[tty->disc].open)
tty313drivers/char/tty_ioctl.creturn(ldiscs[tty->disc].open(tty));
tty318drivers/char/tty_ioctl.cstatic unsigned long inq_canon(struct tty_struct * tty)
tty322drivers/char/tty_ioctl.cif (!tty->canon_data)
tty324drivers/char/tty_ioctl.chead = tty->canon_head;
tty325drivers/char/tty_ioctl.ctail = tty->secondary.tail;
tty329drivers/char/tty_ioctl.cif (test_bit(tail, &tty->secondary_flags) &&
tty330drivers/char/tty_ioctl.ctty->secondary.buf[tail] == __DISABLED_CHAR)
tty340drivers/char/tty_ioctl.cstruct tty_struct * tty;
tty353drivers/char/tty_ioctl.ctty = TTY_TABLE(dev);
tty354drivers/char/tty_ioctl.cif (!tty)
tty364drivers/char/tty_ioctl.ctermios_tty = tty;
tty406drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty411drivers/char/tty_ioctl.cstop_tty(tty);
tty414drivers/char/tty_ioctl.cstart_tty(tty);
tty417drivers/char/tty_ioctl.cif (STOP_CHAR(tty) != __DISABLED_CHAR)
tty418drivers/char/tty_ioctl.cput_tty_queue(STOP_CHAR(tty),
tty419drivers/char/tty_ioctl.c&tty->write_q);
tty422drivers/char/tty_ioctl.cif (START_CHAR(tty) != __DISABLED_CHAR)
tty423drivers/char/tty_ioctl.cput_tty_queue(START_CHAR(tty),
tty424drivers/char/tty_ioctl.c&tty->write_q);
tty431drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty436drivers/char/tty_ioctl.cflush_input(tty);
tty439drivers/char/tty_ioctl.cflush_input(tty);
tty442drivers/char/tty_ioctl.cflush_output(tty);
tty449drivers/char/tty_ioctl.cset_bit(TTY_EXCLUSIVE, &tty->flags);
tty452drivers/char/tty_ioctl.cclear_bit(TTY_EXCLUSIVE, &tty->flags);
tty456drivers/char/tty_ioctl.c(current->session == tty->session))
tty462drivers/char/tty_ioctl.cif (!current->leader || (current->tty >= 0))
tty464drivers/char/tty_ioctl.cif (tty->session > 0) {
tty476drivers/char/tty_ioctl.cif (p->tty == dev)
tty477drivers/char/tty_ioctl.cp->tty = -1;
tty481drivers/char/tty_ioctl.ccurrent->tty = dev;
tty482drivers/char/tty_ioctl.ctty->session = current->session;
tty483drivers/char/tty_ioctl.ctty->pgrp = current->pgrp;
tty493drivers/char/tty_ioctl.cif (tty == termios_tty && current->tty != dev)
tty501drivers/char/tty_ioctl.cif ((current->tty < 0) ||
tty502drivers/char/tty_ioctl.c(current->tty != termios_dev) ||
tty517drivers/char/tty_ioctl.cput_fs_long(CHARS(&tty->write_q),
tty525drivers/char/tty_ioctl.cif (L_ICANON(tty))
tty526drivers/char/tty_ioctl.cput_fs_long(inq_canon(tty),
tty529drivers/char/tty_ioctl.cput_fs_long(CHARS(&tty->secondary),
tty533drivers/char/tty_ioctl.cif ((current->tty != dev) && !suser())
tty538drivers/char/tty_ioctl.cput_tty_queue(get_fs_byte((char *) arg), &tty->read_q);
tty539drivers/char/tty_ioctl.cTTY_READ_FLUSH(tty);
tty546drivers/char/tty_ioctl.cmemcpy_tofs((struct winsize *) arg, &tty->winsize,
tty552drivers/char/tty_ioctl.creturn set_window_size(tty,(struct winsize *) arg);
tty564drivers/char/tty_ioctl.creturn paste_selection(tty);
tty586drivers/char/tty_ioctl.credirect = tty;
tty598drivers/char/tty_ioctl.cif (current->tty != dev)
tty602drivers/char/tty_ioctl.ccurrent->tty = -1;
tty609drivers/char/tty_ioctl.cput_fs_long(tty->disc, (unsigned long *) arg);
tty612drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty616drivers/char/tty_ioctl.creturn tty_set_ldisc(tty, arg);
tty643drivers/char/tty_ioctl.cif (!tty->packet) {
tty644drivers/char/tty_ioctl.ctty->packet = 1;
tty645drivers/char/tty_ioctl.ctty->link->ctrl_status = 0;
tty648drivers/char/tty_ioctl.ctty->packet = 0;
tty651drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty654drivers/char/tty_ioctl.cwait_until_sent(tty, 0);
tty655drivers/char/tty_ioctl.cif (!tty->ioctl)
tty657drivers/char/tty_ioctl.ctty->ioctl(tty, file, cmd, arg);
tty660drivers/char/tty_ioctl.cif (tty->ioctl) {
tty661drivers/char/tty_ioctl.cretval = (tty->ioctl)(tty, file, cmd, arg);
tty665drivers/char/tty_ioctl.cif (ldiscs[tty->disc].ioctl) {
tty666drivers/char/tty_ioctl.cretval = (ldiscs[tty->disc].ioctl)
tty667drivers/char/tty_ioctl.c(tty, file, cmd, arg);
tty116drivers/char/vt.cint vt_ioctl(struct tty_struct *tty, struct file * file,
tty123drivers/char/vt.cconsole = tty->line - 1;
tty237drivers/char/vt.cflush_input(tty);
tty157drivers/net/slip.csl->tty    = NULL;
tty177drivers/net/slip.csl_find(struct tty_struct *tty)
tty182drivers/net/slip.cif (tty == NULL) return(NULL);
tty185drivers/net/slip.cif (sl->tty == tty) return(sl);
tty205drivers/net/slip.csl->tty = NULL;
tty225drivers/net/slip.csl->tty = NULL;
tty478drivers/net/slip.cif (tty_write_data(sl->tty, (char *) bp, count,
tty505drivers/net/slip.cstruct tty_struct *tty;
tty511drivers/net/slip.ctty = sl->tty;
tty619drivers/net/slip.cif (sl->tty == NULL) {
tty702drivers/net/slip.cif (sl->tty == NULL) {
tty728drivers/net/slip.cslip_recv(struct tty_struct *tty)
tty735drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: slip_recv(%d) called\n", tty->line));
tty736drivers/net/slip.cif ((sl = sl_find(tty)) == NULL) return;  /* not connected */
tty743drivers/net/slip.ccount = tty_read_raw_data(tty, buff, 128);
tty769drivers/net/slip.cslip_open(struct tty_struct *tty)
tty774drivers/net/slip.cif ((sl = sl_find(tty)) != NULL) {
tty776drivers/net/slip.ctty->line, sl->dev->name));
tty783drivers/net/slip.ctty->line));
tty786drivers/net/slip.csl->tty = tty;
tty787drivers/net/slip.ctty_read_flush(tty);
tty788drivers/net/slip.ctty_write_flush(tty);
tty793drivers/net/slip.ctty->line, sl->dev->name));
tty838drivers/net/slip.cslip_close(struct tty_struct *tty)
tty843drivers/net/slip.cif ((sl = sl_find(tty)) == NULL) {
tty844drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: TTY %d not connected !\n", tty->line));
tty850drivers/net/slip.ctty->line, sl->dev->name));
tty1044drivers/net/slip.cslip_ioctl(struct tty_struct *tty, void *file, int cmd, void *arg)
tty1050drivers/net/slip.cif ((sl = sl_find(tty)) == NULL) {
tty1051drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: ioctl: TTY %d not connected !\n", tty->line));
tty1055drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: ioctl(%d, 0x%X, 0x%X)\n", tty->line, cmd, arg));
tty38drivers/net/slip.hstruct tty_struct  *tty;    /* ptr to TTY structure    */
tty484fs/open.cstruct tty_struct *tty;
tty489fs/open.cif (current->tty < 0)
tty491fs/open.ctty = TTY_TABLE(MINOR(current->tty));
tty492fs/open.ctty_vhangup(tty);
tty309fs/proc/array.ctty_pgrp = (*p)->tty;
tty323fs/proc/array.c(*p)->tty,
tty287include/linux/sched.hint tty;    /* -1 if no tty, so it must be signed */
tty28include/linux/serial.hstruct tty_struct   *tty;
tty148include/linux/tty.h#define INTR_CHAR(tty) ((tty)->termios->c_cc[VINTR])
tty149include/linux/tty.h#define QUIT_CHAR(tty) ((tty)->termios->c_cc[VQUIT])
tty150include/linux/tty.h#define ERASE_CHAR(tty) ((tty)->termios->c_cc[VERASE])
tty151include/linux/tty.h#define KILL_CHAR(tty) ((tty)->termios->c_cc[VKILL])
tty152include/linux/tty.h#define EOF_CHAR(tty) ((tty)->termios->c_cc[VEOF])
tty153include/linux/tty.h#define TIME_CHAR(tty) ((tty)->termios->c_cc[VTIME])
tty154include/linux/tty.h#define MIN_CHAR(tty) ((tty)->termios->c_cc[VMIN])
tty155include/linux/tty.h#define SWTC_CHAR(tty) ((tty)->termios->c_cc[VSWTC])
tty156include/linux/tty.h#define START_CHAR(tty) ((tty)->termios->c_cc[VSTART])
tty157include/linux/tty.h#define STOP_CHAR(tty) ((tty)->termios->c_cc[VSTOP])
tty158include/linux/tty.h#define SUSP_CHAR(tty) ((tty)->termios->c_cc[VSUSP])
tty159include/linux/tty.h#define EOL_CHAR(tty) ((tty)->termios->c_cc[VEOL])
tty160include/linux/tty.h#define REPRINT_CHAR(tty) ((tty)->termios->c_cc[VREPRINT])
tty161include/linux/tty.h#define DISCARD_CHAR(tty) ((tty)->termios->c_cc[VDISCARD])
tty162include/linux/tty.h#define WERASE_CHAR(tty) ((tty)->termios->c_cc[VWERASE])
tty163include/linux/tty.h#define LNEXT_CHAR(tty)  ((tty)->termios->c_cc[VLNEXT])
tty164include/linux/tty.h#define EOL2_CHAR(tty) ((tty)->termios->c_cc[VEOL2])
tty166include/linux/tty.h#define _I_FLAG(tty,f)  ((tty)->termios->c_iflag & (f))
tty167include/linux/tty.h#define _O_FLAG(tty,f)  ((tty)->termios->c_oflag & (f))
tty168include/linux/tty.h#define _C_FLAG(tty,f)  ((tty)->termios->c_cflag & (f))
tty169include/linux/tty.h#define _L_FLAG(tty,f)  ((tty)->termios->c_lflag & (f))
tty171include/linux/tty.h#define I_IGNBRK(tty)  _I_FLAG((tty),IGNBRK)
tty172include/linux/tty.h#define I_BRKINT(tty)  _I_FLAG((tty),BRKINT)
tty173include/linux/tty.h#define I_IGNPAR(tty)  _I_FLAG((tty),IGNPAR)
tty174include/linux/tty.h#define I_PARMRK(tty)  _I_FLAG((tty),PARMRK)
tty175include/linux/tty.h#define I_INPCK(tty)  _I_FLAG((tty),INPCK)
tty176include/linux/tty.h#define I_ISTRIP(tty)  _I_FLAG((tty),ISTRIP)
tty177include/linux/tty.h#define I_INLCR(tty)  _I_FLAG((tty),INLCR)
tty178include/linux/tty.h#define I_IGNCR(tty)  _I_FLAG((tty),IGNCR)
tty179include/linux/tty.h#define I_ICRNL(tty)  _I_FLAG((tty),ICRNL)
tty180include/linux/tty.h#define I_IUCLC(tty)  _I_FLAG((tty),IUCLC)
tty181include/linux/tty.h#define I_IXON(tty)  _I_FLAG((tty),IXON)
tty182include/linux/tty.h#define I_IXANY(tty)  _I_FLAG((tty),IXANY)
tty183include/linux/tty.h#define I_IXOFF(tty)  _I_FLAG((tty),IXOFF)
tty184include/linux/tty.h#define I_IMAXBEL(tty)  _I_FLAG((tty),IMAXBEL)
tty186include/linux/tty.h#define O_OPOST(tty)  _O_FLAG((tty),OPOST)
tty187include/linux/tty.h#define O_OLCUC(tty)  _O_FLAG((tty),OLCUC)
tty188include/linux/tty.h#define O_ONLCR(tty)  _O_FLAG((tty),ONLCR)
tty189include/linux/tty.h#define O_OCRNL(tty)  _O_FLAG((tty),OCRNL)
tty190include/linux/tty.h#define O_ONOCR(tty)  _O_FLAG((tty),ONOCR)
tty191include/linux/tty.h#define O_ONLRET(tty)  _O_FLAG((tty),ONLRET)
tty192include/linux/tty.h#define O_OFILL(tty)  _O_FLAG((tty),OFILL)
tty193include/linux/tty.h#define O_OFDEL(tty)  _O_FLAG((tty),OFDEL)
tty194include/linux/tty.h#define O_NLDLY(tty)  _O_FLAG((tty),NLDLY)
tty195include/linux/tty.h#define O_CRDLY(tty)  _O_FLAG((tty),CRDLY)
tty196include/linux/tty.h#define O_TABDLY(tty)  _O_FLAG((tty),TABDLY)
tty197include/linux/tty.h#define O_BSDLY(tty)  _O_FLAG((tty),BSDLY)
tty198include/linux/tty.h#define O_VTDLY(tty)  _O_FLAG((tty),VTDLY)
tty199include/linux/tty.h#define O_FFDLY(tty)  _O_FLAG((tty),FFDLY)
tty201include/linux/tty.h#define C_BAUD(tty)  _C_FLAG((tty),CBAUD)
tty202include/linux/tty.h#define C_CSIZE(tty)  _C_FLAG((tty),CSIZE)
tty203include/linux/tty.h#define C_CSTOPB(tty)  _C_FLAG((tty),CSTOPB)
tty204include/linux/tty.h#define C_CREAD(tty)  _C_FLAG((tty),CREAD)
tty205include/linux/tty.h#define C_PARENB(tty)  _C_FLAG((tty),PARENB)
tty206include/linux/tty.h#define C_PARODD(tty)  _C_FLAG((tty),PARODD)
tty207include/linux/tty.h#define C_HUPCL(tty)  _C_FLAG((tty),HUPCL)
tty208include/linux/tty.h#define C_CLOCAL(tty)  _C_FLAG((tty),CLOCAL)
tty209include/linux/tty.h#define C_CIBAUD(tty)  _C_FLAG((tty),CIBAUD)
tty210include/linux/tty.h#define C_CRTSCTS(tty)  _C_FLAG((tty),CRTSCTS)
tty212include/linux/tty.h#define L_ISIG(tty)  _L_FLAG((tty),ISIG)
tty213include/linux/tty.h#define L_ICANON(tty)  _L_FLAG((tty),ICANON)
tty214include/linux/tty.h#define L_XCASE(tty)  _L_FLAG((tty),XCASE)
tty215include/linux/tty.h#define L_ECHO(tty)  _L_FLAG((tty),ECHO)
tty216include/linux/tty.h#define L_ECHOE(tty)  _L_FLAG((tty),ECHOE)
tty217include/linux/tty.h#define L_ECHOK(tty)  _L_FLAG((tty),ECHOK)
tty218include/linux/tty.h#define L_ECHONL(tty)  _L_FLAG((tty),ECHONL)
tty219include/linux/tty.h#define L_NOFLSH(tty)  _L_FLAG((tty),NOFLSH)
tty220include/linux/tty.h#define L_TOSTOP(tty)  _L_FLAG((tty),TOSTOP)
tty221include/linux/tty.h#define L_ECHOCTL(tty)  _L_FLAG((tty),ECHOCTL)
tty222include/linux/tty.h#define L_ECHOPRT(tty)  _L_FLAG((tty),ECHOPRT)
tty223include/linux/tty.h#define L_ECHOKE(tty)  _L_FLAG((tty),ECHOKE)
tty224include/linux/tty.h#define L_FLUSHO(tty)  _L_FLAG((tty),FLUSHO)
tty225include/linux/tty.h#define L_PENDIN(tty)  _L_FLAG((tty),PENDIN)
tty226include/linux/tty.h#define L_IEXTEN(tty)  _L_FLAG((tty),IEXTEN)
tty256include/linux/tty.hint  (*open)(struct tty_struct * tty, struct file * filp);
tty257include/linux/tty.hvoid (*close)(struct tty_struct * tty, struct file * filp);
tty258include/linux/tty.hvoid (*write)(struct tty_struct * tty);
tty259include/linux/tty.hint  (*ioctl)(struct tty_struct *tty, struct file * file,
tty261include/linux/tty.hvoid (*throttle)(struct tty_struct * tty, int status);
tty262include/linux/tty.hvoid (*set_termios)(struct tty_struct *tty, struct termios * old);
tty263include/linux/tty.hvoid (*stop)(struct tty_struct *tty);
tty264include/linux/tty.hvoid (*start)(struct tty_struct *tty);
tty265include/linux/tty.hvoid (*hangup)(struct tty_struct *tty);
tty289include/linux/tty.hint  (*read)(struct tty_struct * tty, struct file * file,
tty291include/linux/tty.hint  (*write)(struct tty_struct * tty, struct file * file,
tty293include/linux/tty.hint  (*ioctl)(struct tty_struct * tty, struct file * file,
tty295include/linux/tty.hint  (*select)(struct tty_struct * tty, struct inode * inode,
tty363include/linux/tty.h#define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))
tty364include/linux/tty.h#define TTY_READ_FLUSH(tty) tty_read_flush((tty))
tty400include/linux/tty.hextern void flush_input(struct tty_struct * tty);
tty401include/linux/tty.hextern void flush_output(struct tty_struct * tty);
tty402include/linux/tty.hextern void wait_until_sent(struct tty_struct * tty, int timeout);
tty403include/linux/tty.hextern int check_change(struct tty_struct * tty, int channel);
tty404include/linux/tty.hextern void stop_tty(struct tty_struct * tty);
tty405include/linux/tty.hextern void start_tty(struct tty_struct * tty);
tty407include/linux/tty.hextern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp,
tty409include/linux/tty.hextern int tty_write_data(struct tty_struct *tty, char *bufp, int buflen,
tty415include/linux/tty.hextern int tty_signal(int sig, struct tty_struct *tty);
tty416include/linux/tty.hextern void tty_hangup(struct tty_struct * tty);
tty417include/linux/tty.hextern void tty_vhangup(struct tty_struct * tty);
tty420include/linux/tty.hextern void do_SAK(struct tty_struct *tty);
tty425include/linux/tty.hextern void rs_write(struct tty_struct * tty);
tty426include/linux/tty.hextern void con_write(struct tty_struct * tty);
tty430include/linux/tty.hextern int  rs_open(struct tty_struct * tty, struct file * filp);
tty434include/linux/tty.hextern int  pty_open(struct tty_struct * tty, struct file * filp);
tty438include/linux/tty.hextern int con_open(struct tty_struct * tty, struct file * filp);
tty445include/linux/tty.hextern int vt_ioctl(struct tty_struct *tty, struct file * file,
tty493kernel/sys.ccurrent->tty = -1;