taglinefilesource code
tty70drivers/char/console.cint paste_selection(struct tty_struct *tty);
tty697drivers/char/console.cstatic void respond_string(char * p, int currcons, struct tty_struct * tty)
tty700drivers/char/console.cput_tty_queue(*p, &tty->read_q);
tty703drivers/char/console.cTTY_READ_FLUSH(tty);
tty706drivers/char/console.cstatic void respond_num(unsigned int n, int currcons, struct tty_struct * tty)
tty716drivers/char/console.cput_tty_queue(buff[i], &tty->read_q);
tty721drivers/char/console.cstatic void cursor_report(int currcons, struct tty_struct * tty)
tty723drivers/char/console.cput_tty_queue('\033', &tty->read_q);
tty724drivers/char/console.cput_tty_queue('[', &tty->read_q);
tty725drivers/char/console.crespond_num(y + (decom ? top+1 : 1), currcons, tty);
tty726drivers/char/console.cput_tty_queue(';', &tty->read_q);
tty727drivers/char/console.crespond_num(x+1, currcons, tty);
tty728drivers/char/console.cput_tty_queue('R', &tty->read_q);
tty729drivers/char/console.cTTY_READ_FLUSH(tty);
tty732drivers/char/console.cstatic inline void status_report(int currcons, struct tty_struct * tty)
tty734drivers/char/console.crespond_string("\033[0n", currcons, tty);  /* Terminal ok */
tty737drivers/char/console.cstatic inline void respond_ID(int currcons, struct tty_struct * tty)
tty739drivers/char/console.crespond_string(VT102ID, currcons, tty);
tty989drivers/char/console.cvoid con_write(struct tty_struct * tty)
tty994drivers/char/console.ccurrcons = tty->line - 1;
tty1002drivers/char/console.cif (!EMPTY(&tty->write_q) && currcons == sel_cons)
tty1006drivers/char/console.cwhile (!tty->stopped &&  (c = get_tty_queue(&tty->write_q)) >= 0) {
tty1094drivers/char/console.crespond_ID(currcons,tty);
tty1155drivers/char/console.cstatus_report(currcons,tty);
tty1157drivers/char/console.ccursor_report(currcons,tty);
tty1219drivers/char/console.crespond_ID(currcons,tty);
tty1309drivers/char/console.cif (LEFT(&tty->write_q) > WAKEUP_CHARS)
tty1310drivers/char/console.cwake_up_interruptible(&tty->write_q.proc_list);
tty1614drivers/char/console.cint con_open(struct tty_struct *tty, struct file * filp)
tty1616drivers/char/console.ctty->write = con_write;
tty1617drivers/char/console.ctty->ioctl = vt_ioctl;
tty1618drivers/char/console.cif (tty->line > NR_CONSOLES)
tty1797drivers/char/console.cint paste_selection(struct tty_struct *tty)
tty1806drivers/char/console.cput_tty_queue(*bp, &tty->read_q);
tty1809drivers/char/console.cTTY_READ_FLUSH(tty);
tty86drivers/char/keyboard.cstatic struct tty_struct * tty = NULL;
tty209drivers/char/keyboard.ctty = TTY_TABLE(0);
tty312drivers/char/keyboard.c(vc_kbd_mode(kbd,VC_REPEAT) && tty &&
tty313drivers/char/keyboard.c(L_ECHO(tty) || (EMPTY(&tty->secondary) && EMPTY(&tty->read_q)))))
tty341drivers/char/keyboard.cif (!tty)
tty343drivers/char/keyboard.cqp = &tty->read_q;
tty358drivers/char/keyboard.cif (!tty)
tty360drivers/char/keyboard.cqp = &tty->read_q;
tty420drivers/char/keyboard.cif (rep || !tty)
tty428drivers/char/keyboard.cif (tty->stopped)
tty429drivers/char/keyboard.cstart_tty(tty);
tty431drivers/char/keyboard.cstop_tty(tty);
tty800drivers/char/keyboard.cif (tty && !I_IGNBRK(tty)) {
tty801drivers/char/keyboard.cif (I_BRKINT(tty)) {
tty802drivers/char/keyboard.cflush_input(tty);
tty803drivers/char/keyboard.cflush_output(tty);
tty804drivers/char/keyboard.cif (tty->pgrp > 0)
tty805drivers/char/keyboard.ckill_pg(tty->pgrp, SIGINT, 1);
tty808drivers/char/keyboard.cif (LEFT(&tty->read_q) >= 2) {
tty809drivers/char/keyboard.cset_bit(tty->read_q.head,
tty810drivers/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);
tty92drivers/char/pty.cstatic void pty_write(struct tty_struct * tty)
tty94drivers/char/pty.cif (tty->link)
tty95drivers/char/pty.cpty_copy(tty,tty->link);
tty98drivers/char/pty.cint pty_open(struct tty_struct *tty, struct file * filp)
tty100drivers/char/pty.cif (!tty || !tty->link)
tty102drivers/char/pty.cif (IS_A_PTY_SLAVE(tty->line))
tty103drivers/char/pty.cclear_bit(TTY_SLAVE_CLOSED, &tty->link->flags);
tty104drivers/char/pty.ctty->write = tty->link->write = pty_write;
tty105drivers/char/pty.ctty->close = tty->link->close = pty_close;
tty106drivers/char/pty.cwake_up_interruptible(&tty->read_q.proc_list);
tty109drivers/char/pty.cwhile (!tty->link->count && !(current->signal & ~current->blocked))
tty110drivers/char/pty.cinterruptible_sleep_on(&tty->link->read_q.proc_list);
tty111drivers/char/pty.cif (!tty->link->count)
tty209drivers/char/serial.cstatic void rs_throttle(struct tty_struct * tty, int status);
tty256drivers/char/serial.cstatic void rs_stop(struct tty_struct *tty)
tty260drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty268drivers/char/serial.cstatic void rs_start(struct tty_struct *tty)
tty272drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty337drivers/char/serial.cqueue = &info->tty->read_q;
tty349drivers/char/serial.cset_bit(head, &info->tty->readq_flags);
tty366drivers/char/serial.c&info->tty->flags)) 
tty367drivers/char/serial.crs_throttle(info->tty, TTY_THROTTLE_RQ_FULL);
tty379drivers/char/serial.cqueue = &info->tty->write_q;
tty402drivers/char/serial.cif (info->tty->write_data_cnt) {
tty403drivers/char/serial.cset_bit(info->tty->line, &tty_check_write);
tty419drivers/char/serial.cif ((status & UART_MSR_DDCD) && !C_CLOCAL(info->tty)) {
tty434drivers/char/serial.cif (C_CRTSCTS(info->tty)) {
tty435drivers/char/serial.cif (info->tty->hw_stopped) {
tty440drivers/char/serial.cinfo->tty->hw_stopped = 0;
tty441drivers/char/serial.crs_start(info->tty);
tty449drivers/char/serial.cinfo->tty->hw_stopped = 1;
tty450drivers/char/serial.crs_stop(info->tty);
tty492drivers/char/serial.cif (info->tty &&
tty493drivers/char/serial.cinfo->tty->termios &&
tty506drivers/char/serial.cif (!info->tty->stopped &&
tty507drivers/char/serial.c!info->tty->hw_stopped)
tty561drivers/char/serial.cdo_SAK(info->tty);
tty563drivers/char/serial.cif (!I_IGNBRK(info->tty) && I_BRKINT(info->tty)) {
tty564drivers/char/serial.cflush_input(info->tty);
tty565drivers/char/serial.cflush_output(info->tty);
tty566drivers/char/serial.cif (info->tty->pgrp > 0)
tty567drivers/char/serial.ckill_pg(info->tty->pgrp, SIGINT,1);
tty587drivers/char/serial.cif (!info->tty)  
tty590drivers/char/serial.cTTY_READ_FLUSH(info->tty);
tty593drivers/char/serial.cwake_up_interruptible(&info->tty->write_q.proc_list);
tty596drivers/char/serial.ctty_hangup(info->tty);
tty726drivers/char/serial.cif (info->tty)
tty727drivers/char/serial.cset_bit(TTY_IO_ERROR, &info->tty->flags);
tty807drivers/char/serial.cif (info->tty)
tty808drivers/char/serial.cclear_bit(TTY_IO_ERROR, &info->tty->flags);
tty812drivers/char/serial.cif (info->tty && info->tty->termios && I_INPCK(info->tty))
tty886drivers/char/serial.cif (info->tty && !(info->tty->termios->c_cflag & HUPCL))
tty897drivers/char/serial.cif (info->tty)
tty898drivers/char/serial.cset_bit(TTY_IO_ERROR, &info->tty->flags);
tty919drivers/char/serial.cif (!info->tty || !info->tty->termios)
tty921drivers/char/serial.ccflag = info->tty->termios->c_cflag;
tty1006drivers/char/serial.cqueue = &info->tty->write_q;
tty1025drivers/char/serial.cvoid rs_write(struct tty_struct * tty)
tty1029drivers/char/serial.cif (!tty || tty->stopped || tty->hw_stopped)
tty1031drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty1032drivers/char/serial.cif (!info || !info->tty || !(info->flags & ASYNC_INITIALIZED))
tty1053drivers/char/serial.cstatic void rs_throttle(struct tty_struct * tty, int status)
tty1061drivers/char/serial.cprintk("throttle tty%d: %d (%d, %d)....\n", DEV_TO_SL(tty->line),
tty1062drivers/char/serial.cstatus, LEFT(&tty->read_q), LEFT(&tty->secondary));
tty1066drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty1067drivers/char/serial.cif (I_IXOFF(tty)) {
tty1068drivers/char/serial.cinfo->x_char = STOP_CHAR(tty);
tty1076drivers/char/serial.cinfo = rs_table + DEV_TO_SL(tty->line);
tty1077drivers/char/serial.cif (I_IXOFF(tty)) {
tty1081drivers/char/serial.cinfo->x_char = START_CHAR(tty);
tty1360drivers/char/serial.cstatic int rs_ioctl(struct tty_struct *tty, struct file * file,
tty1366drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1383drivers/char/serial.cput_fs_long(C_CLOCAL(tty) ? 1 : 0,
tty1388drivers/char/serial.ctty->termios->c_cflag =
tty1389drivers/char/serial.c((tty->termios->c_cflag & ~CLOCAL) |
tty1437drivers/char/serial.cstatic void rs_set_termios(struct tty_struct *tty, struct termios *old_termios)
tty1441drivers/char/serial.cif (tty->termios->c_cflag == old_termios->c_cflag)
tty1444drivers/char/serial.cinfo = &rs_table[DEV_TO_SL(tty->line)];
tty1446drivers/char/serial.cchange_speed(DEV_TO_SL(tty->line));
tty1449drivers/char/serial.c!(tty->termios->c_cflag & CRTSCTS)) {
tty1450drivers/char/serial.ctty->hw_stopped = 0;
tty1451drivers/char/serial.crs_write(tty);
tty1455drivers/char/serial.c(tty->termios->c_cflag & CLOCAL))
tty1458drivers/char/serial.cif (I_INPCK(tty))
tty1476drivers/char/serial.cstatic void rs_close(struct tty_struct *tty, struct file * filp)
tty1484drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1491drivers/char/serial.cif ((tty->count == 1) && (info->count != 1)) {
tty1516drivers/char/serial.cinfo->normal_termios = *tty->termios;
tty1518drivers/char/serial.cinfo->callout_termios = *tty->termios;
tty1519drivers/char/serial.ctty->stopped = 0;    /* Force flush to succeed */
tty1520drivers/char/serial.ctty->hw_stopped = 0;
tty1522drivers/char/serial.crs_start(tty);
tty1527drivers/char/serial.cwait_until_sent(tty);
tty1529drivers/char/serial.cflush_output(tty);
tty1530drivers/char/serial.cflush_input(tty);
tty1537drivers/char/serial.crs_start(tty);  /* Make sure THRI interrupt enabled */
tty1544drivers/char/serial.cinfo->tty = 0;
tty1547drivers/char/serial.ctty->count++; /* avoid race condition */
tty1551drivers/char/serial.ctty->count--;
tty1563drivers/char/serial.cvoid rs_hangup(struct tty_struct *tty)
tty1568drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1578drivers/char/serial.cinfo->tty = 0;
tty1587drivers/char/serial.cstatic int block_til_ready(struct tty_struct *tty, struct file * filp,
tty1592drivers/char/serial.cint    do_clocal = C_CLOCAL(tty);
tty1711drivers/char/serial.cint rs_open(struct tty_struct *tty, struct file * filp)
tty1716drivers/char/serial.cline = DEV_TO_SL(tty->line);
tty1724drivers/char/serial.cinfo->tty = tty;
tty1726drivers/char/serial.ctty->write = rs_write;
tty1727drivers/char/serial.ctty->close = rs_close;
tty1728drivers/char/serial.ctty->ioctl = rs_ioctl;
tty1729drivers/char/serial.ctty->throttle = rs_throttle;
tty1730drivers/char/serial.ctty->set_termios = rs_set_termios;
tty1731drivers/char/serial.ctty->stop = rs_stop;
tty1732drivers/char/serial.ctty->start = rs_start;
tty1733drivers/char/serial.ctty->hangup = rs_hangup;
tty1736drivers/char/serial.c*tty->termios = info->normal_termios;
tty1738drivers/char/serial.c*tty->termios = info->callout_termios;
tty1747drivers/char/serial.cretval = block_til_ready(tty, filp, info);
tty2026drivers/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.ctty->session = 0;
tty265drivers/char/tty_io.ctty->pgrp = -1;
tty267drivers/char/tty_io.cif (p->tty == tty->line)
tty268drivers/char/tty_io.cp->tty = -1;
tty270drivers/char/tty_io.cif (tty->hangup)
tty271drivers/char/tty_io.c(tty->hangup)(tty);
tty274drivers/char/tty_io.cvoid tty_hangup(struct tty_struct * tty)
tty277drivers/char/tty_io.cprintk("tty%d hangup...\n", tty->line);
tty279drivers/char/tty_io.cdo_tty_hangup(tty, &hung_up_tty_fops);
tty282drivers/char/tty_io.cvoid tty_vhangup(struct tty_struct * tty)
tty285drivers/char/tty_io.cprintk("tty%d vhangup...\n", tty->line);
tty287drivers/char/tty_io.cdo_tty_hangup(tty, &hung_up_tty_fops);
tty307drivers/char/tty_io.cstruct tty_struct *tty;
tty310drivers/char/tty_io.cif (current->tty >= 0) {
tty311drivers/char/tty_io.ctty = tty_table[current->tty];
tty312drivers/char/tty_io.cif (tty) {
tty313drivers/char/tty_io.cif (tty->pgrp > 0)
tty314drivers/char/tty_io.ckill_pg(tty->pgrp, SIGHUP, priv);
tty315drivers/char/tty_io.ctty->session = 0;
tty316drivers/char/tty_io.ctty->pgrp = -1;
tty323drivers/char/tty_io.cp->tty = -1;
tty507drivers/char/tty_io.cvoid stop_tty(struct tty_struct *tty)
tty509drivers/char/tty_io.cif (tty->stopped)
tty511drivers/char/tty_io.ctty->stopped = 1;
tty512drivers/char/tty_io.cif (tty->link && tty->link->packet) {
tty513drivers/char/tty_io.ctty->ctrl_status &= ~TIOCPKT_START;
tty514drivers/char/tty_io.ctty->ctrl_status |= TIOCPKT_STOP;
tty515drivers/char/tty_io.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty517drivers/char/tty_io.cif (tty->stop)
tty518drivers/char/tty_io.c(tty->stop)(tty);
tty519drivers/char/tty_io.cif (IS_A_CONSOLE(tty->line)) {
tty525drivers/char/tty_io.cvoid start_tty(struct tty_struct *tty)
tty527drivers/char/tty_io.cif (!tty->stopped)
tty529drivers/char/tty_io.ctty->stopped = 0;
tty530drivers/char/tty_io.cif (tty->link && tty->link->packet) {
tty531drivers/char/tty_io.ctty->ctrl_status &= ~TIOCPKT_STOP;
tty532drivers/char/tty_io.ctty->ctrl_status |= TIOCPKT_START;
tty533drivers/char/tty_io.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty535drivers/char/tty_io.cif (tty->start)
tty536drivers/char/tty_io.c(tty->start)(tty);
tty537drivers/char/tty_io.cTTY_WRITE_FLUSH(tty);
tty538drivers/char/tty_io.cif (IS_A_CONSOLE(tty->line)) {
tty547drivers/char/tty_io.cstatic int opost(unsigned char c, struct tty_struct *tty)
tty549drivers/char/tty_io.cif (FULL(&tty->write_q))
tty551drivers/char/tty_io.cif (O_OPOST(tty)) {
tty554drivers/char/tty_io.cif (O_ONLRET(tty))
tty555drivers/char/tty_io.ctty->column = 0;
tty556drivers/char/tty_io.cif (O_ONLCR(tty)) {
tty557drivers/char/tty_io.cif (LEFT(&tty->write_q) < 2)
tty559drivers/char/tty_io.cput_tty_queue('\r', &tty->write_q);
tty560drivers/char/tty_io.ctty->column = 0;
tty562drivers/char/tty_io.ctty->canon_column = tty->column;
tty565drivers/char/tty_io.cif (O_ONOCR(tty) && tty->column == 0)
tty567drivers/char/tty_io.cif (O_OCRNL(tty)) {
tty569drivers/char/tty_io.cif (O_ONLRET(tty))
tty570drivers/char/tty_io.ctty->canon_column = tty->column = 0;
tty573drivers/char/tty_io.ctty->canon_column = tty->column = 0;
tty576drivers/char/tty_io.cif (O_TABDLY(tty) == XTABS) {
tty577drivers/char/tty_io.cif (LEFT(&tty->write_q) < 8)
tty580drivers/char/tty_io.cput_tty_queue(' ', &tty->write_q);
tty581drivers/char/tty_io.cwhile (++tty->column % 8);
tty584drivers/char/tty_io.ctty->column = (tty->column | 7) + 1;
tty587drivers/char/tty_io.cif (tty->column > 0)
tty588drivers/char/tty_io.ctty->column--;
tty591drivers/char/tty_io.cif (O_OLCUC(tty))
tty594drivers/char/tty_io.ctty->column++;
tty598drivers/char/tty_io.cput_tty_queue(c, &tty->write_q);
tty604drivers/char/tty_io.cstatic void echo_char(unsigned char c, struct tty_struct *tty)
tty606drivers/char/tty_io.cif (L_ECHOCTL(tty) && iscntrl(c) && c != '\t') {
tty607drivers/char/tty_io.copost('^', tty);
tty608drivers/char/tty_io.copost(c ^ 0100, tty);
tty610drivers/char/tty_io.copost(c, tty);
tty613drivers/char/tty_io.cstatic void eraser(unsigned char c, struct tty_struct *tty)
tty618drivers/char/tty_io.cif (tty->secondary.head == tty->canon_head) {
tty622drivers/char/tty_io.cif (c == ERASE_CHAR(tty))
tty624drivers/char/tty_io.celse if (c == WERASE_CHAR(tty))
tty627drivers/char/tty_io.cif (!L_ECHO(tty)) {
tty628drivers/char/tty_io.ctty->secondary.head = tty->canon_head;
tty631drivers/char/tty_io.cif (!L_ECHOK(tty) || !L_ECHOKE(tty)) {
tty632drivers/char/tty_io.ctty->secondary.head = tty->canon_head;
tty633drivers/char/tty_io.cif (tty->erasing) {
tty634drivers/char/tty_io.copost('/', tty);
tty635drivers/char/tty_io.ctty->erasing = 0;
tty637drivers/char/tty_io.cecho_char(KILL_CHAR(tty), tty);
tty639drivers/char/tty_io.cif (L_ECHOK(tty))
tty640drivers/char/tty_io.copost('\n', tty);
tty647drivers/char/tty_io.cwhile (tty->secondary.head != tty->canon_head) {
tty648drivers/char/tty_io.cc = LAST(&tty->secondary);
tty656drivers/char/tty_io.cDEC(tty->secondary.head);
tty657drivers/char/tty_io.cif (L_ECHO(tty)) {
tty658drivers/char/tty_io.cif (L_ECHOPRT(tty)) {
tty659drivers/char/tty_io.cif (!tty->erasing) {
tty660drivers/char/tty_io.copost('\\', tty);
tty661drivers/char/tty_io.ctty->erasing = 1;
tty663drivers/char/tty_io.cecho_char(c, tty);
tty664drivers/char/tty_io.c} else if (!L_ECHOE(tty)) {
tty665drivers/char/tty_io.cecho_char(ERASE_CHAR(tty), tty);
tty667drivers/char/tty_io.cunsigned int col = tty->canon_column;
tty668drivers/char/tty_io.cunsigned long tail = tty->canon_head;
tty671drivers/char/tty_io.cwhile (tail != tty->secondary.head) {
tty672drivers/char/tty_io.cc = tty->secondary.buf[tail];
tty676drivers/char/tty_io.cif (L_ECHOCTL(tty))
tty684drivers/char/tty_io.cwhile (tty->column > col) {
tty686drivers/char/tty_io.cput_tty_queue('\b', &tty->write_q);
tty687drivers/char/tty_io.ctty->column--;
tty690drivers/char/tty_io.cif (iscntrl(c) && L_ECHOCTL(tty)) {
tty691drivers/char/tty_io.copost('\b', tty);
tty692drivers/char/tty_io.copost(' ', tty);
tty693drivers/char/tty_io.copost('\b', tty);
tty695drivers/char/tty_io.cif (!iscntrl(c) || L_ECHOCTL(tty)) {
tty696drivers/char/tty_io.copost('\b', tty);
tty697drivers/char/tty_io.copost(' ', tty);
tty698drivers/char/tty_io.copost('\b', tty);
tty705drivers/char/tty_io.cif (tty->erasing && tty->secondary.head == tty->canon_head) {
tty706drivers/char/tty_io.copost('/', tty);
tty707drivers/char/tty_io.ctty->erasing = 0;
tty711drivers/char/tty_io.cstatic void isig(int sig, struct tty_struct *tty)
tty713drivers/char/tty_io.ckill_pg(tty->pgrp, sig, 1);
tty714drivers/char/tty_io.cif (!L_NOFLSH(tty)) {
tty715drivers/char/tty_io.cflush_input(tty);
tty716drivers/char/tty_io.cflush_output(tty);
tty720drivers/char/tty_io.cstatic void copy_to_cooked(struct tty_struct * tty)
tty725drivers/char/tty_io.cif (!tty) {
tty729drivers/char/tty_io.cif (!tty->write) {
tty731drivers/char/tty_io.ctty->line);
tty739drivers/char/tty_io.cc = LEFT(&tty->secondary);
tty740drivers/char/tty_io.cif (tty->throttle && (c < SQ_THRESHOLD_LW)
tty741drivers/char/tty_io.c&& !set_bit(TTY_SQ_THROTTLED, &tty->flags))
tty742drivers/char/tty_io.ctty->throttle(tty, TTY_THROTTLE_SQ_FULL);
tty746drivers/char/tty_io.cif (!EMPTY(&tty->read_q)) {
tty747drivers/char/tty_io.cc = tty->read_q.buf[tty->read_q.tail];
tty748drivers/char/tty_io.cspecial_flag = clear_bit(tty->read_q.tail,
tty749drivers/char/tty_io.c&tty->readq_flags);
tty750drivers/char/tty_io.cINC(tty->read_q.tail);
tty757drivers/char/tty_io.ctty->char_error = c;
tty760drivers/char/tty_io.cif (tty->char_error) {
tty761drivers/char/tty_io.cif (tty->char_error == TTY_BREAK) {
tty762drivers/char/tty_io.ctty->char_error = 0;
tty763drivers/char/tty_io.cif (I_IGNBRK(tty))
tty766drivers/char/tty_io.cif (I_BRKINT(tty))
tty768drivers/char/tty_io.cif (I_PARMRK(tty)) {
tty769drivers/char/tty_io.cput_tty_queue('\377', &tty->secondary);
tty770drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty772drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty775drivers/char/tty_io.cif (tty->char_error == TTY_OVERRUN) {
tty776drivers/char/tty_io.ctty->char_error = 0;
tty777drivers/char/tty_io.cprintk("tty%d: input overrun\n", tty->line);
tty781drivers/char/tty_io.ctty->char_error = 0;
tty782drivers/char/tty_io.cif (I_IGNPAR(tty)) {
tty785drivers/char/tty_io.cif (I_PARMRK(tty)) {
tty786drivers/char/tty_io.cput_tty_queue('\377', &tty->secondary);
tty787drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty788drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty790drivers/char/tty_io.cput_tty_queue('\0', &tty->secondary);
tty793drivers/char/tty_io.cif (I_ISTRIP(tty))
tty795drivers/char/tty_io.cif (!tty->lnext) {
tty797drivers/char/tty_io.cif (I_IGNCR(tty))
tty799drivers/char/tty_io.cif (I_ICRNL(tty))
tty801drivers/char/tty_io.c} else if (c == '\n' && I_INLCR(tty))
tty804drivers/char/tty_io.cif (I_IUCLC(tty) && L_IEXTEN(tty))
tty807drivers/char/tty_io.ctty->lnext = 1;
tty808drivers/char/tty_io.cif (L_ICANON(tty) && !tty->lnext) {
tty809drivers/char/tty_io.cif (c == ERASE_CHAR(tty) || c == KILL_CHAR(tty) ||
tty810drivers/char/tty_io.c(c == WERASE_CHAR(tty) && L_IEXTEN(tty))) {
tty811drivers/char/tty_io.ceraser(c, tty);
tty814drivers/char/tty_io.cif (c == LNEXT_CHAR(tty) && L_IEXTEN(tty)) {
tty815drivers/char/tty_io.ctty->lnext = 1;
tty816drivers/char/tty_io.cif (L_ECHO(tty)) {
tty817drivers/char/tty_io.cif (tty->erasing) {
tty818drivers/char/tty_io.copost('/', tty);
tty819drivers/char/tty_io.ctty->erasing = 0;
tty821drivers/char/tty_io.cif (L_ECHOCTL(tty)) {
tty822drivers/char/tty_io.copost('^', tty);
tty823drivers/char/tty_io.copost('\b', tty);
tty828drivers/char/tty_io.cif (c == REPRINT_CHAR(tty) && L_ECHO(tty) &&
tty829drivers/char/tty_io.cL_IEXTEN(tty)) {
tty830drivers/char/tty_io.cunsigned long tail = tty->canon_head;
tty832drivers/char/tty_io.cif (tty->erasing) {
tty833drivers/char/tty_io.copost('/', tty);
tty834drivers/char/tty_io.ctty->erasing = 0;
tty836drivers/char/tty_io.cecho_char(c, tty);
tty837drivers/char/tty_io.copost('\n', tty);
tty838drivers/char/tty_io.cwhile (tail != tty->secondary.head) {
tty839drivers/char/tty_io.cecho_char(tty->secondary.buf[tail],
tty840drivers/char/tty_io.ctty);
tty846drivers/char/tty_io.cif (I_IXON(tty) && !tty->lnext) {
tty847drivers/char/tty_io.cif ((tty->stopped && I_IXANY(tty) && L_IEXTEN(tty)) ||
tty848drivers/char/tty_io.cc == START_CHAR(tty)) {
tty849drivers/char/tty_io.cstart_tty(tty);
tty852drivers/char/tty_io.cif (c == STOP_CHAR(tty)) {
tty853drivers/char/tty_io.cstop_tty(tty);
tty857drivers/char/tty_io.cif (L_ISIG(tty) && !tty->lnext) {
tty858drivers/char/tty_io.cif (c == INTR_CHAR(tty)) {
tty859drivers/char/tty_io.cisig(SIGINT, tty);
tty862drivers/char/tty_io.cif (c == QUIT_CHAR(tty)) {
tty863drivers/char/tty_io.cisig(SIGQUIT, tty);
tty866drivers/char/tty_io.cif (c == SUSP_CHAR(tty)) {
tty867drivers/char/tty_io.cif (!is_orphaned_pgrp(tty->pgrp))
tty868drivers/char/tty_io.cisig(SIGTSTP, tty);
tty873drivers/char/tty_io.cif (tty->erasing) {
tty874drivers/char/tty_io.copost('/', tty);
tty875drivers/char/tty_io.ctty->erasing = 0;
tty877drivers/char/tty_io.cif (c == '\n' && !tty->lnext) {
tty878drivers/char/tty_io.cif (L_ECHO(tty) || (L_ICANON(tty) && L_ECHONL(tty)))
tty879drivers/char/tty_io.copost('\n', tty);
tty880drivers/char/tty_io.c} else if (L_ECHO(tty)) {
tty884drivers/char/tty_io.cif (c != EOF_CHAR(tty) || !L_ICANON(tty) ||
tty885drivers/char/tty_io.ctty->lnext) {
tty887drivers/char/tty_io.cif (tty->canon_head == tty->secondary.head)
tty888drivers/char/tty_io.ctty->canon_column = tty->column;
tty889drivers/char/tty_io.cecho_char(c, tty);
tty893drivers/char/tty_io.cif (I_PARMRK(tty) && c == (unsigned char) '\377' &&
tty894drivers/char/tty_io.c(c != EOF_CHAR(tty) || !L_ICANON(tty) || tty->lnext))
tty895drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty897drivers/char/tty_io.cif (L_ICANON(tty) && !tty->lnext &&
tty898drivers/char/tty_io.c(c == '\n' || c == EOF_CHAR(tty) || c == EOL_CHAR(tty) ||
tty899drivers/char/tty_io.c(c == EOL2_CHAR(tty) && L_IEXTEN(tty)))) {
tty900drivers/char/tty_io.cif (c == EOF_CHAR(tty))
tty902drivers/char/tty_io.cset_bit(tty->secondary.head, &tty->secondary_flags);
tty903drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty904drivers/char/tty_io.ctty->canon_head = tty->secondary.head;
tty905drivers/char/tty_io.ctty->canon_data++;
tty907drivers/char/tty_io.cput_tty_queue(c, &tty->secondary);
tty908drivers/char/tty_io.ctty->lnext = 0;
tty910drivers/char/tty_io.cif (!EMPTY(&tty->write_q))
tty911drivers/char/tty_io.cTTY_WRITE_FLUSH(tty);
tty912drivers/char/tty_io.cif (L_ICANON(tty) ? tty->canon_data : !EMPTY(&tty->secondary))
tty913drivers/char/tty_io.cwake_up_interruptible(&tty->secondary.proc_list);
tty915drivers/char/tty_io.cif (tty->throttle && (LEFT(&tty->read_q) >= RQ_THRESHOLD_HW)
tty916drivers/char/tty_io.c&& clear_bit(TTY_RQ_THROTTLED, &tty->flags))
tty917drivers/char/tty_io.ctty->throttle(tty, TTY_THROTTLE_RQ_AVAIL);
tty926drivers/char/tty_io.cstatic inline int input_available_p(struct tty_struct *tty)
tty929drivers/char/tty_io.cif (L_ICANON(tty)) {
tty930drivers/char/tty_io.cif (tty->canon_data || FULL(&tty->read_q))
tty932drivers/char/tty_io.c} else if (!EMPTY(&tty->secondary))
tty936drivers/char/tty_io.cTTY_READ_FLUSH(tty);
tty937drivers/char/tty_io.cif (tty->link)
tty938drivers/char/tty_io.cTTY_WRITE_FLUSH(tty->link);
tty940drivers/char/tty_io.cif (L_ICANON(tty)) {
tty941drivers/char/tty_io.cif (tty->canon_data || FULL(&tty->read_q))
tty943drivers/char/tty_io.c} else if (!EMPTY(&tty->secondary))
tty948drivers/char/tty_io.cstatic int read_chan(struct tty_struct *tty, struct file *file,
tty957drivers/char/tty_io.cif (L_ICANON(tty)) {
tty961drivers/char/tty_io.ctime = (HZ / 10) * TIME_CHAR(tty);
tty962drivers/char/tty_io.cminimum = MIN_CHAR(tty);
tty975drivers/char/tty_io.cadd_wait_queue(&tty->secondary.proc_list, &wait);
tty981drivers/char/tty_io.ccurrent->tty == tty->line) {
tty982drivers/char/tty_io.cif (tty->pgrp <= 0)
tty984drivers/char/tty_io.celse if (current->pgrp != tty->pgrp) {
tty996drivers/char/tty_io.cif (tty->packet && tty->link->ctrl_status) {
tty999drivers/char/tty_io.cput_fs_byte(tty->link->ctrl_status, b++);
tty1000drivers/char/tty_io.ctty->link->ctrl_status = 0;
tty1007drivers/char/tty_io.cif (!input_available_p(tty)) {
tty1008drivers/char/tty_io.cif (tty->flags & (1 << TTY_SLAVE_CLOSED)) {
tty1030drivers/char/tty_io.cif (tty->packet && b == buf) {
tty1039drivers/char/tty_io.cif (EMPTY(&tty->secondary)) {
tty1043drivers/char/tty_io.ceol = clear_bit(tty->secondary.tail,
tty1044drivers/char/tty_io.c&tty->secondary_flags);
tty1045drivers/char/tty_io.cc = tty->secondary.buf[tty->secondary.tail];
tty1046drivers/char/tty_io.cINC(tty->secondary.tail);
tty1049drivers/char/tty_io.cif (--tty->canon_data < 0) {
tty1051drivers/char/tty_io.ctty->canon_data = 0;
tty1065drivers/char/tty_io.cif (tty->throttle && (LEFT(&tty->secondary) >= SQ_THRESHOLD_HW)
tty1066drivers/char/tty_io.c&& !clear_bit(TTY_SQ_THROTTLED, &tty->flags))
tty1067drivers/char/tty_io.ctty->throttle(tty, TTY_THROTTLE_SQ_AVAIL);
tty1075drivers/char/tty_io.cremove_wait_queue(&tty->secondary.proc_list, &wait);
tty1081drivers/char/tty_io.cstatic int write_chan(struct tty_struct * tty, struct file * file,
tty1090drivers/char/tty_io.cif (L_TOSTOP(tty) && file->f_inode->i_rdev != CONSOLE_DEV) {
tty1091drivers/char/tty_io.cretval = check_change(tty, tty->line);
tty1096drivers/char/tty_io.cadd_wait_queue(&tty->write_q.proc_list, &wait);
tty1103drivers/char/tty_io.cif (tty_hung_up_p(file) || (tty->link && !tty->link->count)) {
tty1111drivers/char/tty_io.cif (opost(c, tty) < 0)
tty1115drivers/char/tty_io.cTTY_WRITE_FLUSH(tty);
tty1118drivers/char/tty_io.cif (EMPTY(&tty->write_q) && !need_resched)
tty1123drivers/char/tty_io.cremove_wait_queue(&tty->write_q.proc_list, &wait);
tty1130drivers/char/tty_io.cstruct tty_struct * tty;
tty1138drivers/char/tty_io.ctty = TTY_TABLE(dev);
tty1139drivers/char/tty_io.cif (!tty || (tty->flags & (1 << TTY_IO_ERROR)))
tty1148drivers/char/tty_io.c(tty->pgrp > 0) &&
tty1149drivers/char/tty_io.c(current->tty == dev) &&
tty1150drivers/char/tty_io.c(tty->pgrp != current->pgrp))
tty1158drivers/char/tty_io.cif (ldiscs[tty->disc].read)
tty1160drivers/char/tty_io.ci = (ldiscs[tty->disc].read)(tty,file,(unsigned char *)buf,(unsigned int)count);
tty1171drivers/char/tty_io.cstruct tty_struct * tty;
tty1181drivers/char/tty_io.ctty = redirect;
tty1183drivers/char/tty_io.ctty = TTY_TABLE(dev);
tty1184drivers/char/tty_io.cif (!tty || !tty->write || (tty->flags & (1 << TTY_IO_ERROR)))
tty1187drivers/char/tty_io.cif (!is_console && L_TOSTOP(tty) && (tty->pgrp > 0) &&
tty1188drivers/char/tty_io.c(current->tty == dev) && (tty->pgrp != current->pgrp)) {
tty1197drivers/char/tty_io.cif (ldiscs[tty->disc].write)
tty1199drivers/char/tty_io.ci = (ldiscs[tty->disc].write)(tty,file,(unsigned char *)buf,(unsigned int)count);
tty1214drivers/char/tty_io.cstruct tty_struct *tty, *o_tty;
tty1220drivers/char/tty_io.ctty = o_tty = NULL;
tty1228drivers/char/tty_io.cif (!tty_table[dev] && !tty) {
tty1229drivers/char/tty_io.cif (!(tty = (struct tty_struct*) get_free_page(GFP_KERNEL)))
tty1231drivers/char/tty_io.cinitialize_tty_struct(dev, tty);
tty1283drivers/char/tty_io.ctty->termios = tty_termios[dev];
tty1284drivers/char/tty_io.ctty_table[dev] = tty;
tty1285drivers/char/tty_io.ctty = NULL;
tty1313drivers/char/tty_io.cif (tty)
tty1314drivers/char/tty_io.cfree_page((unsigned long) tty);
tty1335drivers/char/tty_io.cstruct tty_struct *tty, *o_tty;
tty1339drivers/char/tty_io.ctty = tty_table[dev];
tty1343drivers/char/tty_io.cif (!tty) {
tty1352drivers/char/tty_io.cprintk("release_dev of tty%d (tty count=%d)...", dev, tty->count);
tty1365drivers/char/tty_io.cif (tty->link != o_tty || o_tty->link != tty) {
tty1370drivers/char/tty_io.ctty->write_data_cnt = 0; /* Clear out pending trash */
tty1371drivers/char/tty_io.cif (tty->close)
tty1372drivers/char/tty_io.ctty->close(tty, filp);
tty1374drivers/char/tty_io.cif (--tty->link->count < 0) {
tty1376drivers/char/tty_io.cdev, tty->count);
tty1377drivers/char/tty_io.ctty->link->count = 0;
tty1380drivers/char/tty_io.cif (--tty->count < 0) {
tty1382drivers/char/tty_io.cdev, tty->count);
tty1383drivers/char/tty_io.ctty->count = 0;
tty1385drivers/char/tty_io.cif (tty->count)
tty1397drivers/char/tty_io.cif ((*p) && (*p)->tty == tty->line)
tty1398drivers/char/tty_io.c(*p)->tty = -1;
tty1405drivers/char/tty_io.cif (ldiscs[tty->disc].close != NULL)
tty1406drivers/char/tty_io.cldiscs[tty->disc].close(tty);
tty1407drivers/char/tty_io.ctty->disc = N_TTY;
tty1408drivers/char/tty_io.ctty->termios->c_line = N_TTY;
tty1423drivers/char/tty_io.cif (tty == redirect || o_tty == redirect)
tty1425drivers/char/tty_io.cfree_page((unsigned long) tty);
tty1446drivers/char/tty_io.cstruct tty_struct *tty;
tty1457drivers/char/tty_io.cminor = current->tty;
tty1477drivers/char/tty_io.ctty = tty_table[minor];
tty1479drivers/char/tty_io.cprintk("opening tty%d...", tty->line);
tty1481drivers/char/tty_io.cif (test_bit(TTY_EXCLUSIVE, &tty->flags) && !suser())
tty1497drivers/char/tty_io.ctty->ctrl_status = 0;
tty1498drivers/char/tty_io.ctty->packet = 0;
tty1501drivers/char/tty_io.cif (tty->open) {
tty1502drivers/char/tty_io.cretval = tty->open(tty, filp);
tty1508drivers/char/tty_io.cprintk("error %d in opening tty%d...", retval, tty->line);
tty1521drivers/char/tty_io.ccurrent->tty<0 &&
tty1522drivers/char/tty_io.ctty->session==0) {
tty1523drivers/char/tty_io.ccurrent->tty = minor;
tty1524drivers/char/tty_io.ctty->session = current->session;
tty1525drivers/char/tty_io.ctty->pgrp = current->pgrp;
tty1556drivers/char/tty_io.cstruct tty_struct * tty;
tty1564drivers/char/tty_io.ctty = TTY_TABLE(dev);
tty1565drivers/char/tty_io.cif (!tty) {
tty1569drivers/char/tty_io.cif (ldiscs[tty->disc].select)
tty1570drivers/char/tty_io.creturn (ldiscs[tty->disc].select)(tty, inode, filp,
tty1575drivers/char/tty_io.cstatic int normal_select(struct tty_struct * tty, struct inode * inode,
tty1580drivers/char/tty_io.cif (input_available_p(tty))
tty1584drivers/char/tty_io.cif (tty->packet && tty->link->ctrl_status)
tty1586drivers/char/tty_io.cif (tty->flags & (1 << TTY_SLAVE_CLOSED))
tty1590drivers/char/tty_io.cselect_wait(&tty->secondary.proc_list, wait);
tty1593drivers/char/tty_io.cif (!FULL(&tty->write_q))
tty1595drivers/char/tty_io.cselect_wait(&tty->write_q.proc_list, wait);
tty1613drivers/char/tty_io.cvoid do_SAK( struct tty_struct *tty)
tty1616drivers/char/tty_io.ctty_hangup(tty);
tty1619drivers/char/tty_io.cint line = tty->line;
tty1620drivers/char/tty_io.cint session = tty->session;
tty1624drivers/char/tty_io.cflush_input(tty);
tty1625drivers/char/tty_io.cflush_output(tty);
tty1629drivers/char/tty_io.cif (((*p)->tty == line) ||
tty1661drivers/char/tty_io.cint tty_write_data(struct tty_struct *tty, char *bufp, int buflen,
tty1672drivers/char/tty_io.cif (tty->write_data_cnt) {
tty1677drivers/char/tty_io.chead = tty->write_q.head;
tty1678drivers/char/tty_io.ctail = tty->write_q.tail;
tty1683drivers/char/tty_io.ctty->write_q.buf[head++] = *p++;
tty1687drivers/char/tty_io.ctty->write_q.head = head;
tty1689drivers/char/tty_io.ctty->write_data_cnt = count;
tty1690drivers/char/tty_io.ctty->write_data_ptr = (unsigned char *) p;
tty1691drivers/char/tty_io.ctty->write_data_callback = callback;
tty1692drivers/char/tty_io.ctty->write_data_arg = callarg;
tty1695drivers/char/tty_io.ctty->write(tty);
tty1712drivers/char/tty_io.cstruct tty_struct * tty;
tty1721drivers/char/tty_io.ctty = tty_table[line];
tty1722drivers/char/tty_io.cif (!tty || !tty->write_data_cnt)
tty1725drivers/char/tty_io.chead = tty->write_q.head;
tty1726drivers/char/tty_io.ctail = tty->write_q.tail;
tty1727drivers/char/tty_io.ccount = tty->write_data_cnt;
tty1728drivers/char/tty_io.cp = tty->write_data_ptr;
tty1731drivers/char/tty_io.ctty->write_q.buf[head++] = *p++;
tty1735drivers/char/tty_io.ctty->write_q.head = head;
tty1736drivers/char/tty_io.ctty->write_data_ptr = p;
tty1737drivers/char/tty_io.ctty->write_data_cnt = count;
tty1740drivers/char/tty_io.c(tty->write_data_callback)
tty1741drivers/char/tty_io.c(tty->write_data_arg);
tty1752drivers/char/tty_io.cstatic void initialize_tty_struct(int line, struct tty_struct *tty)
tty1754drivers/char/tty_io.cmemset(tty, 0, sizeof(struct tty_struct));
tty1755drivers/char/tty_io.ctty->line = line;
tty1756drivers/char/tty_io.ctty->disc = N_TTY;
tty1757drivers/char/tty_io.ctty->pgrp = -1;
tty1759drivers/char/tty_io.ctty->open = con_open;
tty1760drivers/char/tty_io.ctty->winsize.ws_row = video_num_lines;
tty1761drivers/char/tty_io.ctty->winsize.ws_col = video_num_columns;
tty1763drivers/char/tty_io.ctty->open = rs_open;
tty1765drivers/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)
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);
tty98drivers/char/tty_ioctl.cTTY_WRITE_FLUSH(tty);
tty99drivers/char/tty_ioctl.cif (EMPTY(&tty->write_q))
tty104drivers/char/tty_ioctl.cremove_wait_queue(&tty->write_q.proc_list, &wait);
tty159drivers/char/tty_ioctl.cint check_change(struct tty_struct * tty, int channel)
tty164drivers/char/tty_ioctl.cif (current->tty != channel)
tty166drivers/char/tty_ioctl.cif (tty->pgrp <= 0) {
tty170drivers/char/tty_ioctl.cif (current->pgrp == tty->pgrp)
tty180drivers/char/tty_ioctl.cstatic int set_termios_2(struct tty_struct * tty, struct termios * termios)
tty182drivers/char/tty_ioctl.cstruct termios old_termios = *tty->termios;
tty187drivers/char/tty_ioctl.c*tty->termios = *termios;
tty189drivers/char/tty_ioctl.cmemset(&tty->secondary_flags, 0, sizeof tty->secondary_flags);
tty190drivers/char/tty_ioctl.ctty->canon_head = tty->secondary.tail;
tty191drivers/char/tty_ioctl.ctty->canon_data = 0;
tty192drivers/char/tty_ioctl.ctty->erasing = 0;
tty195drivers/char/tty_ioctl.cif (canon_change && !L_ICANON(tty) && !EMPTY(&tty->secondary))
tty197drivers/char/tty_ioctl.cwake_up_interruptible(&tty->secondary.proc_list);
tty201drivers/char/tty_ioctl.cif (tty->link && tty->link->packet) {
tty205drivers/char/tty_ioctl.cint new_flow = (I_IXON(tty) &&
tty206drivers/char/tty_ioctl.cSTOP_CHAR(tty) == '\023' &&
tty207drivers/char/tty_ioctl.cSTART_CHAR(tty) == '\021');
tty209drivers/char/tty_ioctl.ctty->ctrl_status &= ~(TIOCPKT_DOSTOP | TIOCPKT_NOSTOP);
tty211drivers/char/tty_ioctl.ctty->ctrl_status |= TIOCPKT_DOSTOP;
tty213drivers/char/tty_ioctl.ctty->ctrl_status |= TIOCPKT_NOSTOP;
tty214drivers/char/tty_ioctl.cwake_up_interruptible(&tty->link->secondary.proc_list);
tty218drivers/char/tty_ioctl.cunset_locked_termios(tty->termios, &old_termios,
tty219drivers/char/tty_ioctl.ctermios_locked[tty->line]);
tty221drivers/char/tty_ioctl.cif (tty->set_termios)
tty222drivers/char/tty_ioctl.c(*tty->set_termios)(tty, &old_termios);
tty227drivers/char/tty_ioctl.cstatic int set_termios(struct tty_struct * tty, struct termios * termios,
tty233drivers/char/tty_ioctl.creturn set_termios_2(tty, &tmp_termios);
tty236drivers/char/tty_ioctl.cstatic int get_termio(struct tty_struct * tty, struct termio * termio)
tty244drivers/char/tty_ioctl.ctmp_termio.c_iflag = tty->termios->c_iflag;
tty245drivers/char/tty_ioctl.ctmp_termio.c_oflag = tty->termios->c_oflag;
tty246drivers/char/tty_ioctl.ctmp_termio.c_cflag = tty->termios->c_cflag;
tty247drivers/char/tty_ioctl.ctmp_termio.c_lflag = tty->termios->c_lflag;
tty248drivers/char/tty_ioctl.ctmp_termio.c_line = tty->termios->c_line;
tty250drivers/char/tty_ioctl.ctmp_termio.c_cc[i] = tty->termios->c_cc[i];
tty255drivers/char/tty_ioctl.cstatic int set_termio(struct tty_struct * tty, struct termio * termio,
tty261drivers/char/tty_ioctl.ctmp_termios = *tty->termios;
tty274drivers/char/tty_ioctl.creturn set_termios_2(tty, &tmp_termios);
tty277drivers/char/tty_ioctl.cstatic int set_window_size(struct tty_struct * tty, struct winsize * ws)
tty282drivers/char/tty_ioctl.cif (memcmp(&tmp_ws, &tty->winsize, sizeof (struct winsize)) &&
tty283drivers/char/tty_ioctl.ctty->pgrp > 0)
tty284drivers/char/tty_ioctl.ckill_pg(tty->pgrp, SIGWINCH, 1);
tty285drivers/char/tty_ioctl.ctty->winsize = tmp_ws;
tty290drivers/char/tty_ioctl.cstatic int tty_set_ldisc(struct tty_struct *tty, int ldisc)
tty296drivers/char/tty_ioctl.cif (tty->disc == ldisc)
tty300drivers/char/tty_ioctl.cwait_until_sent(tty);
tty301drivers/char/tty_ioctl.cflush_input(tty);
tty302drivers/char/tty_ioctl.cif (ldiscs[tty->disc].close)
tty303drivers/char/tty_ioctl.cldiscs[tty->disc].close(tty);
tty306drivers/char/tty_ioctl.ctty->disc = ldisc;
tty307drivers/char/tty_ioctl.ctty->termios->c_line = ldisc;
tty308drivers/char/tty_ioctl.cif (ldiscs[tty->disc].open)
tty309drivers/char/tty_ioctl.creturn(ldiscs[tty->disc].open(tty));
tty314drivers/char/tty_ioctl.cstatic unsigned long inq_canon(struct tty_struct * tty)
tty318drivers/char/tty_ioctl.cif (!tty->canon_data)
tty320drivers/char/tty_ioctl.chead = tty->canon_head;
tty321drivers/char/tty_ioctl.ctail = tty->secondary.tail;
tty325drivers/char/tty_ioctl.cif (test_bit(tail, &tty->secondary_flags) &&
tty326drivers/char/tty_ioctl.ctty->secondary.buf[tail] == __DISABLED_CHAR)
tty336drivers/char/tty_ioctl.cstruct tty_struct * tty;
tty349drivers/char/tty_ioctl.ctty = TTY_TABLE(dev);
tty350drivers/char/tty_ioctl.cif (!tty)
tty360drivers/char/tty_ioctl.ctermios_tty = tty;
tty402drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty407drivers/char/tty_ioctl.cstop_tty(tty);
tty410drivers/char/tty_ioctl.cstart_tty(tty);
tty413drivers/char/tty_ioctl.cif (STOP_CHAR(tty) != __DISABLED_CHAR)
tty414drivers/char/tty_ioctl.cput_tty_queue(STOP_CHAR(tty),
tty415drivers/char/tty_ioctl.c&tty->write_q);
tty418drivers/char/tty_ioctl.cif (START_CHAR(tty) != __DISABLED_CHAR)
tty419drivers/char/tty_ioctl.cput_tty_queue(START_CHAR(tty),
tty420drivers/char/tty_ioctl.c&tty->write_q);
tty427drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty432drivers/char/tty_ioctl.cflush_input(tty);
tty435drivers/char/tty_ioctl.cflush_input(tty);
tty438drivers/char/tty_ioctl.cflush_output(tty);
tty445drivers/char/tty_ioctl.cset_bit(TTY_EXCLUSIVE, &tty->flags);
tty448drivers/char/tty_ioctl.cclear_bit(TTY_EXCLUSIVE, &tty->flags);
tty452drivers/char/tty_ioctl.c(current->session == tty->session))
tty458drivers/char/tty_ioctl.cif (!current->leader || (current->tty >= 0))
tty460drivers/char/tty_ioctl.cif (tty->session > 0) {
tty472drivers/char/tty_ioctl.cif (p->tty == dev)
tty473drivers/char/tty_ioctl.cp->tty = -1;
tty477drivers/char/tty_ioctl.ccurrent->tty = dev;
tty478drivers/char/tty_ioctl.ctty->session = current->session;
tty479drivers/char/tty_ioctl.ctty->pgrp = current->pgrp;
tty492drivers/char/tty_ioctl.cif ((current->tty < 0) ||
tty493drivers/char/tty_ioctl.c(current->tty != termios_dev) ||
tty508drivers/char/tty_ioctl.cput_fs_long(CHARS(&tty->write_q),
tty516drivers/char/tty_ioctl.cif (L_ICANON(tty))
tty517drivers/char/tty_ioctl.cput_fs_long(inq_canon(tty),
tty520drivers/char/tty_ioctl.cput_fs_long(CHARS(&tty->secondary),
tty524drivers/char/tty_ioctl.cif ((current->tty != dev) && !suser())
tty526drivers/char/tty_ioctl.cput_tty_queue(get_fs_byte((char *) arg), &tty->read_q);
tty527drivers/char/tty_ioctl.cTTY_READ_FLUSH(tty);
tty534drivers/char/tty_ioctl.cmemcpy_tofs((struct winsize *) arg, &tty->winsize,
tty540drivers/char/tty_ioctl.creturn set_window_size(tty,(struct winsize *) arg);
tty552drivers/char/tty_ioctl.creturn paste_selection(tty);
tty571drivers/char/tty_ioctl.credirect = tty;
tty583drivers/char/tty_ioctl.cif (MINOR(file->f_rdev) != current->tty)
tty587drivers/char/tty_ioctl.ccurrent->tty = -1;
tty594drivers/char/tty_ioctl.cput_fs_long(tty->disc, (unsigned long *) arg);
tty597drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty601drivers/char/tty_ioctl.creturn tty_set_ldisc(tty, arg);
tty628drivers/char/tty_ioctl.cif (!tty->packet) {
tty629drivers/char/tty_ioctl.ctty->packet = 1;
tty630drivers/char/tty_ioctl.ctty->ctrl_status = 0;
tty633drivers/char/tty_ioctl.ctty->packet = 0;
tty636drivers/char/tty_ioctl.cretval = check_change(tty, dev);
tty639drivers/char/tty_ioctl.cwait_until_sent(tty);
tty640drivers/char/tty_ioctl.cif (!tty->ioctl)
tty642drivers/char/tty_ioctl.ctty->ioctl(tty, file, cmd, arg);
tty645drivers/char/tty_ioctl.cif (tty->ioctl) {
tty646drivers/char/tty_ioctl.cretval = (tty->ioctl)(tty, file, cmd, arg);
tty650drivers/char/tty_ioctl.cif (ldiscs[tty->disc].ioctl) {
tty651drivers/char/tty_ioctl.cretval = (ldiscs[tty->disc].ioctl)
tty652drivers/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);
tty148drivers/net/slip.csl->tty    = NULL;
tty168drivers/net/slip.csl_find(struct tty_struct *tty)
tty173drivers/net/slip.cif (tty == NULL) return(NULL);
tty176drivers/net/slip.cif (sl->tty == tty) return(sl);
tty196drivers/net/slip.csl->tty = NULL;
tty216drivers/net/slip.csl->tty = NULL;
tty496drivers/net/slip.cif (tty_write_data(sl->tty, (char *) bp, count,
tty523drivers/net/slip.cstruct tty_struct *tty;
tty528drivers/net/slip.ctty = sl->tty;
tty630drivers/net/slip.cif (sl->tty == NULL) {
tty705drivers/net/slip.cif (sl->tty == NULL) {
tty731drivers/net/slip.cslip_recv(struct tty_struct *tty)
tty738drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: slip_recv(%d) called\n", tty->line));
tty739drivers/net/slip.cif ((sl = sl_find(tty)) == NULL) return;  /* not connected */
tty746drivers/net/slip.ccount = tty_read_raw_data(tty, buff, 128);
tty795drivers/net/slip.cslip_open(struct tty_struct *tty)
tty800drivers/net/slip.cif ((sl = sl_find(tty)) != NULL) {
tty802drivers/net/slip.ctty->line, sl->dev->name));
tty809drivers/net/slip.ctty->line));
tty812drivers/net/slip.csl->tty = tty;
tty813drivers/net/slip.ctty_read_flush(tty);
tty814drivers/net/slip.ctty_write_flush(tty);
tty819drivers/net/slip.ctty->line, sl->dev->name));
tty864drivers/net/slip.cslip_close(struct tty_struct *tty)
tty869drivers/net/slip.cif ((sl = sl_find(tty)) == NULL) {
tty870drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: TTY %d not connected !\n", tty->line));
tty876drivers/net/slip.ctty->line, sl->dev->name));
tty1064drivers/net/slip.cslip_ioctl(struct tty_struct *tty, void *file, int cmd, void *arg)
tty1070drivers/net/slip.cif ((sl = sl_find(tty)) == NULL) {
tty1071drivers/net/slip.cDPRINTF((DBG_SLIP, "SLIP: ioctl: TTY %d not connected !\n", tty->line));
tty1075drivers/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);
tty286fs/proc/array.ctty_pgrp = (*p)->tty;
tty300fs/proc/array.c(*p)->tty,
tty217include/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);
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,
tty516kernel/sys.ccurrent->tty = -1;