tty: n_tty: use u8 for chars and flags

JIRA: https://issues.redhat.com/browse/RHEL-24205

commit b9b96b2089e9563a77a69e0fcfbedc5285ce890c
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Sun Aug 27 09:41:44 2023 +0200

    tty: n_tty: use u8 for chars and flags

    Unify with the tty layer and use u8 for both chars and flags.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230827074147.2287-12-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
This commit is contained in:
Andrew Halaney 2024-02-27 15:27:51 -06:00 committed by Derek Barbosa
parent bad1d2eaf6
commit aa597c64ca
1 changed files with 36 additions and 36 deletions

View File

@ -109,9 +109,9 @@ struct n_tty_data {
unsigned char push:1; unsigned char push:1;
/* shared by producer and consumer */ /* shared by producer and consumer */
char read_buf[N_TTY_BUF_SIZE]; u8 read_buf[N_TTY_BUF_SIZE];
DECLARE_BITMAP(read_flags, N_TTY_BUF_SIZE); DECLARE_BITMAP(read_flags, N_TTY_BUF_SIZE);
unsigned char echo_buf[N_TTY_BUF_SIZE]; u8 echo_buf[N_TTY_BUF_SIZE];
/* consumer-published */ /* consumer-published */
size_t read_tail; size_t read_tail;
@ -136,23 +136,23 @@ static inline size_t read_cnt(struct n_tty_data *ldata)
return ldata->read_head - ldata->read_tail; return ldata->read_head - ldata->read_tail;
} }
static inline unsigned char read_buf(struct n_tty_data *ldata, size_t i) static inline u8 read_buf(struct n_tty_data *ldata, size_t i)
{ {
return ldata->read_buf[MASK(i)]; return ldata->read_buf[MASK(i)];
} }
static inline unsigned char *read_buf_addr(struct n_tty_data *ldata, size_t i) static inline u8 *read_buf_addr(struct n_tty_data *ldata, size_t i)
{ {
return &ldata->read_buf[MASK(i)]; return &ldata->read_buf[MASK(i)];
} }
static inline unsigned char echo_buf(struct n_tty_data *ldata, size_t i) static inline u8 echo_buf(struct n_tty_data *ldata, size_t i)
{ {
smp_rmb(); /* Matches smp_wmb() in add_echo_byte(). */ smp_rmb(); /* Matches smp_wmb() in add_echo_byte(). */
return ldata->echo_buf[MASK(i)]; return ldata->echo_buf[MASK(i)];
} }
static inline unsigned char *echo_buf_addr(struct n_tty_data *ldata, size_t i) static inline u8 *echo_buf_addr(struct n_tty_data *ldata, size_t i)
{ {
return &ldata->echo_buf[MASK(i)]; return &ldata->echo_buf[MASK(i)];
} }
@ -303,7 +303,7 @@ static void n_tty_check_unthrottle(struct tty_struct *tty)
* * n_tty_receive_buf()/producer path: * * n_tty_receive_buf()/producer path:
* caller holds non-exclusive %termios_rwsem * caller holds non-exclusive %termios_rwsem
*/ */
static inline void put_tty_queue(unsigned char c, struct n_tty_data *ldata) static inline void put_tty_queue(u8 c, struct n_tty_data *ldata)
{ {
*read_buf_addr(ldata, ldata->read_head) = c; *read_buf_addr(ldata, ldata->read_head) = c;
ldata->read_head++; ldata->read_head++;
@ -377,7 +377,7 @@ static void n_tty_flush_buffer(struct tty_struct *tty)
* character. We use this to correctly compute the on-screen size of the * character. We use this to correctly compute the on-screen size of the
* character when printing. * character when printing.
*/ */
static inline int is_utf8_continuation(unsigned char c) static inline int is_utf8_continuation(u8 c)
{ {
return (c & 0xc0) == 0x80; return (c & 0xc0) == 0x80;
} }
@ -390,7 +390,7 @@ static inline int is_utf8_continuation(unsigned char c)
* Returns: true if the utf8 character @c is a multibyte continuation character * Returns: true if the utf8 character @c is a multibyte continuation character
* and the terminal is in unicode mode. * and the terminal is in unicode mode.
*/ */
static inline int is_continuation(unsigned char c, const struct tty_struct *tty) static inline int is_continuation(u8 c, const struct tty_struct *tty)
{ {
return I_IUTF8(tty) && is_utf8_continuation(c); return I_IUTF8(tty) && is_utf8_continuation(c);
} }
@ -414,7 +414,7 @@ static inline int is_continuation(unsigned char c, const struct tty_struct *tty)
* Locking: should be called under the %output_lock to protect the column state * Locking: should be called under the %output_lock to protect the column state
* and space left in the buffer. * and space left in the buffer.
*/ */
static int do_output_char(unsigned char c, struct tty_struct *tty, int space) static int do_output_char(u8 c, struct tty_struct *tty, int space)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
int spaces; int spaces;
@ -488,7 +488,7 @@ static int do_output_char(unsigned char c, struct tty_struct *tty, int space)
* Locking: %output_lock to protect column state and space left (also, this is * Locking: %output_lock to protect column state and space left (also, this is
*called from n_tty_write() under the tty layer write lock). *called from n_tty_write() under the tty layer write lock).
*/ */
static int process_output(unsigned char c, struct tty_struct *tty) static int process_output(u8 c, struct tty_struct *tty)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
int space, retval; int space, retval;
@ -524,12 +524,12 @@ static int process_output(unsigned char c, struct tty_struct *tty)
* called from n_tty_write() under the tty layer write lock). * called from n_tty_write() under the tty layer write lock).
*/ */
static ssize_t process_output_block(struct tty_struct *tty, static ssize_t process_output_block(struct tty_struct *tty,
const unsigned char *buf, unsigned int nr) const u8 *buf, unsigned int nr)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
int space; int space;
int i; int i;
const unsigned char *cp; const u8 *cp;
mutex_lock(&ldata->output_lock); mutex_lock(&ldata->output_lock);
@ -542,7 +542,7 @@ static ssize_t process_output_block(struct tty_struct *tty,
nr = space; nr = space;
for (i = 0, cp = buf; i < nr; i++, cp++) { for (i = 0, cp = buf; i < nr; i++, cp++) {
unsigned char c = *cp; u8 c = *cp;
switch (c) { switch (c) {
case '\n': case '\n':
@ -609,7 +609,7 @@ static size_t __process_echoes(struct tty_struct *tty)
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
int space, old_space; int space, old_space;
size_t tail; size_t tail;
unsigned char c; u8 c;
old_space = space = tty_write_room(tty); old_space = space = tty_write_room(tty);
@ -617,7 +617,7 @@ static size_t __process_echoes(struct tty_struct *tty)
while (MASK(ldata->echo_commit) != MASK(tail)) { while (MASK(ldata->echo_commit) != MASK(tail)) {
c = echo_buf(ldata, tail); c = echo_buf(ldata, tail);
if (c == ECHO_OP_START) { if (c == ECHO_OP_START) {
unsigned char op; u8 op;
bool space_left = true; bool space_left = true;
/* /*
@ -818,7 +818,7 @@ static void flush_echoes(struct tty_struct *tty)
* *
* Add a character or operation byte to the echo buffer. * Add a character or operation byte to the echo buffer.
*/ */
static inline void add_echo_byte(unsigned char c, struct n_tty_data *ldata) static inline void add_echo_byte(u8 c, struct n_tty_data *ldata)
{ {
*echo_buf_addr(ldata, ldata->echo_head) = c; *echo_buf_addr(ldata, ldata->echo_head) = c;
smp_wmb(); /* Matches smp_rmb() in echo_buf(). */ smp_wmb(); /* Matches smp_rmb() in echo_buf(). */
@ -889,7 +889,7 @@ static void echo_erase_tab(unsigned int num_chars, int after_tab,
* *
* This variant does not treat control characters specially. * This variant does not treat control characters specially.
*/ */
static void echo_char_raw(unsigned char c, struct n_tty_data *ldata) static void echo_char_raw(u8 c, struct n_tty_data *ldata)
{ {
if (c == ECHO_OP_START) { if (c == ECHO_OP_START) {
add_echo_byte(ECHO_OP_START, ldata); add_echo_byte(ECHO_OP_START, ldata);
@ -910,7 +910,7 @@ static void echo_char_raw(unsigned char c, struct n_tty_data *ldata)
* This variant tags control characters to be echoed as "^X" (where X is the * This variant tags control characters to be echoed as "^X" (where X is the
* letter representing the control char). * letter representing the control char).
*/ */
static void echo_char(unsigned char c, const struct tty_struct *tty) static void echo_char(u8 c, const struct tty_struct *tty)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
@ -948,7 +948,7 @@ static inline void finish_erasing(struct n_tty_data *ldata)
* Locking: n_tty_receive_buf()/producer path: * Locking: n_tty_receive_buf()/producer path:
* caller holds non-exclusive %termios_rwsem * caller holds non-exclusive %termios_rwsem
*/ */
static void eraser(unsigned char c, const struct tty_struct *tty) static void eraser(u8 c, const struct tty_struct *tty)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
enum { ERASE, WERASE, KILL } kill_type; enum { ERASE, WERASE, KILL } kill_type;
@ -1188,7 +1188,7 @@ static void n_tty_receive_overrun(const struct tty_struct *tty)
* caller holds non-exclusive %termios_rwsem * caller holds non-exclusive %termios_rwsem
*/ */
static void n_tty_receive_parity_error(const struct tty_struct *tty, static void n_tty_receive_parity_error(const struct tty_struct *tty,
unsigned char c) u8 c)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
@ -1206,7 +1206,7 @@ static void n_tty_receive_parity_error(const struct tty_struct *tty,
} }
static void static void
n_tty_receive_signal_char(struct tty_struct *tty, int signal, unsigned char c) n_tty_receive_signal_char(struct tty_struct *tty, int signal, u8 c)
{ {
isig(signal, tty); isig(signal, tty);
if (I_IXON(tty)) if (I_IXON(tty))
@ -1218,7 +1218,7 @@ n_tty_receive_signal_char(struct tty_struct *tty, int signal, unsigned char c)
process_echoes(tty); process_echoes(tty);
} }
static bool n_tty_is_char_flow_ctrl(struct tty_struct *tty, unsigned char c) static bool n_tty_is_char_flow_ctrl(struct tty_struct *tty, u8 c)
{ {
return c == START_CHAR(tty) || c == STOP_CHAR(tty); return c == START_CHAR(tty) || c == STOP_CHAR(tty);
} }
@ -1238,7 +1238,7 @@ static bool n_tty_is_char_flow_ctrl(struct tty_struct *tty, unsigned char c)
* Returns true if @c is consumed as flow-control character, the character * Returns true if @c is consumed as flow-control character, the character
* must not be treated as normal character. * must not be treated as normal character.
*/ */
static bool n_tty_receive_char_flow_ctrl(struct tty_struct *tty, unsigned char c, static bool n_tty_receive_char_flow_ctrl(struct tty_struct *tty, u8 c,
bool lookahead_done) bool lookahead_done)
{ {
if (!n_tty_is_char_flow_ctrl(tty, c)) if (!n_tty_is_char_flow_ctrl(tty, c))
@ -1354,7 +1354,7 @@ static bool n_tty_receive_char_canon(struct tty_struct *tty, u8 c)
return false; return false;
} }
static void n_tty_receive_char_special(struct tty_struct *tty, unsigned char c, static void n_tty_receive_char_special(struct tty_struct *tty, u8 c,
bool lookahead_done) bool lookahead_done)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
@ -1423,7 +1423,7 @@ static void n_tty_receive_char_special(struct tty_struct *tty, unsigned char c,
* caller holds non-exclusive %termios_rwsem * caller holds non-exclusive %termios_rwsem
* publishes canon_head if canonical mode is active * publishes canon_head if canonical mode is active
*/ */
static void n_tty_receive_char(struct tty_struct *tty, unsigned char c) static void n_tty_receive_char(struct tty_struct *tty, u8 c)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
@ -1445,7 +1445,7 @@ static void n_tty_receive_char(struct tty_struct *tty, unsigned char c)
put_tty_queue(c, ldata); put_tty_queue(c, ldata);
} }
static void n_tty_receive_char_closing(struct tty_struct *tty, unsigned char c, static void n_tty_receive_char_closing(struct tty_struct *tty, u8 c,
bool lookahead_done) bool lookahead_done)
{ {
if (I_ISTRIP(tty)) if (I_ISTRIP(tty))
@ -1465,7 +1465,7 @@ static void n_tty_receive_char_closing(struct tty_struct *tty, unsigned char c,
} }
static void static void
n_tty_receive_char_flagged(struct tty_struct *tty, unsigned char c, char flag) n_tty_receive_char_flagged(struct tty_struct *tty, u8 c, u8 flag)
{ {
switch (flag) { switch (flag) {
case TTY_BREAK: case TTY_BREAK:
@ -1479,13 +1479,13 @@ n_tty_receive_char_flagged(struct tty_struct *tty, unsigned char c, char flag)
n_tty_receive_overrun(tty); n_tty_receive_overrun(tty);
break; break;
default: default:
tty_err(tty, "unknown flag %d\n", flag); tty_err(tty, "unknown flag %u\n", flag);
break; break;
} }
} }
static void static void
n_tty_receive_char_lnext(struct tty_struct *tty, unsigned char c, char flag) n_tty_receive_char_lnext(struct tty_struct *tty, u8 c, u8 flag)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
@ -1505,7 +1505,7 @@ static void n_tty_lookahead_flow_ctrl(struct tty_struct *tty, const u8 *cp,
const u8 *fp, size_t count) const u8 *fp, size_t count)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
unsigned char flag = TTY_NORMAL; u8 flag = TTY_NORMAL;
ldata->lookahead_count += count; ldata->lookahead_count += count;
@ -1562,7 +1562,7 @@ static void
n_tty_receive_buf_closing(struct tty_struct *tty, const u8 *cp, const u8 *fp, n_tty_receive_buf_closing(struct tty_struct *tty, const u8 *cp, const u8 *fp,
int count, bool lookahead_done) int count, bool lookahead_done)
{ {
char flag = TTY_NORMAL; u8 flag = TTY_NORMAL;
while (count--) { while (count--) {
if (fp) if (fp)
@ -1955,7 +1955,7 @@ static inline int input_available_p(const struct tty_struct *tty, int poll)
* read_tail published * read_tail published
*/ */
static bool copy_from_read_buf(const struct tty_struct *tty, static bool copy_from_read_buf(const struct tty_struct *tty,
unsigned char **kbp, u8 **kbp,
size_t *nr) size_t *nr)
{ {
@ -1968,7 +1968,7 @@ static bool copy_from_read_buf(const struct tty_struct *tty,
n = min(head - ldata->read_tail, N_TTY_BUF_SIZE - tail); n = min(head - ldata->read_tail, N_TTY_BUF_SIZE - tail);
n = min(*nr, n); n = min(*nr, n);
if (n) { if (n) {
unsigned char *from = read_buf_addr(ldata, tail); u8 *from = read_buf_addr(ldata, tail);
memcpy(*kbp, from, n); memcpy(*kbp, from, n);
is_eof = n == 1 && *from == EOF_CHAR(tty); is_eof = n == 1 && *from == EOF_CHAR(tty);
tty_audit_add_data(tty, from, n); tty_audit_add_data(tty, from, n);
@ -2010,7 +2010,7 @@ static bool copy_from_read_buf(const struct tty_struct *tty,
* read_tail published * read_tail published
*/ */
static bool canon_copy_from_read_buf(const struct tty_struct *tty, static bool canon_copy_from_read_buf(const struct tty_struct *tty,
unsigned char **kbp, u8 **kbp,
size_t *nr) size_t *nr)
{ {
struct n_tty_data *ldata = tty->disc_data; struct n_tty_data *ldata = tty->disc_data;
@ -2229,7 +2229,7 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf,
while (nr) { while (nr) {
/* First test for status change. */ /* First test for status change. */
if (packet && tty->link->ctrl.pktstatus) { if (packet && tty->link->ctrl.pktstatus) {
unsigned char cs; u8 cs;
if (kb != kbuf) if (kb != kbuf)
break; break;
spin_lock_irq(&tty->link->ctrl.lock); spin_lock_irq(&tty->link->ctrl.lock);