Lines Matching refs:ldata

131 static inline size_t read_cnt(struct n_tty_data *ldata)  in read_cnt()  argument
133 return ldata->read_head - ldata->read_tail; in read_cnt()
136 static inline unsigned char read_buf(struct n_tty_data *ldata, size_t i) in read_buf() argument
138 return ldata->read_buf[i & (N_TTY_BUF_SIZE - 1)]; in read_buf()
141 static inline unsigned char *read_buf_addr(struct n_tty_data *ldata, size_t i) in read_buf_addr() argument
143 return &ldata->read_buf[i & (N_TTY_BUF_SIZE - 1)]; in read_buf_addr()
146 static inline unsigned char echo_buf(struct n_tty_data *ldata, size_t i) in echo_buf() argument
149 return ldata->echo_buf[i & (N_TTY_BUF_SIZE - 1)]; in echo_buf()
152 static inline unsigned char *echo_buf_addr(struct n_tty_data *ldata, size_t i) in echo_buf_addr() argument
154 return &ldata->echo_buf[i & (N_TTY_BUF_SIZE - 1)]; in echo_buf_addr()
169 struct n_tty_data *ldata = tty->disc_data; in tty_copy() local
171 void *from = read_buf_addr(ldata, tail); in tty_copy()
179 from = ldata->read_buf; in tty_copy()
201 struct n_tty_data *ldata = tty->disc_data; in n_tty_kick_worker() local
204 if (unlikely(ldata->no_room)) { in n_tty_kick_worker()
205 ldata->no_room = 0; in n_tty_kick_worker()
221 struct n_tty_data *ldata = tty->disc_data; in chars_in_buffer() local
224 if (!ldata->icanon) in chars_in_buffer()
225 n = ldata->commit_head - ldata->read_tail; in chars_in_buffer()
227 n = ldata->canon_head - ldata->read_tail; in chars_in_buffer()
248 struct n_tty_data *ldata = tty->disc_data; in n_tty_check_throttle() local
255 if (ldata->icanon && ldata->canon_head == ldata->read_tail) in n_tty_check_throttle()
261 if (N_TTY_BUF_SIZE - read_cnt(ldata) >= TTY_THRESHOLD_THROTTLE) in n_tty_check_throttle()
312 static inline void put_tty_queue(unsigned char c, struct n_tty_data *ldata) in put_tty_queue() argument
314 *read_buf_addr(ldata, ldata->read_head) = c; in put_tty_queue()
315 ldata->read_head++; in put_tty_queue()
329 static void reset_buffer_flags(struct n_tty_data *ldata) in reset_buffer_flags() argument
331 ldata->read_head = ldata->canon_head = ldata->read_tail = 0; in reset_buffer_flags()
332 ldata->commit_head = 0; in reset_buffer_flags()
333 ldata->line_start = 0; in reset_buffer_flags()
335 ldata->erasing = 0; in reset_buffer_flags()
336 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); in reset_buffer_flags()
337 ldata->push = 0; in reset_buffer_flags()
428 struct n_tty_data *ldata = tty->disc_data; in do_output_char() local
437 ldata->column = 0; in do_output_char()
441 ldata->canon_column = ldata->column = 0; in do_output_char()
445 ldata->canon_column = ldata->column; in do_output_char()
448 if (O_ONOCR(tty) && ldata->column == 0) in do_output_char()
453 ldata->canon_column = ldata->column = 0; in do_output_char()
456 ldata->canon_column = ldata->column = 0; in do_output_char()
459 spaces = 8 - (ldata->column & 7); in do_output_char()
463 ldata->column += spaces; in do_output_char()
467 ldata->column += spaces; in do_output_char()
470 if (ldata->column > 0) in do_output_char()
471 ldata->column--; in do_output_char()
478 ldata->column++; in do_output_char()
503 struct n_tty_data *ldata = tty->disc_data; in process_output() local
506 mutex_lock(&ldata->output_lock); in process_output()
511 mutex_unlock(&ldata->output_lock); in process_output()
540 struct n_tty_data *ldata = tty->disc_data; in process_output_block() local
545 mutex_lock(&ldata->output_lock); in process_output_block()
549 mutex_unlock(&ldata->output_lock); in process_output_block()
561 ldata->column = 0; in process_output_block()
564 ldata->canon_column = ldata->column; in process_output_block()
567 if (O_ONOCR(tty) && ldata->column == 0) in process_output_block()
571 ldata->canon_column = ldata->column = 0; in process_output_block()
576 if (ldata->column > 0) in process_output_block()
577 ldata->column--; in process_output_block()
584 ldata->column++; in process_output_block()
592 mutex_unlock(&ldata->output_lock); in process_output_block()
623 struct n_tty_data *ldata = tty->disc_data; in __process_echoes() local
630 tail = ldata->echo_tail; in __process_echoes()
631 while (MASK(ldata->echo_commit) != MASK(tail)) { in __process_echoes()
632 c = echo_buf(ldata, tail); in __process_echoes()
642 if (MASK(ldata->echo_commit) == MASK(tail + 1)) in __process_echoes()
649 op = echo_buf(ldata, tail + 1); in __process_echoes()
655 if (MASK(ldata->echo_commit) == MASK(tail + 2)) in __process_echoes()
657 num_chars = echo_buf(ldata, tail + 2); in __process_echoes()
670 num_chars += ldata->canon_column; in __process_echoes()
680 if (ldata->column > 0) in __process_echoes()
681 ldata->column--; in __process_echoes()
687 ldata->canon_column = ldata->column; in __process_echoes()
692 if (ldata->column > 0) in __process_echoes()
693 ldata->column--; in __process_echoes()
704 ldata->column++; in __process_echoes()
725 ldata->column += 2; in __process_echoes()
751 while (ldata->echo_commit > tail && in __process_echoes()
752 ldata->echo_commit - tail >= ECHO_DISCARD_WATERMARK) { in __process_echoes()
753 if (echo_buf(ldata, tail) == ECHO_OP_START) { in __process_echoes()
754 if (echo_buf(ldata, tail + 1) == ECHO_OP_ERASE_TAB) in __process_echoes()
763 ldata->echo_tail = tail; in __process_echoes()
769 struct n_tty_data *ldata = tty->disc_data; in commit_echoes() local
773 mutex_lock(&ldata->output_lock); in commit_echoes()
774 head = ldata->echo_head; in commit_echoes()
775 ldata->echo_mark = head; in commit_echoes()
776 old = ldata->echo_commit - ldata->echo_tail; in commit_echoes()
781 nr = head - ldata->echo_tail; in commit_echoes()
784 mutex_unlock(&ldata->output_lock); in commit_echoes()
788 ldata->echo_commit = head; in commit_echoes()
790 mutex_unlock(&ldata->output_lock); in commit_echoes()
798 struct n_tty_data *ldata = tty->disc_data; in process_echoes() local
801 if (ldata->echo_mark == ldata->echo_tail) in process_echoes()
804 mutex_lock(&ldata->output_lock); in process_echoes()
805 ldata->echo_commit = ldata->echo_mark; in process_echoes()
807 mutex_unlock(&ldata->output_lock); in process_echoes()
816 struct n_tty_data *ldata = tty->disc_data; in flush_echoes() local
819 ldata->echo_commit == ldata->echo_head) in flush_echoes()
822 mutex_lock(&ldata->output_lock); in flush_echoes()
823 ldata->echo_commit = ldata->echo_head; in flush_echoes()
825 mutex_unlock(&ldata->output_lock); in flush_echoes()
836 static inline void add_echo_byte(unsigned char c, struct n_tty_data *ldata) in add_echo_byte() argument
838 *echo_buf_addr(ldata, ldata->echo_head) = c; in add_echo_byte()
840 ldata->echo_head++; in add_echo_byte()
850 static void echo_move_back_col(struct n_tty_data *ldata) in echo_move_back_col() argument
852 add_echo_byte(ECHO_OP_START, ldata); in echo_move_back_col()
853 add_echo_byte(ECHO_OP_MOVE_BACK_COL, ldata); in echo_move_back_col()
864 static void echo_set_canon_col(struct n_tty_data *ldata) in echo_set_canon_col() argument
866 add_echo_byte(ECHO_OP_START, ldata); in echo_set_canon_col()
867 add_echo_byte(ECHO_OP_SET_CANON_COL, ldata); in echo_set_canon_col()
886 struct n_tty_data *ldata) in echo_erase_tab() argument
888 add_echo_byte(ECHO_OP_START, ldata); in echo_erase_tab()
889 add_echo_byte(ECHO_OP_ERASE_TAB, ldata); in echo_erase_tab()
898 add_echo_byte(num_chars, ldata); in echo_erase_tab()
912 static void echo_char_raw(unsigned char c, struct n_tty_data *ldata) in echo_char_raw() argument
915 add_echo_byte(ECHO_OP_START, ldata); in echo_char_raw()
916 add_echo_byte(ECHO_OP_START, ldata); in echo_char_raw()
918 add_echo_byte(c, ldata); in echo_char_raw()
936 struct n_tty_data *ldata = tty->disc_data; in echo_char() local
939 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
940 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
943 add_echo_byte(ECHO_OP_START, ldata); in echo_char()
944 add_echo_byte(c, ldata); in echo_char()
953 static inline void finish_erasing(struct n_tty_data *ldata) in finish_erasing() argument
955 if (ldata->erasing) { in finish_erasing()
956 echo_char_raw('/', ldata); in finish_erasing()
957 ldata->erasing = 0; in finish_erasing()
976 struct n_tty_data *ldata = tty->disc_data; in eraser() local
982 if (ldata->read_head == ldata->canon_head) { in eraser()
992 ldata->read_head = ldata->canon_head; in eraser()
996 ldata->read_head = ldata->canon_head; in eraser()
997 finish_erasing(ldata); in eraser()
1001 echo_char_raw('\n', ldata); in eraser()
1008 while (MASK(ldata->read_head) != MASK(ldata->canon_head)) { in eraser()
1009 head = ldata->read_head; in eraser()
1014 c = read_buf(ldata, head); in eraser()
1016 MASK(head) != MASK(ldata->canon_head)); in eraser()
1029 cnt = ldata->read_head - head; in eraser()
1030 ldata->read_head = head; in eraser()
1033 if (!ldata->erasing) { in eraser()
1034 echo_char_raw('\\', ldata); in eraser()
1035 ldata->erasing = 1; in eraser()
1041 echo_char_raw(read_buf(ldata, head), ldata); in eraser()
1042 echo_move_back_col(ldata); in eraser()
1049 size_t tail = ldata->read_head; in eraser()
1058 while (MASK(tail) != MASK(ldata->canon_head)) { in eraser()
1060 c = read_buf(ldata, tail); in eraser()
1071 echo_erase_tab(num_chars, after_tab, ldata); in eraser()
1074 echo_char_raw('\b', ldata); in eraser()
1075 echo_char_raw(' ', ldata); in eraser()
1076 echo_char_raw('\b', ldata); in eraser()
1079 echo_char_raw('\b', ldata); in eraser()
1080 echo_char_raw(' ', ldata); in eraser()
1081 echo_char_raw('\b', ldata); in eraser()
1088 if (ldata->read_head == ldata->canon_head && L_ECHO(tty)) in eraser()
1089 finish_erasing(ldata); in eraser()
1118 struct n_tty_data *ldata = tty->disc_data; in isig() local
1131 mutex_lock(&ldata->output_lock); in isig()
1132 ldata->echo_head = ldata->echo_tail = 0; in isig()
1133 ldata->echo_mark = ldata->echo_commit = 0; in isig()
1134 mutex_unlock(&ldata->output_lock); in isig()
1166 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_break() local
1175 put_tty_queue('\377', ldata); in n_tty_receive_break()
1176 put_tty_queue('\0', ldata); in n_tty_receive_break()
1178 put_tty_queue('\0', ldata); in n_tty_receive_break()
1196 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_overrun() local
1198 ldata->num_overrun++; in n_tty_receive_overrun()
1199 if (time_after(jiffies, ldata->overrun_time + HZ) || in n_tty_receive_overrun()
1200 time_after(ldata->overrun_time, jiffies)) { in n_tty_receive_overrun()
1201 tty_warn(tty, "%d input overrun(s)\n", ldata->num_overrun); in n_tty_receive_overrun()
1202 ldata->overrun_time = jiffies; in n_tty_receive_overrun()
1203 ldata->num_overrun = 0; in n_tty_receive_overrun()
1220 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_parity_error() local
1226 put_tty_queue('\377', ldata); in n_tty_receive_parity_error()
1227 put_tty_queue('\0', ldata); in n_tty_receive_parity_error()
1228 put_tty_queue(c, ldata); in n_tty_receive_parity_error()
1230 put_tty_queue('\0', ldata); in n_tty_receive_parity_error()
1232 put_tty_queue(c, ldata); in n_tty_receive_parity_error()
1268 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_special() local
1308 if (ldata->icanon) { in n_tty_receive_char_special()
1316 ldata->lnext = 1; in n_tty_receive_char_special()
1318 finish_erasing(ldata); in n_tty_receive_char_special()
1320 echo_char_raw('^', ldata); in n_tty_receive_char_special()
1321 echo_char_raw('\b', ldata); in n_tty_receive_char_special()
1328 size_t tail = ldata->canon_head; in n_tty_receive_char_special()
1330 finish_erasing(ldata); in n_tty_receive_char_special()
1332 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1333 while (MASK(tail) != MASK(ldata->read_head)) { in n_tty_receive_char_special()
1334 echo_char(read_buf(ldata, tail), tty); in n_tty_receive_char_special()
1342 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1358 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_special()
1359 echo_set_canon_col(ldata); in n_tty_receive_char_special()
1368 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1371 set_bit(ldata->read_head & (N_TTY_BUF_SIZE - 1), ldata->read_flags); in n_tty_receive_char_special()
1372 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1373 smp_store_release(&ldata->canon_head, ldata->read_head); in n_tty_receive_char_special()
1381 finish_erasing(ldata); in n_tty_receive_char_special()
1383 echo_char_raw('\n', ldata); in n_tty_receive_char_special()
1386 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_special()
1387 echo_set_canon_col(ldata); in n_tty_receive_char_special()
1395 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1397 put_tty_queue(c, ldata); in n_tty_receive_char_special()
1404 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_inline() local
1411 finish_erasing(ldata); in n_tty_receive_char_inline()
1413 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_inline()
1414 echo_set_canon_col(ldata); in n_tty_receive_char_inline()
1420 put_tty_queue(c, ldata); in n_tty_receive_char_inline()
1421 put_tty_queue(c, ldata); in n_tty_receive_char_inline()
1432 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_fast() local
1439 finish_erasing(ldata); in n_tty_receive_char_fast()
1441 if (ldata->canon_head == ldata->read_head) in n_tty_receive_char_fast()
1442 echo_set_canon_col(ldata); in n_tty_receive_char_fast()
1446 put_tty_queue(c, ldata); in n_tty_receive_char_fast()
1492 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_char_lnext() local
1494 ldata->lnext = 0; in n_tty_receive_char_lnext()
1509 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_real_raw() local
1512 head = ldata->read_head & (N_TTY_BUF_SIZE - 1); in n_tty_receive_buf_real_raw()
1514 memcpy(read_buf_addr(ldata, head), cp, n); in n_tty_receive_buf_real_raw()
1515 ldata->read_head += n; in n_tty_receive_buf_real_raw()
1519 head = ldata->read_head & (N_TTY_BUF_SIZE - 1); in n_tty_receive_buf_real_raw()
1521 memcpy(read_buf_addr(ldata, head), cp, n); in n_tty_receive_buf_real_raw()
1522 ldata->read_head += n; in n_tty_receive_buf_real_raw()
1529 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_raw() local
1536 put_tty_queue(*cp++, ldata); in n_tty_receive_buf_raw()
1560 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_standard() local
1574 put_tty_queue(c, ldata); in n_tty_receive_buf_standard()
1577 if (!test_bit(c, ldata->char_map)) in n_tty_receive_buf_standard()
1594 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_fast() local
1603 if (!test_bit(c, ldata->char_map)) in n_tty_receive_buf_fast()
1619 struct n_tty_data *ldata = tty->disc_data; in __receive_buf() local
1622 if (ldata->real_raw) in __receive_buf()
1624 else if (ldata->raw || (L_EXTPROC(tty) && !preops)) in __receive_buf()
1629 if (ldata->lnext) { in __receive_buf()
1648 if (ldata->icanon && !L_EXTPROC(tty)) in __receive_buf()
1652 smp_store_release(&ldata->commit_head, ldata->read_head); in __receive_buf()
1654 if (read_cnt(ldata)) { in __receive_buf()
1697 struct n_tty_data *ldata = tty->disc_data; in n_tty_receive_buf_common() local
1716 size_t tail = smp_load_acquire(&ldata->read_tail); in n_tty_receive_buf_common()
1718 room = N_TTY_BUF_SIZE - (ldata->read_head - tail); in n_tty_receive_buf_common()
1723 overflow = ldata->icanon && ldata->canon_head == tail; in n_tty_receive_buf_common()
1725 ldata->read_head--; in n_tty_receive_buf_common()
1727 ldata->no_room = flow && !room; in n_tty_receive_buf_common()
1791 struct n_tty_data *ldata = tty->disc_data; in n_tty_set_termios() local
1794 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE); in n_tty_set_termios()
1795 ldata->line_start = ldata->read_tail; in n_tty_set_termios()
1796 if (!L_ICANON(tty) || !read_cnt(ldata)) { in n_tty_set_termios()
1797 ldata->canon_head = ldata->read_tail; in n_tty_set_termios()
1798 ldata->push = 0; in n_tty_set_termios()
1800 set_bit((ldata->read_head - 1) & (N_TTY_BUF_SIZE - 1), in n_tty_set_termios()
1801 ldata->read_flags); in n_tty_set_termios()
1802 ldata->canon_head = ldata->read_head; in n_tty_set_termios()
1803 ldata->push = 1; in n_tty_set_termios()
1805 ldata->commit_head = ldata->read_head; in n_tty_set_termios()
1806 ldata->erasing = 0; in n_tty_set_termios()
1807 ldata->lnext = 0; in n_tty_set_termios()
1810 ldata->icanon = (L_ICANON(tty) != 0); in n_tty_set_termios()
1816 bitmap_zero(ldata->char_map, 256); in n_tty_set_termios()
1819 set_bit('\r', ldata->char_map); in n_tty_set_termios()
1821 set_bit('\n', ldata->char_map); in n_tty_set_termios()
1824 set_bit(ERASE_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1825 set_bit(KILL_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1826 set_bit(EOF_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1827 set_bit('\n', ldata->char_map); in n_tty_set_termios()
1828 set_bit(EOL_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1830 set_bit(WERASE_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1831 set_bit(LNEXT_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1832 set_bit(EOL2_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1835 ldata->char_map); in n_tty_set_termios()
1839 set_bit(START_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1840 set_bit(STOP_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1843 set_bit(INTR_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1844 set_bit(QUIT_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1845 set_bit(SUSP_CHAR(tty), ldata->char_map); in n_tty_set_termios()
1847 clear_bit(__DISABLED_CHAR, ldata->char_map); in n_tty_set_termios()
1848 ldata->raw = 0; in n_tty_set_termios()
1849 ldata->real_raw = 0; in n_tty_set_termios()
1851 ldata->raw = 1; in n_tty_set_termios()
1855 ldata->real_raw = 1; in n_tty_set_termios()
1857 ldata->real_raw = 0; in n_tty_set_termios()
1885 struct n_tty_data *ldata = tty->disc_data; in n_tty_close() local
1890 vfree(ldata); in n_tty_close()
1906 struct n_tty_data *ldata; in n_tty_open() local
1909 ldata = vzalloc(sizeof(*ldata)); in n_tty_open()
1910 if (!ldata) in n_tty_open()
1913 ldata->overrun_time = jiffies; in n_tty_open()
1914 mutex_init(&ldata->atomic_read_lock); in n_tty_open()
1915 mutex_init(&ldata->output_lock); in n_tty_open()
1917 tty->disc_data = ldata; in n_tty_open()
1928 struct n_tty_data *ldata = tty->disc_data; in input_available_p() local
1931 if (ldata->icanon && !L_EXTPROC(tty)) in input_available_p()
1932 return ldata->canon_head != ldata->read_tail; in input_available_p()
1934 return ldata->commit_head - ldata->read_tail >= amt; in input_available_p()
1961 struct n_tty_data *ldata = tty->disc_data; in copy_from_read_buf() local
1964 size_t head = smp_load_acquire(&ldata->commit_head); in copy_from_read_buf()
1965 size_t tail = ldata->read_tail & (N_TTY_BUF_SIZE - 1); in copy_from_read_buf()
1967 n = min(head - ldata->read_tail, N_TTY_BUF_SIZE - tail); in copy_from_read_buf()
1970 unsigned char *from = read_buf_addr(ldata, tail); in copy_from_read_buf()
1975 smp_store_release(&ldata->read_tail, ldata->read_tail + n); in copy_from_read_buf()
1977 if (L_EXTPROC(tty) && ldata->icanon && is_eof && in copy_from_read_buf()
1978 (head == ldata->read_tail)) in copy_from_read_buf()
1984 return head != ldata->read_tail; in copy_from_read_buf()
2016 struct n_tty_data *ldata = tty->disc_data; in canon_copy_from_read_buf() local
2026 canon_head = smp_load_acquire(&ldata->canon_head); in canon_copy_from_read_buf()
2027 n = min(*nr, canon_head - ldata->read_tail); in canon_copy_from_read_buf()
2029 tail = ldata->read_tail & (N_TTY_BUF_SIZE - 1); in canon_copy_from_read_buf()
2035 eol = find_next_bit(ldata->read_flags, size, tail); in canon_copy_from_read_buf()
2039 eol = find_next_bit(ldata->read_flags, more, 0); in canon_copy_from_read_buf()
2049 if (!found || read_buf(ldata, eol) != __DISABLED_CHAR) in canon_copy_from_read_buf()
2060 clear_bit(eol, ldata->read_flags); in canon_copy_from_read_buf()
2061 smp_store_release(&ldata->read_tail, ldata->read_tail + c); in canon_copy_from_read_buf()
2064 if (!ldata->push) in canon_copy_from_read_buf()
2065 ldata->line_start = ldata->read_tail; in canon_copy_from_read_buf()
2067 ldata->push = 0; in canon_copy_from_read_buf()
2073 return ldata->read_tail != canon_head; in canon_copy_from_read_buf()
2083 struct n_tty_data *ldata = tty->disc_data; in canon_skip_eof() local
2086 canon_head = smp_load_acquire(&ldata->canon_head); in canon_skip_eof()
2087 tail = ldata->read_tail; in canon_skip_eof()
2095 if (!test_bit(tail, ldata->read_flags)) in canon_skip_eof()
2097 if (read_buf(ldata, tail) != __DISABLED_CHAR) in canon_skip_eof()
2101 clear_bit(tail, ldata->read_flags); in canon_skip_eof()
2102 smp_store_release(&ldata->read_tail, ldata->read_tail + 1); in canon_skip_eof()
2156 struct n_tty_data *ldata = tty->disc_data; in n_tty_read() local
2173 if (ldata->icanon && !L_EXTPROC(tty)) { in n_tty_read()
2192 mutex_unlock(&ldata->atomic_read_lock); in n_tty_read()
2205 if (!mutex_trylock(&ldata->atomic_read_lock)) in n_tty_read()
2208 if (mutex_lock_interruptible(&ldata->atomic_read_lock)) in n_tty_read()
2216 if (!ldata->icanon) { in n_tty_read()
2227 tail = ldata->read_tail; in n_tty_read()
2282 if (ldata->icanon && !L_EXTPROC(tty)) { in n_tty_read()
2316 if (tail != ldata->read_tail) in n_tty_read()
2321 mutex_unlock(&ldata->atomic_read_lock); in n_tty_read()
2402 struct n_tty_data *ldata = tty->disc_data; in n_tty_write() local
2405 mutex_lock(&ldata->output_lock); in n_tty_write()
2407 mutex_unlock(&ldata->output_lock); in n_tty_write()
2479 static unsigned long inq_canon(struct n_tty_data *ldata) in inq_canon() argument
2483 if (ldata->canon_head == ldata->read_tail) in inq_canon()
2485 head = ldata->canon_head; in inq_canon()
2486 tail = ldata->read_tail; in inq_canon()
2490 if (test_bit(tail & (N_TTY_BUF_SIZE - 1), ldata->read_flags) && in inq_canon()
2491 read_buf(ldata, tail) == __DISABLED_CHAR) in inq_canon()
2501 struct n_tty_data *ldata = tty->disc_data; in n_tty_ioctl() local
2510 retval = inq_canon(ldata); in n_tty_ioctl()
2512 retval = read_cnt(ldata); in n_tty_ioctl()