Lines Matching refs:ldata
129 static inline size_t read_cnt(struct n_tty_data *ldata) in read_cnt() argument
131 return ldata->read_head - ldata->read_tail; in read_cnt()
134 static inline unsigned char read_buf(struct n_tty_data *ldata, size_t i) in read_buf() argument
136 return ldata->read_buf[i & (N_TTY_BUF_SIZE - 1)]; in read_buf()
139 static inline unsigned char *read_buf_addr(struct n_tty_data *ldata, size_t i) in read_buf_addr() argument
141 return &ldata->read_buf[i & (N_TTY_BUF_SIZE - 1)]; in read_buf_addr()
144 static inline unsigned char echo_buf(struct n_tty_data *ldata, size_t i) in echo_buf() argument
147 return ldata->echo_buf[i & (N_TTY_BUF_SIZE - 1)]; in echo_buf()
150 static inline unsigned char *echo_buf_addr(struct n_tty_data *ldata, size_t i) in echo_buf_addr() argument
152 return &ldata->echo_buf[i & (N_TTY_BUF_SIZE - 1)]; in echo_buf_addr()
158 struct n_tty_data *ldata = tty->disc_data; in tty_copy_to_user() local
160 const void *from = read_buf_addr(ldata, tail); in tty_copy_to_user()
170 from = ldata->read_buf; in tty_copy_to_user()
191 struct n_tty_data *ldata = tty->disc_data; in n_tty_kick_worker() local
194 if (unlikely(ldata->no_room)) { in n_tty_kick_worker()
195 ldata->no_room = 0; in n_tty_kick_worker()
211 struct n_tty_data *ldata = tty->disc_data; in chars_in_buffer() local
214 if (!ldata->icanon) in chars_in_buffer()
215 n = ldata->commit_head - ldata->read_tail; in chars_in_buffer()
217 n = ldata->canon_head - ldata->read_tail; in chars_in_buffer()
238 struct n_tty_data *ldata = tty->disc_data; in n_tty_check_throttle() local
245 if (ldata->icanon && ldata->canon_head == ldata->read_tail) in n_tty_check_throttle()
251 if (N_TTY_BUF_SIZE - read_cnt(ldata) >= TTY_THRESHOLD_THROTTLE) in n_tty_check_throttle()
302 static inline void put_tty_queue(unsigned char c, struct n_tty_data *ldata) in put_tty_queue() argument
304 *read_buf_addr(ldata, ldata->read_head) = c; in put_tty_queue()
305 ldata->read_head++; in put_tty_queue()
319 static void reset_buffer_flags(struct n_tty_data *ldata) in reset_buffer_flags() argument
321 ldata->read_head = ldata->canon_head = ldata->read_tail = 0; in reset_buffer_flags()
322 ldata->commit_head = 0; in reset_buffer_flags()
323 ldata->line_start = 0; in reset_buffer_flags()
325 ldata->erasing = 0; in reset_buffer_flags()
326 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); in reset_buffer_flags()
327 ldata->push = 0; in reset_buffer_flags()
418 struct n_tty_data *ldata = tty->disc_data; in do_output_char() local
427 ldata->column = 0; in do_output_char()
431 ldata->canon_column = ldata->column = 0; in do_output_char()
435 ldata->canon_column = ldata->column; in do_output_char()
438 if (O_ONOCR(tty) && ldata->column == 0) in do_output_char()
443 ldata->canon_column = ldata->column = 0; in do_output_char()
446 ldata->canon_column = ldata->column = 0; in do_output_char()
449 spaces = 8 - (ldata->column & 7); in do_output_char()
453 ldata->column += spaces; in do_output_char()
457 ldata->column += spaces; in do_output_char()
460 if (ldata->column > 0) in do_output_char()
461 ldata->column--; in do_output_char()
468 ldata->column++; in do_output_char()
493 struct n_tty_data *ldata = tty->disc_data; in process_output() local
496 mutex_lock(&ldata->output_lock); in process_output()
501 mutex_unlock(&ldata->output_lock); in process_output()
530 struct n_tty_data *ldata = tty->disc_data; in process_output_block() local
535 mutex_lock(&ldata->output_lock); in process_output_block()
539 mutex_unlock(&ldata->output_lock); in process_output_block()
551 ldata->column = 0; in process_output_block()
554 ldata->canon_column = ldata->column; in process_output_block()
557 if (O_ONOCR(tty) && ldata->column == 0) in process_output_block()
561 ldata->canon_column = ldata->column = 0; in process_output_block()
566 if (ldata->column > 0) in process_output_block()
567 ldata->column--; in process_output_block()
574 ldata->column++; in process_output_block()
582 mutex_unlock(&ldata->output_lock); in process_output_block()
613 struct n_tty_data *ldata = tty->disc_data; in __process_echoes() local
620 tail = ldata->echo_tail; in __process_echoes()
621 while (MASK(ldata->echo_commit) != MASK(tail)) { in __process_echoes()
622 c = echo_buf(ldata, tail); in __process_echoes()
632 if (MASK(ldata->echo_commit) == MASK(tail + 1)) in __process_echoes()
639 op = echo_buf(ldata, tail + 1); in __process_echoes()
645 if (MASK(ldata->echo_commit) == MASK(tail + 2)) in __process_echoes()
647 num_chars = echo_buf(ldata, tail + 2); in __process_echoes()
660 num_chars += ldata->canon_column; in __process_echoes()
670 if (ldata->column > 0) in __process_echoes()
671 ldata->column--; in __process_echoes()
677 ldata->canon_column = ldata->column; in __process_echoes()
682 if (ldata->column > 0) in __process_echoes()
683 ldata->column--; in __process_echoes()
694 ldata->column++; in __process_echoes()
715 ldata->column += 2; in __process_echoes()
741 while (ldata->echo_commit > tail && in __process_echoes()
742 ldata->echo_commit - tail >= ECHO_DISCARD_WATERMARK) { in __process_echoes()
743 if (echo_buf(ldata, tail) == ECHO_OP_START) { in __process_echoes()
744 if (echo_buf(ldata, tail + 1) == ECHO_OP_ERASE_TAB) in __process_echoes()
753 ldata->echo_tail = tail; in __process_echoes()
759 struct n_tty_data *ldata = tty->disc_data; in commit_echoes() local
763 mutex_lock(&ldata->output_lock); in commit_echoes()
764 head = ldata->echo_head; in commit_echoes()
765 ldata->echo_mark = head; in commit_echoes()
766 old = ldata->echo_commit - ldata->echo_tail; in commit_echoes()
771 nr = head - ldata->echo_tail; in commit_echoes()
774 mutex_unlock(&ldata->output_lock); in commit_echoes()
778 ldata->echo_commit = head; in commit_echoes()
780 mutex_unlock(&ldata->output_lock); in commit_echoes()
788 struct n_tty_data *ldata = tty->disc_data; in process_echoes() local
791 if (ldata->echo_mark == ldata->echo_tail) in process_echoes()
794 mutex_lock(&ldata->output_lock); in process_echoes()
795 ldata->echo_commit = ldata->echo_mark; in process_echoes()
797 mutex_unlock(&ldata->output_lock); in process_echoes()
806 struct n_tty_data *ldata = tty->disc_data; in flush_echoes() local
809 ldata->echo_commit == ldata->echo_head) in flush_echoes()
812 mutex_lock(&ldata->output_lock); in flush_echoes()
813 ldata->echo_commit = ldata->echo_head; in flush_echoes()
815 mutex_unlock(&ldata->output_lock); in flush_echoes()
826 static inline void add_echo_byte(unsigned char c, struct n_tty_data *ldata) in add_echo_byte() argument
828 *echo_buf_addr(ldata, ldata->echo_head) = c; in add_echo_byte()
830 ldata->echo_head++; in add_echo_byte()
840 static void echo_move_back_col(struct n_tty_data *ldata) in echo_move_back_col() argument
842 add_echo_byte(ECHO_OP_START, ldata); in echo_move_back_col()
843 add_echo_byte(ECHO_OP_MOVE_BACK_COL, ldata); in echo_move_back_col()
854 static void echo_set_canon_col(struct n_tty_data *ldata) in echo_set_canon_col() argument
856 add_echo_byte(ECHO_OP_START, ldata); in echo_set_canon_col()
857 add_echo_byte(ECHO_OP_SET_CANON_COL, ldata); in echo_set_canon_col()
876 struct n_tty_data *ldata) in echo_erase_tab() argument
878 add_echo_byte(ECHO_OP_START, ldata); in echo_erase_tab()
879 add_echo_byte(ECHO_OP_ERASE_TAB, ldata); in echo_erase_tab()
888 add_echo_byte(num_chars, ldata); in echo_erase_tab()
902 static void echo_char_raw(unsigned char c, struct n_tty_data *ldata) in echo_char_raw() argument
905 add_echo_byte(ECHO_OP_START, ldata); in echo_char_raw()
906 add_echo_byte(ECHO_OP_START, ldata); in echo_char_raw()
908 add_echo_byte(c, ldata); in echo_char_raw()
926 struct n_tty_data *ldata = tty->disc_data; in echo_char() local
929 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
930 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
933 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
934 add_echo_byte(c, ldata); in echo_char()
943 static inline void finish_erasing(struct n_tty_data *ldata) in finish_erasing() argument
945 if (ldata->erasing) { in finish_erasing()
946 echo_char_raw('/', ldata); in finish_erasing()
947 ldata->erasing = 0; in finish_erasing()
966 struct n_tty_data *ldata = tty->disc_data; in eraser() local
972 if (ldata->read_head == ldata->canon_head) { in eraser()
982 ldata->read_head = ldata->canon_head; in eraser()
986 ldata->read_head = ldata->canon_head; in eraser()
987 finish_erasing(ldata); in eraser()
991 echo_char_raw('\n', ldata); in eraser()
998 while (MASK(ldata->read_head) != MASK(ldata->canon_head)) { in eraser()
999 head = ldata->read_head; in eraser()
1004 c = read_buf(ldata, head); in eraser()
1006 MASK(head) != MASK(ldata->canon_head)); in eraser()
1019 cnt = ldata->read_head - head; in eraser()
1020 ldata->read_head = head; in eraser()
1023 if (!ldata->erasing) { in eraser()
1024 echo_char_raw('\\', ldata); in eraser()
1025 ldata->erasing = 1; in eraser()
1031 echo_char_raw(read_buf(ldata, head), ldata); in eraser()
1032 echo_move_back_col(ldata); in eraser()
1039 size_t tail = ldata->read_head; in eraser()
1048 while (MASK(tail) != MASK(ldata->canon_head)) { in eraser()
1050 c = read_buf(ldata, tail); in eraser()
1061 echo_erase_tab(num_chars, after_tab, ldata); in eraser()
1064 echo_char_raw('\b', ldata); in eraser()
1065 echo_char_raw(' ', ldata); in eraser()
1066 echo_char_raw('\b', ldata); in eraser()
1069 echo_char_raw('\b', ldata); in eraser()
1070 echo_char_raw(' ', ldata); in eraser()
1071 echo_char_raw('\b', ldata); in eraser()
1078 if (ldata->read_head == ldata->canon_head && L_ECHO(tty)) in eraser()
1079 finish_erasing(ldata); in eraser()
1108 struct n_tty_data *ldata = tty->disc_data; in isig() local
1121 mutex_lock(&ldata->output_lock); in isig()
1122 ldata->echo_head = ldata->echo_tail = 0; in isig()
1123 ldata->echo_mark = ldata->echo_commit = 0; in isig()
1124 mutex_unlock(&ldata->output_lock); in isig()
1156 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_break() local
1165 put_tty_queue('\377', ldata); in n_tty_receive_break()
1166 put_tty_queue('\0', ldata); in n_tty_receive_break()
1168 put_tty_queue('\0', ldata); in n_tty_receive_break()
1186 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_overrun() local
1188 ldata->num_overrun++; in n_tty_receive_overrun()
1189 if (time_after(jiffies, ldata->overrun_time + HZ) || in n_tty_receive_overrun()
1190 time_after(ldata->overrun_time, jiffies)) { in n_tty_receive_overrun()
1191 tty_warn(tty, "%d input overrun(s)\n", ldata->num_overrun); in n_tty_receive_overrun()
1192 ldata->overrun_time = jiffies; in n_tty_receive_overrun()
1193 ldata->num_overrun = 0; in n_tty_receive_overrun()
1210 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_parity_error() local
1216 put_tty_queue('\377', ldata); in n_tty_receive_parity_error()
1217 put_tty_queue('\0', ldata); in n_tty_receive_parity_error()
1218 put_tty_queue(c, ldata); in n_tty_receive_parity_error()
1220 put_tty_queue('\0', ldata); in n_tty_receive_parity_error()
1222 put_tty_queue(c, ldata); in n_tty_receive_parity_error()
1258 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_special() local
1298 if (ldata->icanon) { in n_tty_receive_char_special()
1306 ldata->lnext = 1; in n_tty_receive_char_special()
1308 finish_erasing(ldata); in n_tty_receive_char_special()
1310 echo_char_raw('^', ldata); in n_tty_receive_char_special()
1311 echo_char_raw('\b', ldata); in n_tty_receive_char_special()
1318 size_t tail = ldata->canon_head; in n_tty_receive_char_special()
1320 finish_erasing(ldata); in n_tty_receive_char_special()
1322 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1323 while (MASK(tail) != MASK(ldata->read_head)) { in n_tty_receive_char_special()
1324 echo_char(read_buf(ldata, tail), tty); in n_tty_receive_char_special()
1332 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1348 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_special()
1349 echo_set_canon_col(ldata); in n_tty_receive_char_special()
1358 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1361 set_bit(ldata->read_head & (N_TTY_BUF_SIZE - 1), ldata->read_flags); in n_tty_receive_char_special()
1362 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1363 smp_store_release(&ldata->canon_head, ldata->read_head); in n_tty_receive_char_special()
1371 finish_erasing(ldata); in n_tty_receive_char_special()
1373 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1376 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_special()
1377 echo_set_canon_col(ldata); in n_tty_receive_char_special()
1385 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1387 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1394 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_inline() local
1401 finish_erasing(ldata); in n_tty_receive_char_inline()
1403 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_inline()
1404 echo_set_canon_col(ldata); in n_tty_receive_char_inline()
1410 put_tty_queue(c, ldata); in n_tty_receive_char_inline()
1411 put_tty_queue(c, ldata); in n_tty_receive_char_inline()
1422 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_fast() local
1429 finish_erasing(ldata); in n_tty_receive_char_fast()
1431 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_fast()
1432 echo_set_canon_col(ldata); in n_tty_receive_char_fast()
1436 put_tty_queue(c, ldata); in n_tty_receive_char_fast()
1482 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_lnext() local
1484 ldata->lnext = 0; in n_tty_receive_char_lnext()
1499 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_real_raw() local
1502 head = ldata->read_head & (N_TTY_BUF_SIZE - 1); in n_tty_receive_buf_real_raw()
1504 memcpy(read_buf_addr(ldata, head), cp, n); in n_tty_receive_buf_real_raw()
1505 ldata->read_head += n; in n_tty_receive_buf_real_raw()
1509 head = ldata->read_head & (N_TTY_BUF_SIZE - 1); in n_tty_receive_buf_real_raw()
1511 memcpy(read_buf_addr(ldata, head), cp, n); in n_tty_receive_buf_real_raw()
1512 ldata->read_head += n; in n_tty_receive_buf_real_raw()
1519 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_raw() local
1526 put_tty_queue(*cp++, ldata); in n_tty_receive_buf_raw()
1550 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_standard() local
1564 put_tty_queue(c, ldata); in n_tty_receive_buf_standard()
1567 if (!test_bit(c, ldata->char_map)) in n_tty_receive_buf_standard()
1584 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_fast() local
1593 if (!test_bit(c, ldata->char_map)) in n_tty_receive_buf_fast()
1609 struct n_tty_data *ldata = tty->disc_data; in __receive_buf() local
1612 if (ldata->real_raw) in __receive_buf()
1614 else if (ldata->raw || (L_EXTPROC(tty) && !preops)) in __receive_buf()
1619 if (ldata->lnext) { in __receive_buf()
1638 if (ldata->icanon && !L_EXTPROC(tty)) in __receive_buf()
1642 smp_store_release(&ldata->commit_head, ldata->read_head); in __receive_buf()
1644 if (read_cnt(ldata)) { in __receive_buf()
1687 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_common() local
1706 size_t tail = smp_load_acquire(&ldata->read_tail); in n_tty_receive_buf_common()
1708 room = N_TTY_BUF_SIZE - (ldata->read_head - tail); in n_tty_receive_buf_common()
1713 overflow = ldata->icanon && ldata->canon_head == tail; in n_tty_receive_buf_common()
1715 ldata->read_head--; in n_tty_receive_buf_common()
1717 ldata->no_room = flow && !room; in n_tty_receive_buf_common()
1781 struct n_tty_data *ldata = tty->disc_data; in n_tty_set_termios() local
1784 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); in n_tty_set_termios()
1785 ldata->line_start = ldata->read_tail; in n_tty_set_termios()
1786 if (!L_ICANON(tty) || !read_cnt(ldata)) { in n_tty_set_termios()
1787 ldata->canon_head = ldata->read_tail; in n_tty_set_termios()
1788 ldata->push = 0; in n_tty_set_termios()
1790 set_bit((ldata->read_head - 1) & (N_TTY_BUF_SIZE - 1), in n_tty_set_termios()
1791 ldata->read_flags); in n_tty_set_termios()
1792 ldata->canon_head = ldata->read_head; in n_tty_set_termios()
1793 ldata->push = 1; in n_tty_set_termios()
1795 ldata->commit_head = ldata->read_head; in n_tty_set_termios()
1796 ldata->erasing = 0; in n_tty_set_termios()
1797 ldata->lnext = 0; in n_tty_set_termios()
1800 ldata->icanon = (L_ICANON(tty) != 0); in n_tty_set_termios()
1806 bitmap_zero(ldata->char_map, 256); in n_tty_set_termios()
1809 set_bit('\r', ldata->char_map); in n_tty_set_termios()
1811 set_bit('\n', ldata->char_map); in n_tty_set_termios()
1814 set_bit(ERASE_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1815 set_bit(KILL_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1816 set_bit(EOF_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1817 set_bit('\n', ldata->char_map); in n_tty_set_termios()
1818 set_bit(EOL_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1820 set_bit(WERASE_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1821 set_bit(LNEXT_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1822 set_bit(EOL2_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1825 ldata->char_map); in n_tty_set_termios()
1829 set_bit(START_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1830 set_bit(STOP_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1833 set_bit(INTR_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1834 set_bit(QUIT_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1835 set_bit(SUSP_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1837 clear_bit(__DISABLED_CHAR, ldata->char_map); in n_tty_set_termios()
1838 ldata->raw = 0; in n_tty_set_termios()
1839 ldata->real_raw = 0; in n_tty_set_termios()
1841 ldata->raw = 1; in n_tty_set_termios()
1845 ldata->real_raw = 1; in n_tty_set_termios()
1847 ldata->real_raw = 0; in n_tty_set_termios()
1875 struct n_tty_data *ldata = tty->disc_data; in n_tty_close() local
1880 vfree(ldata); in n_tty_close()
1896 struct n_tty_data *ldata; in n_tty_open() local
1899 ldata = vzalloc(sizeof(*ldata)); in n_tty_open()
1900 if (!ldata) in n_tty_open()
1903 ldata->overrun_time = jiffies; in n_tty_open()
1904 mutex_init(&ldata->atomic_read_lock); in n_tty_open()
1905 mutex_init(&ldata->output_lock); in n_tty_open()
1907 tty->disc_data = ldata; in n_tty_open()
1918 struct n_tty_data *ldata = tty->disc_data; in input_available_p() local
1921 if (ldata->icanon && !L_EXTPROC(tty)) in input_available_p()
1922 return ldata->canon_head != ldata->read_tail; in input_available_p()
1924 return ldata->commit_head - ldata->read_tail >= amt; in input_available_p()
1952 struct n_tty_data *ldata = tty->disc_data; in copy_from_read_buf() local
1956 size_t head = smp_load_acquire(&ldata->commit_head); in copy_from_read_buf()
1957 size_t tail = ldata->read_tail & (N_TTY_BUF_SIZE - 1); in copy_from_read_buf()
1960 n = min(head - ldata->read_tail, N_TTY_BUF_SIZE - tail); in copy_from_read_buf()
1963 const unsigned char *from = read_buf_addr(ldata, tail); in copy_from_read_buf()
1968 smp_store_release(&ldata->read_tail, ldata->read_tail + n); in copy_from_read_buf()
1970 if (L_EXTPROC(tty) && ldata->icanon && is_eof && in copy_from_read_buf()
1971 (head == ldata->read_tail)) in copy_from_read_buf()
2006 struct n_tty_data *ldata = tty->disc_data; in canon_copy_from_read_buf() local
2016 n = min(*nr + 1, smp_load_acquire(&ldata->canon_head) - ldata->read_tail); in canon_copy_from_read_buf()
2018 tail = ldata->read_tail & (N_TTY_BUF_SIZE - 1); in canon_copy_from_read_buf()
2024 eol = find_next_bit(ldata->read_flags, size, tail); in canon_copy_from_read_buf()
2028 eol = find_next_bit(ldata->read_flags, more, 0); in canon_copy_from_read_buf()
2038 if (!found || read_buf(ldata, eol) != __DISABLED_CHAR) { in canon_copy_from_read_buf()
2053 clear_bit(eol, ldata->read_flags); in canon_copy_from_read_buf()
2054 smp_store_release(&ldata->read_tail, ldata->read_tail + c); in canon_copy_from_read_buf()
2057 if (!ldata->push) in canon_copy_from_read_buf()
2058 ldata->line_start = ldata->read_tail; in canon_copy_from_read_buf()
2060 ldata->push = 0; in canon_copy_from_read_buf()
2119 struct n_tty_data *ldata = tty->disc_data; in n_tty_read() local
2137 if (!mutex_trylock(&ldata->atomic_read_lock)) in n_tty_read()
2140 if (mutex_lock_interruptible(&ldata->atomic_read_lock)) in n_tty_read()
2148 if (!ldata->icanon) { in n_tty_read()
2159 tail = ldata->read_tail; in n_tty_read()
2218 if (ldata->icanon && !L_EXTPROC(tty)) { in n_tty_read()
2250 if (tail != ldata->read_tail) in n_tty_read()
2255 mutex_unlock(&ldata->atomic_read_lock); in n_tty_read()
2336 struct n_tty_data *ldata = tty->disc_data; in n_tty_write() local
2339 mutex_lock(&ldata->output_lock); in n_tty_write()
2341 mutex_unlock(&ldata->output_lock); in n_tty_write()
2413 static unsigned long inq_canon(struct n_tty_data *ldata) in inq_canon() argument
2417 if (ldata->canon_head == ldata->read_tail) in inq_canon()
2419 head = ldata->canon_head; in inq_canon()
2420 tail = ldata->read_tail; in inq_canon()
2424 if (test_bit(tail & (N_TTY_BUF_SIZE - 1), ldata->read_flags) && in inq_canon()
2425 read_buf(ldata, tail) == __DISABLED_CHAR) in inq_canon()
2435 struct n_tty_data *ldata = tty->disc_data; in n_tty_ioctl() local
2444 retval = inq_canon(ldata); in n_tty_ioctl()
2446 retval = read_cnt(ldata); in n_tty_ioctl()