tag | line | file | source code |
tty | 151 | include/linux/sched.h | int tty; /* -1 if no tty, so it must be signed */ |
tty | 76 | include/linux/tty.h | struct tty_struct * tty; |
tty | 106 | include/linux/tty.h | #define INTR_CHAR(tty) ((tty)->termios.c_cc[VINTR]) |
tty | 107 | include/linux/tty.h | #define QUIT_CHAR(tty) ((tty)->termios.c_cc[VQUIT]) |
tty | 108 | include/linux/tty.h | #define ERASE_CHAR(tty) ((tty)->termios.c_cc[VERASE]) |
tty | 109 | include/linux/tty.h | #define KILL_CHAR(tty) ((tty)->termios.c_cc[VKILL]) |
tty | 110 | include/linux/tty.h | #define EOF_CHAR(tty) ((tty)->termios.c_cc[VEOF]) |
tty | 111 | include/linux/tty.h | #define START_CHAR(tty) ((tty)->termios.c_cc[VSTART]) |
tty | 112 | include/linux/tty.h | #define STOP_CHAR(tty) ((tty)->termios.c_cc[VSTOP]) |
tty | 113 | include/linux/tty.h | #define SUSPEND_CHAR(tty) ((tty)->termios.c_cc[VSUSP]) |
tty | 115 | include/linux/tty.h | #define _L_FLAG(tty,f) ((tty)->termios.c_lflag & f) |
tty | 116 | include/linux/tty.h | #define _I_FLAG(tty,f) ((tty)->termios.c_iflag & f) |
tty | 117 | include/linux/tty.h | #define _O_FLAG(tty,f) ((tty)->termios.c_oflag & f) |
tty | 119 | include/linux/tty.h | #define L_CANON(tty) _L_FLAG((tty),ICANON) |
tty | 120 | include/linux/tty.h | #define L_ISIG(tty) _L_FLAG((tty),ISIG) |
tty | 121 | include/linux/tty.h | #define L_ECHO(tty) _L_FLAG((tty),ECHO) |
tty | 122 | include/linux/tty.h | #define L_ECHOE(tty) _L_FLAG((tty),ECHOE) |
tty | 123 | include/linux/tty.h | #define L_ECHOK(tty) _L_FLAG((tty),ECHOK) |
tty | 124 | include/linux/tty.h | #define L_ECHONL(tty) _L_FLAG((tty),ECHONL) |
tty | 125 | include/linux/tty.h | #define L_ECHOCTL(tty) _L_FLAG((tty),ECHOCTL) |
tty | 126 | include/linux/tty.h | #define L_ECHOKE(tty) _L_FLAG((tty),ECHOKE) |
tty | 127 | include/linux/tty.h | #define L_TOSTOP(tty) _L_FLAG((tty),TOSTOP) |
tty | 129 | include/linux/tty.h | #define I_UCLC(tty) _I_FLAG((tty),IUCLC) |
tty | 130 | include/linux/tty.h | #define I_NLCR(tty) _I_FLAG((tty),INLCR) |
tty | 131 | include/linux/tty.h | #define I_CRNL(tty) _I_FLAG((tty),ICRNL) |
tty | 132 | include/linux/tty.h | #define I_NOCR(tty) _I_FLAG((tty),IGNCR) |
tty | 133 | include/linux/tty.h | #define I_IXON(tty) _I_FLAG((tty),IXON) |
tty | 134 | include/linux/tty.h | #define I_STRP(tty) _I_FLAG((tty),ISTRIP) |
tty | 136 | include/linux/tty.h | #define O_POST(tty) _O_FLAG((tty),OPOST) |
tty | 137 | include/linux/tty.h | #define O_NLCR(tty) _O_FLAG((tty),ONLCR) |
tty | 138 | include/linux/tty.h | #define O_CRNL(tty) _O_FLAG((tty),OCRNL) |
tty | 139 | include/linux/tty.h | #define O_NLRET(tty) _O_FLAG((tty),ONLRET) |
tty | 140 | include/linux/tty.h | #define O_LCUC(tty) _O_FLAG((tty),OLCUC) |
tty | 142 | include/linux/tty.h | #define C_SPEED(tty) ((tty)->termios.c_cflag & CBAUD) |
tty | 143 | include/linux/tty.h | #define C_HUP(tty) (C_SPEED((tty)) == B0) |
tty | 153 | include/linux/tty.h | void (*write)(struct tty_struct * tty); |
tty | 194 | include/linux/tty.h | #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) |
tty | 195 | include/linux/tty.h | #define TTY_READ_FLUSH(tty) tty_read_flush((tty)) |
tty | 224 | include/linux/tty.h | extern void flush_input(struct tty_struct * tty); |
tty | 225 | include/linux/tty.h | extern void flush_output(struct tty_struct * tty); |
tty | 226 | include/linux/tty.h | extern void wait_until_sent(struct tty_struct * tty); |
tty | 227 | include/linux/tty.h | extern void copy_to_cooked(struct tty_struct * tty); |
tty | 232 | include/linux/tty.h | extern int tty_signal(int sig, struct tty_struct *tty); |
tty | 237 | include/linux/tty.h | extern void rs_write(struct tty_struct * tty); |
tty | 238 | include/linux/tty.h | extern void con_write(struct tty_struct * tty); |
tty | 239 | include/linux/tty.h | extern void mpty_write(struct tty_struct * tty); |
tty | 240 | include/linux/tty.h | extern void spty_write(struct tty_struct * tty); |
tty | 605 | kernel/chr_drv/console.c | static void respond_string(char * p, int currcons, struct tty_struct * tty) |
tty | 608 | kernel/chr_drv/console.c | put_tty_queue(*p,tty->read_q); |
tty | 611 | kernel/chr_drv/console.c | TTY_READ_FLUSH(tty); |
tty | 614 | kernel/chr_drv/console.c | static void respond_num(unsigned int n, int currcons, struct tty_struct * tty) |
tty | 624 | kernel/chr_drv/console.c | put_tty_queue(buff[i],tty->read_q); |
tty | 629 | kernel/chr_drv/console.c | static void cursor_report(int currcons, struct tty_struct * tty) |
tty | 631 | kernel/chr_drv/console.c | put_tty_queue('\033', tty->read_q); |
tty | 632 | kernel/chr_drv/console.c | put_tty_queue('[', tty->read_q); |
tty | 633 | kernel/chr_drv/console.c | respond_num(y + (decom ? top+1 : 1), currcons, tty); |
tty | 634 | kernel/chr_drv/console.c | put_tty_queue(';', tty->read_q); |
tty | 635 | kernel/chr_drv/console.c | respond_num(x+1, currcons, tty); |
tty | 636 | kernel/chr_drv/console.c | put_tty_queue('R', tty->read_q); |
tty | 637 | kernel/chr_drv/console.c | TTY_READ_FLUSH(tty); |
tty | 640 | kernel/chr_drv/console.c | static inline void status_report(int currcons, struct tty_struct * tty) |
tty | 642 | kernel/chr_drv/console.c | respond_string("\033[0n", currcons, tty); /* Terminal ok */ |
tty | 645 | kernel/chr_drv/console.c | static inline void respond_ID(int currcons, struct tty_struct * tty) |
tty | 647 | kernel/chr_drv/console.c | respond_string(VT102ID, currcons, tty); |
tty | 897 | kernel/chr_drv/console.c | void con_write(struct tty_struct * tty) |
tty | 902 | kernel/chr_drv/console.c | wake_up(&tty->write_q->proc_list); |
tty | 903 | kernel/chr_drv/console.c | currcons = tty - tty_table; |
tty | 908 | kernel/chr_drv/console.c | while (!tty->stopped && (c = get_tty_queue(tty->write_q)) >= 0) { |
tty | 993 | kernel/chr_drv/console.c | respond_ID(currcons,tty); |
tty | 1053 | kernel/chr_drv/console.c | status_report(currcons,tty); |
tty | 1055 | kernel/chr_drv/console.c | cursor_report(currcons,tty); |
tty | 1117 | kernel/chr_drv/console.c | respond_ID(currcons,tty); |
tty | 69 | kernel/chr_drv/keyboard.c | struct tty_struct * tty = TTY_TABLE(0); |
tty | 116 | kernel/chr_drv/keyboard.c | else if (!(krepeat && (L_ECHO(tty) || (EMPTY(tty->secondary) && |
tty | 117 | kernel/chr_drv/keyboard.c | EMPTY(tty->read_q))))) { |
tty | 25 | kernel/chr_drv/pty.c | struct tty_struct * tty; |
tty | 27 | kernel/chr_drv/pty.c | tty = tty_table + dev; |
tty | 28 | kernel/chr_drv/pty.c | if (!tty->link) |
tty | 30 | kernel/chr_drv/pty.c | wake_up(&tty->read_q->proc_list); |
tty | 33 | kernel/chr_drv/pty.c | while (!tty->link->count && !(current->signal & ~current->blocked)) |
tty | 34 | kernel/chr_drv/pty.c | interruptible_sleep_on(&tty->link->read_q->proc_list); |
tty | 35 | kernel/chr_drv/pty.c | if (!tty->link->count) |
tty | 42 | kernel/chr_drv/pty.c | struct tty_struct * tty; |
tty | 44 | kernel/chr_drv/pty.c | tty = tty_table + dev; |
tty | 45 | kernel/chr_drv/pty.c | wake_up(&tty->read_q->proc_list); |
tty | 46 | kernel/chr_drv/pty.c | wake_up(&tty->link->write_q->proc_list); |
tty | 48 | kernel/chr_drv/pty.c | if (tty->link->pgrp > 0) |
tty | 49 | kernel/chr_drv/pty.c | kill_pg(tty->link->pgrp,SIGHUP,1); |
tty | 78 | kernel/chr_drv/pty.c | void mpty_write(struct tty_struct * tty) |
tty | 80 | kernel/chr_drv/pty.c | if (tty->link) |
tty | 81 | kernel/chr_drv/pty.c | pty_copy(tty,tty->link); |
tty | 84 | kernel/chr_drv/pty.c | void spty_write(struct tty_struct * tty) |
tty | 86 | kernel/chr_drv/pty.c | if (tty->link) |
tty | 87 | kernel/chr_drv/pty.c | pty_copy(tty,tty->link); |
tty | 66 | kernel/chr_drv/serial.c | struct tty_queue * queue = info->tty->write_q; |
tty | 69 | kernel/chr_drv/serial.c | if (info->tty->stopped) return; |
tty | 79 | kernel/chr_drv/serial.c | if ((info->type != PORT_16550A) || (++i >= 14) || info->tty->stopped) |
tty | 92 | kernel/chr_drv/serial.c | struct tty_queue * queue = info->tty->read_q; |
tty | 119 | kernel/chr_drv/serial.c | if (!(info->tty->termios.c_cflag & CLOCAL)) { |
tty | 120 | kernel/chr_drv/serial.c | if ((status & 0x88) == 0x08 && info->tty->pgrp > 0) |
tty | 121 | kernel/chr_drv/serial.c | kill_pg(info->tty->pgrp,SIGHUP,1); |
tty | 123 | kernel/chr_drv/serial.c | if (info->tty->termios.c_cflag & CRTSCTS) |
tty | 124 | kernel/chr_drv/serial.c | info->tty->stopped = !(status & 0x10); |
tty | 126 | kernel/chr_drv/serial.c | if (!info->tty->stopped) |
tty | 142 | kernel/chr_drv/serial.c | if (!info || !info->tty || !info->port) |
tty | 161 | kernel/chr_drv/serial.c | if (!info->tty || !info->port) |
tty | 163 | kernel/chr_drv/serial.c | if (!info->tty->write_q || EMPTY(info->tty->write_q)) |
tty | 336 | kernel/chr_drv/serial.c | cflag = info->tty->termios.c_cflag; |
tty | 471 | kernel/chr_drv/serial.c | info->tty = (tty_table+64) + i; |
tty | 504 | kernel/chr_drv/serial.c | void rs_write(struct tty_struct * tty) |
tty | 506 | kernel/chr_drv/serial.c | int line = tty - tty_table - 64; |
tty | 85 | kernel/chr_drv/tty_io.c | void inline tty_write_flush(struct tty_struct * tty) |
tty | 87 | kernel/chr_drv/tty_io.c | if (EMPTY(tty->write_q)) |
tty | 89 | kernel/chr_drv/tty_io.c | if (set_bit(TTY_WRITE_BUSY,&tty->flags)) |
tty | 91 | kernel/chr_drv/tty_io.c | tty->write(tty); |
tty | 92 | kernel/chr_drv/tty_io.c | if (clear_bit(TTY_WRITE_BUSY,&tty->flags)) |
tty | 96 | kernel/chr_drv/tty_io.c | void tty_read_flush(struct tty_struct * tty) |
tty | 98 | kernel/chr_drv/tty_io.c | if (EMPTY(tty->read_q)) |
tty | 100 | kernel/chr_drv/tty_io.c | if (set_bit(TTY_READ_BUSY, &tty->flags)) |
tty | 102 | kernel/chr_drv/tty_io.c | copy_to_cooked(tty); |
tty | 103 | kernel/chr_drv/tty_io.c | if (clear_bit(TTY_READ_BUSY, &tty->flags)) |
tty | 132 | kernel/chr_drv/tty_io.c | void copy_to_cooked(struct tty_struct * tty) |
tty | 136 | kernel/chr_drv/tty_io.c | if (!(tty && tty->write && tty->read_q && |
tty | 137 | kernel/chr_drv/tty_io.c | tty->write_q && tty->secondary)) { |
tty | 142 | kernel/chr_drv/tty_io.c | if (FULL(tty->secondary)) |
tty | 144 | kernel/chr_drv/tty_io.c | c = get_tty_queue(tty->read_q); |
tty | 147 | kernel/chr_drv/tty_io.c | if (I_STRP(tty)) |
tty | 150 | kernel/chr_drv/tty_io.c | if (I_CRNL(tty)) |
tty | 152 | kernel/chr_drv/tty_io.c | else if (I_NOCR(tty)) |
tty | 154 | kernel/chr_drv/tty_io.c | } else if (c==10 && I_NLCR(tty)) |
tty | 156 | kernel/chr_drv/tty_io.c | if (I_UCLC(tty)) |
tty | 158 | kernel/chr_drv/tty_io.c | if (L_CANON(tty)) { |
tty | 159 | kernel/chr_drv/tty_io.c | if ((KILL_CHAR(tty) != __DISABLED_CHAR) && |
tty | 160 | kernel/chr_drv/tty_io.c | (c==KILL_CHAR(tty))) { |
tty | 162 | kernel/chr_drv/tty_io.c | while(!(EMPTY(tty->secondary) || |
tty | 163 | kernel/chr_drv/tty_io.c | (c=LAST(tty->secondary))==10 || |
tty | 164 | kernel/chr_drv/tty_io.c | ((EOF_CHAR(tty) != __DISABLED_CHAR) && |
tty | 165 | kernel/chr_drv/tty_io.c | (c==EOF_CHAR(tty))))) { |
tty | 166 | kernel/chr_drv/tty_io.c | if (L_ECHO(tty)) { |
tty | 168 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 169 | kernel/chr_drv/tty_io.c | put_tty_queue(' ',tty->write_q); |
tty | 170 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 172 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 173 | kernel/chr_drv/tty_io.c | put_tty_queue(' ',tty->write_q); |
tty | 174 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 176 | kernel/chr_drv/tty_io.c | DEC(tty->secondary->head); |
tty | 180 | kernel/chr_drv/tty_io.c | if ((ERASE_CHAR(tty) != __DISABLED_CHAR) && |
tty | 181 | kernel/chr_drv/tty_io.c | (c==ERASE_CHAR(tty))) { |
tty | 182 | kernel/chr_drv/tty_io.c | if (EMPTY(tty->secondary) || |
tty | 183 | kernel/chr_drv/tty_io.c | (c=LAST(tty->secondary))==10 || |
tty | 184 | kernel/chr_drv/tty_io.c | ((EOF_CHAR(tty) != __DISABLED_CHAR) && |
tty | 185 | kernel/chr_drv/tty_io.c | (c==EOF_CHAR(tty)))) |
tty | 187 | kernel/chr_drv/tty_io.c | if (L_ECHO(tty)) { |
tty | 189 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 190 | kernel/chr_drv/tty_io.c | put_tty_queue(' ',tty->write_q); |
tty | 191 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 193 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 194 | kernel/chr_drv/tty_io.c | put_tty_queue(32,tty->write_q); |
tty | 195 | kernel/chr_drv/tty_io.c | put_tty_queue(8,tty->write_q); |
tty | 197 | kernel/chr_drv/tty_io.c | DEC(tty->secondary->head); |
tty | 201 | kernel/chr_drv/tty_io.c | if (I_IXON(tty)) { |
tty | 202 | kernel/chr_drv/tty_io.c | if ((STOP_CHAR(tty) != __DISABLED_CHAR) && |
tty | 203 | kernel/chr_drv/tty_io.c | (c==STOP_CHAR(tty))) { |
tty | 204 | kernel/chr_drv/tty_io.c | tty->stopped=1; |
tty | 207 | kernel/chr_drv/tty_io.c | if ((START_CHAR(tty) != __DISABLED_CHAR) && |
tty | 208 | kernel/chr_drv/tty_io.c | (c==START_CHAR(tty))) { |
tty | 209 | kernel/chr_drv/tty_io.c | tty->stopped=0; |
tty | 213 | kernel/chr_drv/tty_io.c | if (L_ISIG(tty)) { |
tty | 214 | kernel/chr_drv/tty_io.c | if ((INTR_CHAR(tty) != __DISABLED_CHAR) && |
tty | 215 | kernel/chr_drv/tty_io.c | (c==INTR_CHAR(tty))) { |
tty | 216 | kernel/chr_drv/tty_io.c | kill_pg(tty->pgrp, SIGINT, 1); |
tty | 217 | kernel/chr_drv/tty_io.c | flush_input(tty); |
tty | 220 | kernel/chr_drv/tty_io.c | if ((QUIT_CHAR(tty) != __DISABLED_CHAR) && |
tty | 221 | kernel/chr_drv/tty_io.c | (c==QUIT_CHAR(tty))) { |
tty | 222 | kernel/chr_drv/tty_io.c | kill_pg(tty->pgrp, SIGQUIT, 1); |
tty | 223 | kernel/chr_drv/tty_io.c | flush_input(tty); |
tty | 226 | kernel/chr_drv/tty_io.c | if ((SUSPEND_CHAR(tty) != __DISABLED_CHAR) && |
tty | 227 | kernel/chr_drv/tty_io.c | (c==SUSPEND_CHAR(tty))) { |
tty | 228 | kernel/chr_drv/tty_io.c | if (!is_orphaned_pgrp(tty->pgrp)) |
tty | 229 | kernel/chr_drv/tty_io.c | kill_pg(tty->pgrp, SIGTSTP, 1); |
tty | 233 | kernel/chr_drv/tty_io.c | if (c==10 || (EOF_CHAR(tty) != __DISABLED_CHAR && |
tty | 234 | kernel/chr_drv/tty_io.c | c==EOF_CHAR(tty))) |
tty | 235 | kernel/chr_drv/tty_io.c | tty->secondary->data++; |
tty | 236 | kernel/chr_drv/tty_io.c | if ((c==10) && (L_ECHO(tty) || (L_CANON(tty) && L_ECHONL(tty)))) { |
tty | 237 | kernel/chr_drv/tty_io.c | put_tty_queue(10,tty->write_q); |
tty | 238 | kernel/chr_drv/tty_io.c | put_tty_queue(13,tty->write_q); |
tty | 239 | kernel/chr_drv/tty_io.c | } else if (L_ECHO(tty)) { |
tty | 240 | kernel/chr_drv/tty_io.c | if (c<32 && L_ECHOCTL(tty)) { |
tty | 241 | kernel/chr_drv/tty_io.c | put_tty_queue('^',tty->write_q); |
tty | 242 | kernel/chr_drv/tty_io.c | put_tty_queue(c+64,tty->write_q); |
tty | 244 | kernel/chr_drv/tty_io.c | put_tty_queue(c,tty->write_q); |
tty | 246 | kernel/chr_drv/tty_io.c | put_tty_queue(c,tty->secondary); |
tty | 248 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty); |
tty | 249 | kernel/chr_drv/tty_io.c | if (!EMPTY(tty->secondary)) |
tty | 250 | kernel/chr_drv/tty_io.c | wake_up(&tty->secondary->proc_list); |
tty | 251 | kernel/chr_drv/tty_io.c | if (tty->write_q->proc_list && LEFT(tty->write_q) > TTY_BUF_SIZE/2) |
tty | 252 | kernel/chr_drv/tty_io.c | wake_up(&tty->write_q->proc_list); |
tty | 276 | kernel/chr_drv/tty_io.c | int tty_signal(int sig, struct tty_struct *tty) |
tty | 282 | kernel/chr_drv/tty_io.c | static void wait_for_canon_input(struct tty_struct * tty) |
tty | 285 | kernel/chr_drv/tty_io.c | TTY_READ_FLUSH(tty); |
tty | 286 | kernel/chr_drv/tty_io.c | if (tty->link) |
tty | 287 | kernel/chr_drv/tty_io.c | if (tty->link->count) |
tty | 288 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty->link); |
tty | 293 | kernel/chr_drv/tty_io.c | if (FULL(tty->read_q)) |
tty | 295 | kernel/chr_drv/tty_io.c | if (tty->secondary->data) |
tty | 298 | kernel/chr_drv/tty_io.c | if (!tty->secondary->data) |
tty | 299 | kernel/chr_drv/tty_io.c | interruptible_sleep_on(&tty->secondary->proc_list); |
tty | 306 | kernel/chr_drv/tty_io.c | struct tty_struct * tty; |
tty | 313 | kernel/chr_drv/tty_io.c | tty = TTY_TABLE(channel); |
tty | 314 | kernel/chr_drv/tty_io.c | if (!(tty->read_q && tty->secondary)) |
tty | 316 | kernel/chr_drv/tty_io.c | if ((tty->pgrp > 0) && |
tty | 317 | kernel/chr_drv/tty_io.c | (current->tty == channel) && |
tty | 318 | kernel/chr_drv/tty_io.c | (tty->pgrp != current->pgrp)) |
tty | 322 | kernel/chr_drv/tty_io.c | return(tty_signal(SIGTTIN, tty)); |
tty | 323 | kernel/chr_drv/tty_io.c | if (L_CANON(tty)) |
tty | 326 | kernel/chr_drv/tty_io.c | time = 10L*tty->termios.c_cc[VTIME]; |
tty | 327 | kernel/chr_drv/tty_io.c | minimum = tty->termios.c_cc[VMIN]; |
tty | 341 | kernel/chr_drv/tty_io.c | else if (L_CANON(tty)) |
tty | 342 | kernel/chr_drv/tty_io.c | wait_for_canon_input(tty); |
tty | 346 | kernel/chr_drv/tty_io.c | TTY_READ_FLUSH(tty); |
tty | 347 | kernel/chr_drv/tty_io.c | if (tty->link) |
tty | 348 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty->link); |
tty | 349 | kernel/chr_drv/tty_io.c | while (nr > 0 && ((c = get_tty_queue(tty->secondary)) >= 0)) { |
tty | 350 | kernel/chr_drv/tty_io.c | if ((EOF_CHAR(tty) != __DISABLED_CHAR && |
tty | 351 | kernel/chr_drv/tty_io.c | c==EOF_CHAR(tty)) || c==10) |
tty | 352 | kernel/chr_drv/tty_io.c | tty->secondary->data--; |
tty | 353 | kernel/chr_drv/tty_io.c | if ((EOF_CHAR(tty) != __DISABLED_CHAR && |
tty | 354 | kernel/chr_drv/tty_io.c | c==EOF_CHAR(tty)) && L_CANON(tty)) |
tty | 360 | kernel/chr_drv/tty_io.c | if (c==10 && L_CANON(tty)) |
tty | 363 | kernel/chr_drv/tty_io.c | wake_up(&tty->read_q->proc_list); |
tty | 368 | kernel/chr_drv/tty_io.c | if (tty->link && !tty->link->count) |
tty | 370 | kernel/chr_drv/tty_io.c | TTY_READ_FLUSH(tty); |
tty | 371 | kernel/chr_drv/tty_io.c | if (tty->link) |
tty | 372 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty->link); |
tty | 374 | kernel/chr_drv/tty_io.c | if (EMPTY(tty->secondary)) |
tty | 375 | kernel/chr_drv/tty_io.c | interruptible_sleep_on(&tty->secondary->proc_list); |
tty | 378 | kernel/chr_drv/tty_io.c | TTY_READ_FLUSH(tty); |
tty | 379 | kernel/chr_drv/tty_io.c | if (tty->link && tty->link->write) |
tty | 380 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty->link); |
tty | 393 | kernel/chr_drv/tty_io.c | struct tty_struct * tty; |
tty | 398 | kernel/chr_drv/tty_io.c | tty = TTY_TABLE(channel); |
tty | 399 | kernel/chr_drv/tty_io.c | if (L_TOSTOP(tty) && (tty->pgrp > 0) && |
tty | 400 | kernel/chr_drv/tty_io.c | (current->tty == channel) && (tty->pgrp != current->pgrp)) { |
tty | 401 | kernel/chr_drv/tty_io.c | if (is_orphaned_pgrp(tty->pgrp)) |
tty | 404 | kernel/chr_drv/tty_io.c | return tty_signal(SIGTTOU, tty); |
tty | 410 | kernel/chr_drv/tty_io.c | if (redirect && tty == TTY_TABLE(0)) |
tty | 411 | kernel/chr_drv/tty_io.c | tty = redirect; |
tty | 412 | kernel/chr_drv/tty_io.c | if (!(tty->write_q && tty->write)) |
tty | 417 | kernel/chr_drv/tty_io.c | if (tty->link && !tty->link->count) { |
tty | 421 | kernel/chr_drv/tty_io.c | if (FULL(tty->write_q)) { |
tty | 422 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty); |
tty | 424 | kernel/chr_drv/tty_io.c | if (FULL(tty->write_q)) |
tty | 425 | kernel/chr_drv/tty_io.c | interruptible_sleep_on(&tty->write_q->proc_list); |
tty | 429 | kernel/chr_drv/tty_io.c | while (nr>0 && !FULL(tty->write_q)) { |
tty | 431 | kernel/chr_drv/tty_io.c | if (O_POST(tty)) { |
tty | 432 | kernel/chr_drv/tty_io.c | if (c=='\r' && O_CRNL(tty)) |
tty | 434 | kernel/chr_drv/tty_io.c | else if (c=='\n' && O_NLRET(tty)) |
tty | 436 | kernel/chr_drv/tty_io.c | if (c=='\n' && O_NLCR(tty) && |
tty | 437 | kernel/chr_drv/tty_io.c | !set_bit(TTY_CR_PENDING,&tty->flags)) { |
tty | 438 | kernel/chr_drv/tty_io.c | put_tty_queue(13,tty->write_q); |
tty | 441 | kernel/chr_drv/tty_io.c | if (O_LCUC(tty)) |
tty | 445 | kernel/chr_drv/tty_io.c | clear_bit(TTY_CR_PENDING,&tty->flags); |
tty | 446 | kernel/chr_drv/tty_io.c | put_tty_queue(c,tty->write_q); |
tty | 451 | kernel/chr_drv/tty_io.c | TTY_WRITE_FLUSH(tty); |
tty | 454 | kernel/chr_drv/tty_io.c | if (tty->link && !tty->link->count) |
tty | 504 | kernel/chr_drv/tty_io.c | struct tty_struct *tty; |
tty | 509 | kernel/chr_drv/tty_io.c | dev = current->tty; |
tty | 515 | kernel/chr_drv/tty_io.c | tty = TTY_TABLE(dev); |
tty | 516 | kernel/chr_drv/tty_io.c | if (!tty->count && !(tty->link && tty->link->count)) { |
tty | 517 | kernel/chr_drv/tty_io.c | flush_input(tty); |
tty | 518 | kernel/chr_drv/tty_io.c | flush_output(tty); |
tty | 519 | kernel/chr_drv/tty_io.c | tty->stopped = 0; |
tty | 522 | kernel/chr_drv/tty_io.c | if (tty->count) |
tty | 524 | kernel/chr_drv/tty_io.c | if (tty->link) |
tty | 525 | kernel/chr_drv/tty_io.c | tty->link->count++; |
tty | 527 | kernel/chr_drv/tty_io.c | tty->count++; |
tty | 531 | kernel/chr_drv/tty_io.c | current->tty<0 && |
tty | 532 | kernel/chr_drv/tty_io.c | tty->session==0) { |
tty | 533 | kernel/chr_drv/tty_io.c | current->tty = dev; |
tty | 534 | kernel/chr_drv/tty_io.c | tty->session = current->session; |
tty | 535 | kernel/chr_drv/tty_io.c | tty->pgrp = current->pgrp; |
tty | 537 | kernel/chr_drv/tty_io.c | if (IS_A_SERIAL(dev) && tty->count < 2) |
tty | 542 | kernel/chr_drv/tty_io.c | tty->count--; |
tty | 543 | kernel/chr_drv/tty_io.c | if (IS_A_PTY_MASTER(dev) && tty->link) |
tty | 544 | kernel/chr_drv/tty_io.c | tty->link->count--; |
tty | 557 | kernel/chr_drv/tty_io.c | struct tty_struct * tty; |
tty | 565 | kernel/chr_drv/tty_io.c | tty = TTY_TABLE(dev); |
tty | 566 | kernel/chr_drv/tty_io.c | if (IS_A_PTY_MASTER(dev) && tty->link) |
tty | 567 | kernel/chr_drv/tty_io.c | tty->link->count--; |
tty | 568 | kernel/chr_drv/tty_io.c | tty->count--; |
tty | 569 | kernel/chr_drv/tty_io.c | if (tty->count) |
tty | 572 | kernel/chr_drv/tty_io.c | wait_until_sent(tty); |
tty | 576 | kernel/chr_drv/tty_io.c | if (!tty->count && (tty == redirect)) |
tty | 578 | kernel/chr_drv/tty_io.c | if (tty = tty->link) |
tty | 579 | kernel/chr_drv/tty_io.c | if (!tty->count && (tty == redirect)) |
tty | 586 | kernel/chr_drv/tty_io.c | struct tty_struct * tty; |
tty | 594 | kernel/chr_drv/tty_io.c | tty = TTY_TABLE(dev); |
tty | 597 | kernel/chr_drv/tty_io.c | if (!EMPTY(tty->secondary)) |
tty | 599 | kernel/chr_drv/tty_io.c | if (tty->link && !tty->link->count) |
tty | 601 | kernel/chr_drv/tty_io.c | select_wait(&tty->secondary->proc_list, wait); |
tty | 604 | kernel/chr_drv/tty_io.c | if (!FULL(tty->write_q)) |
tty | 606 | kernel/chr_drv/tty_io.c | select_wait(&tty->write_q->proc_list, wait); |
tty | 609 | kernel/chr_drv/tty_io.c | if (tty->link && !tty->link->count) |
tty | 22 | kernel/chr_drv/tty_ioctl.c | extern int vt_ioctl(struct tty_struct *tty, int dev, int cmd, int arg); |
tty | 34 | kernel/chr_drv/tty_ioctl.c | void flush_input(struct tty_struct * tty) |
tty | 36 | kernel/chr_drv/tty_ioctl.c | if (tty->read_q) { |
tty | 37 | kernel/chr_drv/tty_ioctl.c | flush(tty->read_q); |
tty | 38 | kernel/chr_drv/tty_ioctl.c | wake_up(&tty->read_q->proc_list); |
tty | 40 | kernel/chr_drv/tty_ioctl.c | if (tty->secondary) { |
tty | 41 | kernel/chr_drv/tty_ioctl.c | flush(tty->secondary); |
tty | 42 | kernel/chr_drv/tty_ioctl.c | tty->secondary->data = 0; |
tty | 44 | kernel/chr_drv/tty_ioctl.c | if ((tty = tty->link) && tty->write_q) { |
tty | 45 | kernel/chr_drv/tty_ioctl.c | flush(tty->write_q); |
tty | 46 | kernel/chr_drv/tty_ioctl.c | wake_up(&tty->write_q->proc_list); |
tty | 50 | kernel/chr_drv/tty_ioctl.c | void flush_output(struct tty_struct * tty) |
tty | 52 | kernel/chr_drv/tty_ioctl.c | if (tty->write_q) { |
tty | 53 | kernel/chr_drv/tty_ioctl.c | flush(tty->write_q); |
tty | 54 | kernel/chr_drv/tty_ioctl.c | wake_up(&tty->write_q->proc_list); |
tty | 56 | kernel/chr_drv/tty_ioctl.c | if (tty = tty->link) { |
tty | 57 | kernel/chr_drv/tty_ioctl.c | if (tty->read_q) { |
tty | 58 | kernel/chr_drv/tty_ioctl.c | flush(tty->read_q); |
tty | 59 | kernel/chr_drv/tty_ioctl.c | wake_up(&tty->read_q->proc_list); |
tty | 61 | kernel/chr_drv/tty_ioctl.c | if (tty->secondary) { |
tty | 62 | kernel/chr_drv/tty_ioctl.c | flush(tty->secondary); |
tty | 63 | kernel/chr_drv/tty_ioctl.c | tty->secondary->data = 0; |
tty | 68 | kernel/chr_drv/tty_ioctl.c | void wait_until_sent(struct tty_struct * tty) |
tty | 70 | kernel/chr_drv/tty_ioctl.c | while (!(current->signal & ~current->blocked) && !EMPTY(tty->write_q)) { |
tty | 71 | kernel/chr_drv/tty_ioctl.c | TTY_WRITE_FLUSH(tty); |
tty | 74 | kernel/chr_drv/tty_ioctl.c | if (EMPTY(tty->write_q)) |
tty | 77 | kernel/chr_drv/tty_ioctl.c | interruptible_sleep_on(&tty->write_q->proc_list); |
tty | 111 | kernel/chr_drv/tty_ioctl.c | static int get_termios(struct tty_struct * tty, struct termios * termios) |
tty | 117 | kernel/chr_drv/tty_ioctl.c | put_fs_byte( ((char *)&tty->termios)[i] , i+(char *)termios ); |
tty | 121 | kernel/chr_drv/tty_ioctl.c | static int set_termios(struct tty_struct * tty, struct termios * termios, |
tty | 125 | kernel/chr_drv/tty_ioctl.c | unsigned short old_cflag = tty->termios.c_cflag; |
tty | 130 | kernel/chr_drv/tty_ioctl.c | if ((current->tty == channel) && |
tty | 131 | kernel/chr_drv/tty_ioctl.c | (tty->pgrp != current->pgrp)) { |
tty | 135 | kernel/chr_drv/tty_ioctl.c | return tty_signal(SIGTTOU, tty); |
tty | 138 | kernel/chr_drv/tty_ioctl.c | ((char *)&tty->termios)[i]=get_fs_byte(i+(char *)termios); |
tty | 139 | kernel/chr_drv/tty_ioctl.c | if (IS_A_SERIAL(channel) && tty->termios.c_cflag != old_cflag) |
tty | 144 | kernel/chr_drv/tty_ioctl.c | static int get_termio(struct tty_struct * tty, struct termio * termio) |
tty | 150 | kernel/chr_drv/tty_ioctl.c | tmp_termio.c_iflag = tty->termios.c_iflag; |
tty | 151 | kernel/chr_drv/tty_ioctl.c | tmp_termio.c_oflag = tty->termios.c_oflag; |
tty | 152 | kernel/chr_drv/tty_ioctl.c | tmp_termio.c_cflag = tty->termios.c_cflag; |
tty | 153 | kernel/chr_drv/tty_ioctl.c | tmp_termio.c_lflag = tty->termios.c_lflag; |
tty | 154 | kernel/chr_drv/tty_ioctl.c | tmp_termio.c_line = tty->termios.c_line; |
tty | 156 | kernel/chr_drv/tty_ioctl.c | tmp_termio.c_cc[i] = tty->termios.c_cc[i]; |
tty | 165 | kernel/chr_drv/tty_ioctl.c | static int set_termio(struct tty_struct * tty, struct termio * termio, |
tty | 170 | kernel/chr_drv/tty_ioctl.c | unsigned short old_cflag = tty->termios.c_cflag; |
tty | 172 | kernel/chr_drv/tty_ioctl.c | if ((current->tty == channel) && |
tty | 173 | kernel/chr_drv/tty_ioctl.c | (tty->pgrp > 0) && |
tty | 174 | kernel/chr_drv/tty_ioctl.c | (tty->pgrp != current->pgrp)) { |
tty | 178 | kernel/chr_drv/tty_ioctl.c | return tty_signal(SIGTTOU, tty); |
tty | 182 | kernel/chr_drv/tty_ioctl.c | *(unsigned short *)&tty->termios.c_iflag = tmp_termio.c_iflag; |
tty | 183 | kernel/chr_drv/tty_ioctl.c | *(unsigned short *)&tty->termios.c_oflag = tmp_termio.c_oflag; |
tty | 184 | kernel/chr_drv/tty_ioctl.c | *(unsigned short *)&tty->termios.c_cflag = tmp_termio.c_cflag; |
tty | 185 | kernel/chr_drv/tty_ioctl.c | *(unsigned short *)&tty->termios.c_lflag = tmp_termio.c_lflag; |
tty | 186 | kernel/chr_drv/tty_ioctl.c | tty->termios.c_line = tmp_termio.c_line; |
tty | 188 | kernel/chr_drv/tty_ioctl.c | tty->termios.c_cc[i] = tmp_termio.c_cc[i]; |
tty | 189 | kernel/chr_drv/tty_ioctl.c | if (IS_A_SERIAL(channel) && tty->termios.c_cflag != old_cflag) |
tty | 194 | kernel/chr_drv/tty_ioctl.c | static int set_window_size(struct tty_struct * tty, struct winsize * ws) |
tty | 201 | kernel/chr_drv/tty_ioctl.c | tmp = (char *) &tty->winsize; |
tty | 211 | kernel/chr_drv/tty_ioctl.c | kill_pg(tty->pgrp, SIGWINCH, 1); |
tty | 215 | kernel/chr_drv/tty_ioctl.c | static int get_window_size(struct tty_struct * tty, struct winsize * ws) |
tty | 225 | kernel/chr_drv/tty_ioctl.c | put_fs_byte(((char *) &tty->winsize)[i], tmp); |
tty | 232 | kernel/chr_drv/tty_ioctl.c | struct tty_struct * tty; |
tty | 242 | kernel/chr_drv/tty_ioctl.c | tty = tty_table + (dev ? ((dev < 64)? dev-1:dev) : fg_console); |
tty | 249 | kernel/chr_drv/tty_ioctl.c | if (!(tty->write_q && tty->read_q && tty->secondary && tty->write)) |
tty | 253 | kernel/chr_drv/tty_ioctl.c | return get_termios(tty,(struct termios *) arg); |
tty | 255 | kernel/chr_drv/tty_ioctl.c | flush_input(tty); |
tty | 258 | kernel/chr_drv/tty_ioctl.c | wait_until_sent(tty); |
tty | 261 | kernel/chr_drv/tty_ioctl.c | return set_termios(tty,(struct termios *) arg, dev); |
tty | 263 | kernel/chr_drv/tty_ioctl.c | return get_termio(tty,(struct termio *) arg); |
tty | 265 | kernel/chr_drv/tty_ioctl.c | flush_input(tty); |
tty | 268 | kernel/chr_drv/tty_ioctl.c | wait_until_sent(tty); /* fallthrough */ |
tty | 270 | kernel/chr_drv/tty_ioctl.c | return set_termio(tty,(struct termio *) arg, dev); |
tty | 274 | kernel/chr_drv/tty_ioctl.c | wait_until_sent(tty); |
tty | 281 | kernel/chr_drv/tty_ioctl.c | tty->stopped = 1; |
tty | 282 | kernel/chr_drv/tty_ioctl.c | TTY_WRITE_FLUSH(tty); |
tty | 285 | kernel/chr_drv/tty_ioctl.c | tty->stopped = 0; |
tty | 286 | kernel/chr_drv/tty_ioctl.c | TTY_WRITE_FLUSH(tty); |
tty | 289 | kernel/chr_drv/tty_ioctl.c | if (STOP_CHAR(tty)) |
tty | 290 | kernel/chr_drv/tty_ioctl.c | put_tty_queue(STOP_CHAR(tty),tty->write_q); |
tty | 293 | kernel/chr_drv/tty_ioctl.c | if (START_CHAR(tty)) |
tty | 294 | kernel/chr_drv/tty_ioctl.c | put_tty_queue(START_CHAR(tty),tty->write_q); |
tty | 300 | kernel/chr_drv/tty_ioctl.c | flush_input(tty); |
tty | 302 | kernel/chr_drv/tty_ioctl.c | flush_output(tty); |
tty | 304 | kernel/chr_drv/tty_ioctl.c | flush_input(tty); |
tty | 305 | kernel/chr_drv/tty_ioctl.c | flush_output(tty); |
tty | 317 | kernel/chr_drv/tty_ioctl.c | put_fs_long(tty->pgrp,(unsigned long *) arg); |
tty | 320 | kernel/chr_drv/tty_ioctl.c | if ((current->tty < 0) || |
tty | 321 | kernel/chr_drv/tty_ioctl.c | (current->tty != dev) || |
tty | 322 | kernel/chr_drv/tty_ioctl.c | (tty->session != current->session)) |
tty | 329 | kernel/chr_drv/tty_ioctl.c | tty->pgrp = pgrp; |
tty | 333 | kernel/chr_drv/tty_ioctl.c | put_fs_long(CHARS(tty->write_q),(unsigned long *) arg); |
tty | 337 | kernel/chr_drv/tty_ioctl.c | if (L_CANON(tty) && !tty->secondary->data) |
tty | 340 | kernel/chr_drv/tty_ioctl.c | put_fs_long(CHARS(tty->secondary), |
tty | 346 | kernel/chr_drv/tty_ioctl.c | return get_window_size(tty,(struct winsize *) arg); |
tty | 350 | kernel/chr_drv/tty_ioctl.c | return set_window_size(tty,(struct winsize *) arg); |
tty | 383 | kernel/chr_drv/tty_ioctl.c | redirect = tty; |
tty | 401 | kernel/chr_drv/tty_ioctl.c | if (MINOR(file->f_rdev) != current->tty) |
tty | 403 | kernel/chr_drv/tty_ioctl.c | current->tty = -1; |
tty | 405 | kernel/chr_drv/tty_ioctl.c | if (tty->pgrp > 0) |
tty | 406 | kernel/chr_drv/tty_ioctl.c | kill_pg(tty->pgrp, SIGHUP, 0); |
tty | 407 | kernel/chr_drv/tty_ioctl.c | tty->pgrp = -1; |
tty | 408 | kernel/chr_drv/tty_ioctl.c | tty->session = 0; |
tty | 412 | kernel/chr_drv/tty_ioctl.c | return vt_ioctl(tty, dev, cmd, arg); |
tty | 70 | kernel/chr_drv/vt.c | vt_ioctl(struct tty_struct *tty, int dev, int cmd, int arg) |
tty | 165 | kernel/chr_drv/vt.c | flush_input(tty); |
tty | 375 | kernel/exit.c | struct tty_struct *tty; |
tty | 377 | kernel/exit.c | if (current->tty >= 0) { |
tty | 378 | kernel/exit.c | tty = TTY_TABLE(current->tty); |
tty | 379 | kernel/exit.c | if (tty->pgrp > 0) |
tty | 380 | kernel/exit.c | kill_pg(tty->pgrp, SIGHUP, 1); |
tty | 381 | kernel/exit.c | tty->pgrp = -1; |
tty | 382 | kernel/exit.c | tty->session = 0; |
tty | 386 | kernel/exit.c | (*p)->tty = -1; |
tty | 391 | kernel/sys.c | current->tty = -1; |