From: akpm@linux-foundation.org
To: mm-commits@vger.kernel.org
Cc: joe@skyrush.com, alan@lxorguk.ukuu.org.uk
Subject: + tty-minor-code-efficiency-and-style-cleanup.patch added to -mm tree
Date: Tue, 26 Aug 2008 14:07:18 -0700 [thread overview]
Message-ID: <200808262107.m7QL7Jw5027729@imap1.linux-foundation.org> (raw)
The patch titled
tty: minor code efficiency and style cleanup
has been added to the -mm tree. Its filename is
tty-minor-code-efficiency-and-style-cleanup.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/SubmitChecklist when testing your code ***
See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
out what to do about this
The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/
------------------------------------------------------
Subject: tty: minor code efficiency and style cleanup
From: Joe Peterson <joe@skyrush.com>
No behavior changes.
Signed-off-by: Joe Peterson <joe@skyrush.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
drivers/char/n_tty.c | 63 ++++++++++++++++++++---------------------
1 file changed, 32 insertions(+), 31 deletions(-)
diff -puN drivers/char/n_tty.c~tty-minor-code-efficiency-and-style-cleanup drivers/char/n_tty.c
--- a/drivers/char/n_tty.c~tty-minor-code-efficiency-and-style-cleanup
+++ a/drivers/char/n_tty.c
@@ -446,8 +446,6 @@ static ssize_t process_output_block(stru
}
}
break_out:
- //if (tty->ops->flush_chars)
- // tty->ops->flush_chars(tty);
i = tty->ops->write(tty, buf, i);
unlock_kernel();
@@ -455,11 +453,11 @@ break_out:
}
/**
- * process_echoes - write pending echoed characters
+ * process_echoes - write pending echo characters
* @tty: terminal device
*
- * Write echoed (and other ldisc-generated) characters to the
- * tty that have been stored previously in the echo buffer.
+ * Write previously buffered echo (and other ldisc-generated)
+ * characters to the tty.
*
* Characters generated by the ldisc (including echoes) need to
* be buffered because the driver's write buffer can fill during
@@ -488,11 +486,11 @@ break_out:
static void process_echoes(struct tty_struct *tty)
{
- int space, num, nr;
+ int space, nr;
unsigned char c;
unsigned char *cp, *buf_end;
- if (!(num = tty->echo_cnt))
+ if (!tty->echo_cnt)
return;
lock_kernel();
@@ -501,7 +499,7 @@ static void process_echoes(struct tty_st
buf_end = tty->echo_buf + N_TTY_BUF_SIZE;
cp = tty->echo_buf + tty->echo_pos;
- nr = num;
+ nr = tty->echo_cnt;
while (nr > 0) {
c = *cp;
if (c == ECHO_OP_START) {
@@ -635,14 +633,15 @@ static void process_echoes(struct tty_st
cp -= N_TTY_BUF_SIZE;
}
- tty->echo_cnt = nr;
- if (tty->echo_cnt == 0) {
+ if (nr == 0) {
tty->echo_pos = 0;
+ tty->echo_cnt = 0;
tty->echo_overrun = 0;
} else {
- int num_processed = (num - nr);
+ int num_processed = tty->echo_cnt - nr;
tty->echo_pos += num_processed;
- tty->echo_pos &= (N_TTY_BUF_SIZE - 1);
+ tty->echo_pos &= N_TTY_BUF_SIZE - 1;
+ tty->echo_cnt = nr;
if (num_processed > 0)
tty->echo_overrun = 0;
}
@@ -663,42 +662,43 @@ static void process_echoes(struct tty_st
static void add_echo_byte(unsigned char c, struct tty_struct *tty)
{
- int add_char_pos;
+ int new_byte_pos;
unsigned long flags;
spin_lock_irqsave(&tty->echo_lock, flags);
- add_char_pos = tty->echo_pos + tty->echo_cnt;
- if (add_char_pos >= N_TTY_BUF_SIZE)
- add_char_pos -= N_TTY_BUF_SIZE;
-
- /* Detect overrun */
if (tty->echo_cnt == N_TTY_BUF_SIZE) {
+ /* Circular buffer is already at capacity */
+ new_byte_pos = tty->echo_pos;
+
/*
- * If the start position pointer needs to be advanced
- * due to running out of buffer space, be sure it is
- * done in such a way as to remove whole
- * operation byte groups.
+ * Since the buffer start position needs to be advanced,
+ * be sure to step by a whole operation byte group.
*/
- if (*(tty->echo_buf +
- (tty->echo_pos & (N_TTY_BUF_SIZE - 1))) == ECHO_OP_START)
+ if (tty->echo_buf[tty->echo_pos] == ECHO_OP_START)
{
- if (*(tty->echo_buf +
- ((tty->echo_pos + 1) & (N_TTY_BUF_SIZE - 1))) == ECHO_OP_TAB_ERASE) {
+ if (tty->echo_buf[(tty->echo_pos + 1) &
+ (N_TTY_BUF_SIZE - 1)] ==
+ ECHO_OP_TAB_ERASE) {
tty->echo_pos += 4;
tty->echo_cnt -= 3;
} else {
tty->echo_pos += 2;
tty->echo_cnt -= 1;
}
- } else
+ } else {
tty->echo_pos++;
- tty->echo_pos &= (N_TTY_BUF_SIZE - 1);
+ }
+ tty->echo_pos &= N_TTY_BUF_SIZE - 1;
+
tty->echo_overrun = 1;
- } else
+ } else {
+ new_byte_pos = tty->echo_pos + tty->echo_cnt;
+ new_byte_pos &= N_TTY_BUF_SIZE - 1;
tty->echo_cnt++;
+ }
- tty->echo_buf[add_char_pos] = c;
+ tty->echo_buf[new_byte_pos] = c;
spin_unlock_irqrestore(&tty->echo_lock, flags);
}
@@ -762,8 +762,9 @@ static void echo_char_raw(unsigned char
if (c == ECHO_OP_START) {
add_echo_byte(ECHO_OP_START, tty);
add_echo_byte(ECHO_OP_START, tty);
- } else
+ } else {
add_echo_byte(c, tty);
+ }
}
/**
_
Patches currently in -mm which might be from joe@skyrush.com are
tty-fix-loss-of-echoed-characters.patch
tty-minor-code-efficiency-and-style-cleanup.patch
reply other threads:[~2008-08-26 21:07 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200808262107.m7QL7Jw5027729@imap1.linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=joe@skyrush.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mm-commits@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox