Lines Matching refs:ldata

128 static inline size_t read_cnt(struct n_tty_data *ldata)  in read_cnt()  argument
130 return ldata->read_head - ldata->read_tail; in read_cnt()
133 static inline u8 read_buf(struct n_tty_data *ldata, size_t i) in read_buf() argument
135 return ldata->read_buf[MASK(i)]; in read_buf()
138 static inline u8 *read_buf_addr(struct n_tty_data *ldata, size_t i) in read_buf_addr() argument
140 return &ldata->read_buf[MASK(i)]; in read_buf_addr()
143 static inline u8 echo_buf(struct n_tty_data *ldata, size_t i) in echo_buf() argument
146 return ldata->echo_buf[MASK(i)]; in echo_buf()
149 static inline u8 *echo_buf_addr(struct n_tty_data *ldata, size_t i) in echo_buf_addr() argument
151 return &ldata->echo_buf[MASK(i)]; in echo_buf_addr()
164 struct n_tty_data *ldata = tty->disc_data; in tty_copy() local
166 void *from = read_buf_addr(ldata, tail); in tty_copy()
174 from = ldata->read_buf; in tty_copy()
195 struct n_tty_data *ldata = tty->disc_data; in n_tty_kick_worker() local
198 if (unlikely(READ_ONCE(ldata->no_room))) { in n_tty_kick_worker()
199 WRITE_ONCE(ldata->no_room, 0); in n_tty_kick_worker()
215 const struct n_tty_data *ldata = tty->disc_data; in chars_in_buffer() local
216 size_t head = ldata->icanon ? ldata->canon_head : ldata->commit_head; in chars_in_buffer()
218 return head - ldata->read_tail; in chars_in_buffer()
236 struct n_tty_data *ldata = tty->disc_data; in n_tty_check_throttle() local
243 if (ldata->icanon && ldata->canon_head == ldata->read_tail) in n_tty_check_throttle()
248 if (N_TTY_BUF_SIZE - read_cnt(ldata) >= TTY_THRESHOLD_THROTTLE) in n_tty_check_throttle()
295 static inline void put_tty_queue(u8 c, struct n_tty_data *ldata) in put_tty_queue() argument
297 *read_buf_addr(ldata, ldata->read_head) = c; in put_tty_queue()
298 ldata->read_head++; in put_tty_queue()
312 static void reset_buffer_flags(struct n_tty_data *ldata) in reset_buffer_flags() argument
314 ldata->read_head = ldata->canon_head = ldata->read_tail = 0; in reset_buffer_flags()
315 ldata->commit_head = 0; in reset_buffer_flags()
316 ldata->line_start = 0; in reset_buffer_flags()
318 ldata->erasing = 0; in reset_buffer_flags()
319 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); in reset_buffer_flags()
320 ldata->push = 0; in reset_buffer_flags()
322 ldata->lookahead_count = 0; in reset_buffer_flags()
408 struct n_tty_data *ldata = tty->disc_data; in do_output_char() local
417 ldata->column = 0; in do_output_char()
421 ldata->canon_column = ldata->column = 0; in do_output_char()
425 ldata->canon_column = ldata->column; in do_output_char()
428 if (O_ONOCR(tty) && ldata->column == 0) in do_output_char()
433 ldata->canon_column = ldata->column = 0; in do_output_char()
436 ldata->canon_column = ldata->column = 0; in do_output_char()
439 spaces = 8 - (ldata->column & 7); in do_output_char()
443 ldata->column += spaces; in do_output_char()
447 ldata->column += spaces; in do_output_char()
450 if (ldata->column > 0) in do_output_char()
451 ldata->column--; in do_output_char()
458 ldata->column++; in do_output_char()
482 struct n_tty_data *ldata = tty->disc_data; in process_output() local
484 guard(mutex)(&ldata->output_lock); in process_output()
513 struct n_tty_data *ldata = tty->disc_data; in process_output_block() local
517 guard(mutex)(&ldata->output_lock); in process_output_block()
532 ldata->column = 0; in process_output_block()
535 ldata->canon_column = ldata->column; in process_output_block()
538 if (O_ONOCR(tty) && ldata->column == 0) in process_output_block()
542 ldata->canon_column = ldata->column = 0; in process_output_block()
547 if (ldata->column > 0) in process_output_block()
548 ldata->column--; in process_output_block()
555 ldata->column++; in process_output_block()
567 struct n_tty_data *ldata = tty->disc_data; in n_tty_process_echo_ops() local
574 if (MASK(ldata->echo_commit) == MASK(*tail + 1)) in n_tty_process_echo_ops()
581 op = echo_buf(ldata, *tail + 1); in n_tty_process_echo_ops()
587 if (MASK(ldata->echo_commit) == MASK(*tail + 2)) in n_tty_process_echo_ops()
590 num_chars = echo_buf(ldata, *tail + 2); in n_tty_process_echo_ops()
600 num_chars += ldata->canon_column; in n_tty_process_echo_ops()
609 if (ldata->column > 0) in n_tty_process_echo_ops()
610 ldata->column--; in n_tty_process_echo_ops()
616 ldata->canon_column = ldata->column; in n_tty_process_echo_ops()
621 if (ldata->column > 0) in n_tty_process_echo_ops()
622 ldata->column--; in n_tty_process_echo_ops()
632 ldata->column++; in n_tty_process_echo_ops()
649 ldata->column += 2; in n_tty_process_echo_ops()
682 struct n_tty_data *ldata = tty->disc_data; in __process_echoes() local
689 tail = ldata->echo_tail; in __process_echoes()
690 while (MASK(ldata->echo_commit) != MASK(tail)) { in __process_echoes()
691 c = echo_buf(ldata, tail); in __process_echoes()
718 while (ldata->echo_commit > tail && in __process_echoes()
719 ldata->echo_commit - tail >= ECHO_DISCARD_WATERMARK) { in __process_echoes()
720 if (echo_buf(ldata, tail) == ECHO_OP_START) { in __process_echoes()
721 if (echo_buf(ldata, tail + 1) == ECHO_OP_ERASE_TAB) in __process_echoes()
730 ldata->echo_tail = tail; in __process_echoes()
736 struct n_tty_data *ldata = tty->disc_data; in commit_echoes() local
740 mutex_lock(&ldata->output_lock); in commit_echoes()
741 head = ldata->echo_head; in commit_echoes()
742 ldata->echo_mark = head; in commit_echoes()
743 old = ldata->echo_commit - ldata->echo_tail; in commit_echoes()
748 nr = head - ldata->echo_tail; in commit_echoes()
751 mutex_unlock(&ldata->output_lock); in commit_echoes()
755 ldata->echo_commit = head; in commit_echoes()
757 mutex_unlock(&ldata->output_lock); in commit_echoes()
765 struct n_tty_data *ldata = tty->disc_data; in process_echoes() local
768 if (ldata->echo_mark == ldata->echo_tail) in process_echoes()
771 mutex_lock(&ldata->output_lock); in process_echoes()
772 ldata->echo_commit = ldata->echo_mark; in process_echoes()
774 mutex_unlock(&ldata->output_lock); in process_echoes()
783 struct n_tty_data *ldata = tty->disc_data; in flush_echoes() local
786 ldata->echo_commit == ldata->echo_head) in flush_echoes()
789 mutex_lock(&ldata->output_lock); in flush_echoes()
790 ldata->echo_commit = ldata->echo_head; in flush_echoes()
792 mutex_unlock(&ldata->output_lock); in flush_echoes()
802 static inline void add_echo_byte(u8 c, struct n_tty_data *ldata) in add_echo_byte() argument
804 *echo_buf_addr(ldata, ldata->echo_head) = c; in add_echo_byte()
806 ldata->echo_head++; in add_echo_byte()
815 static void echo_move_back_col(struct n_tty_data *ldata) in echo_move_back_col() argument
817 add_echo_byte(ECHO_OP_START, ldata); in echo_move_back_col()
818 add_echo_byte(ECHO_OP_MOVE_BACK_COL, ldata); in echo_move_back_col()
828 static void echo_set_canon_col(struct n_tty_data *ldata) in echo_set_canon_col() argument
830 add_echo_byte(ECHO_OP_START, ldata); in echo_set_canon_col()
831 add_echo_byte(ECHO_OP_SET_CANON_COL, ldata); in echo_set_canon_col()
848 struct n_tty_data *ldata) in echo_erase_tab() argument
850 add_echo_byte(ECHO_OP_START, ldata); in echo_erase_tab()
851 add_echo_byte(ECHO_OP_ERASE_TAB, ldata); in echo_erase_tab()
860 add_echo_byte(num_chars, ldata); in echo_erase_tab()
873 static void echo_char_raw(u8 c, struct n_tty_data *ldata) in echo_char_raw() argument
876 add_echo_byte(ECHO_OP_START, ldata); in echo_char_raw()
877 add_echo_byte(ECHO_OP_START, ldata); in echo_char_raw()
879 add_echo_byte(c, ldata); in echo_char_raw()
896 struct n_tty_data *ldata = tty->disc_data; in echo_char() local
899 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
900 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
903 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
904 add_echo_byte(c, ldata); in echo_char()
912 static inline void finish_erasing(struct n_tty_data *ldata) in finish_erasing() argument
914 if (ldata->erasing) { in finish_erasing()
915 echo_char_raw('/', ldata); in finish_erasing()
916 ldata->erasing = 0; in finish_erasing()
934 struct n_tty_data *ldata = tty->disc_data; in eraser() local
940 if (ldata->read_head == ldata->canon_head) { in eraser()
950 ldata->read_head = ldata->canon_head; in eraser()
954 ldata->read_head = ldata->canon_head; in eraser()
955 finish_erasing(ldata); in eraser()
959 echo_char_raw('\n', ldata); in eraser()
966 while (MASK(ldata->read_head) != MASK(ldata->canon_head)) { in eraser()
967 head = ldata->read_head; in eraser()
972 c = read_buf(ldata, head); in eraser()
974 MASK(head) != MASK(ldata->canon_head)); in eraser()
987 cnt = ldata->read_head - head; in eraser()
988 ldata->read_head = head; in eraser()
991 if (!ldata->erasing) { in eraser()
992 echo_char_raw('\\', ldata); in eraser()
993 ldata->erasing = 1; in eraser()
999 echo_char_raw(read_buf(ldata, head), ldata); in eraser()
1000 echo_move_back_col(ldata); in eraser()
1007 size_t tail = ldata->read_head; in eraser()
1016 while (MASK(tail) != MASK(ldata->canon_head)) { in eraser()
1018 c = read_buf(ldata, tail); in eraser()
1029 echo_erase_tab(num_chars, after_tab, ldata); in eraser()
1032 echo_char_raw('\b', ldata); in eraser()
1033 echo_char_raw(' ', ldata); in eraser()
1034 echo_char_raw('\b', ldata); in eraser()
1037 echo_char_raw('\b', ldata); in eraser()
1038 echo_char_raw(' ', ldata); in eraser()
1039 echo_char_raw('\b', ldata); in eraser()
1046 if (ldata->read_head == ldata->canon_head && L_ECHO(tty)) in eraser()
1047 finish_erasing(ldata); in eraser()
1076 struct n_tty_data *ldata = tty->disc_data; in isig() local
1089 mutex_lock(&ldata->output_lock); in isig()
1090 ldata->echo_head = ldata->echo_tail = 0; in isig()
1091 ldata->echo_mark = ldata->echo_commit = 0; in isig()
1092 mutex_unlock(&ldata->output_lock); in isig()
1123 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_break() local
1132 put_tty_queue('\377', ldata); in n_tty_receive_break()
1133 put_tty_queue('\0', ldata); in n_tty_receive_break()
1135 put_tty_queue('\0', ldata); in n_tty_receive_break()
1150 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_overrun() local
1152 ldata->num_overrun++; in n_tty_receive_overrun()
1153 if (time_is_before_jiffies(ldata->overrun_time + HZ)) { in n_tty_receive_overrun()
1154 tty_warn(tty, "%u input overrun(s)\n", ldata->num_overrun); in n_tty_receive_overrun()
1155 ldata->overrun_time = jiffies; in n_tty_receive_overrun()
1156 ldata->num_overrun = 0; in n_tty_receive_overrun()
1174 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_parity_error() local
1180 put_tty_queue('\377', ldata); in n_tty_receive_parity_error()
1181 put_tty_queue('\0', ldata); in n_tty_receive_parity_error()
1182 put_tty_queue(c, ldata); in n_tty_receive_parity_error()
1184 put_tty_queue('\0', ldata); in n_tty_receive_parity_error()
1186 put_tty_queue(c, ldata); in n_tty_receive_parity_error()
1244 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_handle_newline() local
1246 set_bit(MASK(ldata->read_head), ldata->read_flags); in n_tty_receive_handle_newline()
1247 put_tty_queue(c, ldata); in n_tty_receive_handle_newline()
1248 smp_store_release(&ldata->canon_head, ldata->read_head); in n_tty_receive_handle_newline()
1255 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_canon() local
1266 ldata->lnext = 1; in n_tty_receive_char_canon()
1268 finish_erasing(ldata); in n_tty_receive_char_canon()
1270 echo_char_raw('^', ldata); in n_tty_receive_char_canon()
1271 echo_char_raw('\b', ldata); in n_tty_receive_char_canon()
1280 size_t tail = ldata->canon_head; in n_tty_receive_char_canon()
1282 finish_erasing(ldata); in n_tty_receive_char_canon()
1284 echo_char_raw('\n', ldata); in n_tty_receive_char_canon()
1285 while (MASK(tail) != MASK(ldata->read_head)) { in n_tty_receive_char_canon()
1286 echo_char(read_buf(ldata, tail), tty); in n_tty_receive_char_canon()
1296 echo_char_raw('\n', ldata); in n_tty_receive_char_canon()
1318 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_canon()
1319 echo_set_canon_col(ldata); in n_tty_receive_char_canon()
1328 put_tty_queue(c, ldata); in n_tty_receive_char_canon()
1341 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_special() local
1372 if (ldata->icanon && n_tty_receive_char_canon(tty, c)) in n_tty_receive_char_special()
1376 finish_erasing(ldata); in n_tty_receive_char_special()
1378 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1381 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_special()
1382 echo_set_canon_col(ldata); in n_tty_receive_char_special()
1390 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1392 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1409 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char() local
1416 finish_erasing(ldata); in n_tty_receive_char()
1418 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char()
1419 echo_set_canon_col(ldata); in n_tty_receive_char()
1425 put_tty_queue(c, ldata); in n_tty_receive_char()
1426 put_tty_queue(c, ldata); in n_tty_receive_char()
1471 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_lnext() local
1473 ldata->lnext = 0; in n_tty_receive_char_lnext()
1488 struct n_tty_data *ldata = tty->disc_data; in n_tty_lookahead_flow_ctrl() local
1491 ldata->lookahead_count += count; in n_tty_lookahead_flow_ctrl()
1509 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_real_raw() local
1513 size_t head = MASK(ldata->read_head); in n_tty_receive_buf_real_raw()
1516 memcpy(read_buf_addr(ldata, head), cp, n); in n_tty_receive_buf_real_raw()
1518 ldata->read_head += n; in n_tty_receive_buf_real_raw()
1528 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_raw() local
1535 put_tty_queue(*cp++, ldata); in n_tty_receive_buf_raw()
1559 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_standard() local
1568 if (ldata->lnext) { in n_tty_receive_buf_standard()
1583 put_tty_queue(c, ldata); in n_tty_receive_buf_standard()
1587 if (test_bit(c, ldata->char_map)) in n_tty_receive_buf_standard()
1597 struct n_tty_data *ldata = tty->disc_data; in __receive_buf() local
1599 size_t la_count = min(ldata->lookahead_count, count); in __receive_buf()
1601 if (ldata->real_raw) in __receive_buf()
1603 else if (ldata->raw || (L_EXTPROC(tty) && !preops)) in __receive_buf()
1631 ldata->lookahead_count -= la_count; in __receive_buf()
1633 if (ldata->icanon && !L_EXTPROC(tty)) in __receive_buf()
1637 smp_store_release(&ldata->commit_head, ldata->read_head); in __receive_buf()
1639 if (read_cnt(ldata)) { in __receive_buf()
1682 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_common() local
1702 size_t tail = smp_load_acquire(&ldata->read_tail); in n_tty_receive_buf_common()
1704 room = N_TTY_BUF_SIZE - (ldata->read_head - tail); in n_tty_receive_buf_common()
1709 overflow = ldata->icanon && ldata->canon_head == tail; in n_tty_receive_buf_common()
1711 ldata->read_head--; in n_tty_receive_buf_common()
1713 WRITE_ONCE(ldata->no_room, flow && !room); in n_tty_receive_buf_common()
1744 if (unlikely(ldata->no_room)) { in n_tty_receive_buf_common()
1786 struct n_tty_data *ldata = tty->disc_data; in n_tty_set_termios() local
1789 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); in n_tty_set_termios()
1790 ldata->line_start = ldata->read_tail; in n_tty_set_termios()
1791 if (!L_ICANON(tty) || !read_cnt(ldata)) { in n_tty_set_termios()
1792 ldata->canon_head = ldata->read_tail; in n_tty_set_termios()
1793 ldata->push = 0; in n_tty_set_termios()
1795 set_bit(MASK(ldata->read_head - 1), ldata->read_flags); in n_tty_set_termios()
1796 ldata->canon_head = ldata->read_head; in n_tty_set_termios()
1797 ldata->push = 1; in n_tty_set_termios()
1799 ldata->commit_head = ldata->read_head; in n_tty_set_termios()
1800 ldata->erasing = 0; in n_tty_set_termios()
1801 ldata->lnext = 0; in n_tty_set_termios()
1804 ldata->icanon = (L_ICANON(tty) != 0); in n_tty_set_termios()
1810 bitmap_zero(ldata->char_map, 256); in n_tty_set_termios()
1813 set_bit('\r', ldata->char_map); in n_tty_set_termios()
1815 set_bit('\n', ldata->char_map); in n_tty_set_termios()
1818 set_bit(ERASE_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1819 set_bit(KILL_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1820 set_bit(EOF_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1821 set_bit('\n', ldata->char_map); in n_tty_set_termios()
1822 set_bit(EOL_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1824 set_bit(WERASE_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1825 set_bit(LNEXT_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1826 set_bit(EOL2_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1829 ldata->char_map); in n_tty_set_termios()
1833 set_bit(START_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1834 set_bit(STOP_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1837 set_bit(INTR_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1838 set_bit(QUIT_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1839 set_bit(SUSP_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1841 clear_bit(__DISABLED_CHAR, ldata->char_map); in n_tty_set_termios()
1842 ldata->raw = 0; in n_tty_set_termios()
1843 ldata->real_raw = 0; in n_tty_set_termios()
1845 ldata->raw = 1; in n_tty_set_termios()
1849 ldata->real_raw = 1; in n_tty_set_termios()
1851 ldata->real_raw = 0; in n_tty_set_termios()
1877 struct n_tty_data *ldata = tty->disc_data; in n_tty_close() local
1883 vfree(ldata); in n_tty_close()
1898 struct n_tty_data *ldata; in n_tty_open() local
1901 ldata = vzalloc(sizeof(*ldata)); in n_tty_open()
1902 if (!ldata) in n_tty_open()
1905 ldata->overrun_time = jiffies; in n_tty_open()
1906 mutex_init(&ldata->atomic_read_lock); in n_tty_open()
1907 mutex_init(&ldata->output_lock); in n_tty_open()
1909 tty->disc_data = ldata; in n_tty_open()
1920 const struct n_tty_data *ldata = tty->disc_data; in input_available_p() local
1923 if (ldata->icanon && !L_EXTPROC(tty)) in input_available_p()
1924 return ldata->canon_head != ldata->read_tail; in input_available_p()
1926 return ldata->commit_head - ldata->read_tail >= amt; in input_available_p()
1951 struct n_tty_data *ldata = tty->disc_data; in copy_from_read_buf() local
1954 size_t head = smp_load_acquire(&ldata->commit_head); in copy_from_read_buf()
1955 size_t tail = MASK(ldata->read_tail); in copy_from_read_buf()
1957 n = min3(head - ldata->read_tail, N_TTY_BUF_SIZE - tail, *nr); in copy_from_read_buf()
1961 u8 *from = read_buf_addr(ldata, tail); in copy_from_read_buf()
1966 smp_store_release(&ldata->read_tail, ldata->read_tail + n); in copy_from_read_buf()
1969 if (L_EXTPROC(tty) && ldata->icanon && is_eof && in copy_from_read_buf()
1970 head == ldata->read_tail) in copy_from_read_buf()
1977 return head != ldata->read_tail; in copy_from_read_buf()
2005 struct n_tty_data *ldata = tty->disc_data; in canon_copy_from_read_buf() local
2015 canon_head = smp_load_acquire(&ldata->canon_head); in canon_copy_from_read_buf()
2016 n = min(*nr, canon_head - ldata->read_tail); in canon_copy_from_read_buf()
2018 tail = MASK(ldata->read_tail); in canon_copy_from_read_buf()
2021 eol = find_next_bit(ldata->read_flags, size, tail); in canon_copy_from_read_buf()
2025 eol = find_first_bit(ldata->read_flags, more); in canon_copy_from_read_buf()
2035 if (!found || read_buf(ldata, eol) != __DISABLED_CHAR) in canon_copy_from_read_buf()
2043 clear_bit(eol, ldata->read_flags); in canon_copy_from_read_buf()
2044 smp_store_release(&ldata->read_tail, ldata->read_tail + c); in canon_copy_from_read_buf()
2047 if (!ldata->push) in canon_copy_from_read_buf()
2048 ldata->line_start = ldata->read_tail; in canon_copy_from_read_buf()
2050 ldata->push = 0; in canon_copy_from_read_buf()
2056 return ldata->read_tail != canon_head; in canon_copy_from_read_buf()
2064 static void canon_skip_eof(struct n_tty_data *ldata) in canon_skip_eof() argument
2068 canon_head = smp_load_acquire(&ldata->canon_head); in canon_skip_eof()
2069 tail = ldata->read_tail; in canon_skip_eof()
2077 if (!test_bit(tail, ldata->read_flags)) in canon_skip_eof()
2079 if (read_buf(ldata, tail) != __DISABLED_CHAR) in canon_skip_eof()
2083 clear_bit(tail, ldata->read_flags); in canon_skip_eof()
2084 smp_store_release(&ldata->read_tail, ldata->read_tail + 1); in canon_skip_eof()
2121 struct n_tty_data *ldata = tty->disc_data; in n_tty_continue_cookie() local
2124 if (ldata->icanon && !L_EXTPROC(tty)) { in n_tty_continue_cookie()
2130 canon_skip_eof(ldata); in n_tty_continue_cookie()
2142 mutex_unlock(&ldata->atomic_read_lock); in n_tty_continue_cookie()
2198 struct n_tty_data *ldata = tty->disc_data; in n_tty_read() local
2219 if (!mutex_trylock(&ldata->atomic_read_lock)) in n_tty_read()
2222 if (mutex_lock_interruptible(&ldata->atomic_read_lock)) in n_tty_read()
2230 if (!ldata->icanon) { in n_tty_read()
2241 old_tail = ldata->read_tail; in n_tty_read()
2274 if (ldata->icanon && !L_EXTPROC(tty)) { in n_tty_read()
2295 if (old_tail != ldata->read_tail) { in n_tty_read()
2306 mutex_unlock(&ldata->atomic_read_lock); in n_tty_read()
2395 struct n_tty_data *ldata = tty->disc_data; in n_tty_write() local
2398 mutex_lock(&ldata->output_lock); in n_tty_write()
2400 mutex_unlock(&ldata->output_lock); in n_tty_write()
2472 static unsigned long inq_canon(struct n_tty_data *ldata) in inq_canon() argument
2476 if (ldata->canon_head == ldata->read_tail) in inq_canon()
2478 head = ldata->canon_head; in inq_canon()
2479 tail = ldata->read_tail; in inq_canon()
2483 if (test_bit(MASK(tail), ldata->read_flags) && in inq_canon()
2484 read_buf(ldata, tail) == __DISABLED_CHAR) in inq_canon()
2494 struct n_tty_data *ldata = tty->disc_data; in n_tty_ioctl() local
2503 num = inq_canon(ldata); in n_tty_ioctl()
2505 num = read_cnt(ldata); in n_tty_ioctl()