From: Chen Gang <gang.chen@asianux.com>
To: Frederic Weisbecker <fweisbec@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Sedat Dilek <sedat.dilek@gmail.com>,
Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH] kernel/softirq.c: delete 'while' looping to improve a little performance and beautify code
Date: Sun, 09 Jun 2013 20:30:19 +0800 [thread overview]
Message-ID: <51B4755B.4020205@asianux.com> (raw)
After finish the internal 'while', need not test TASKLET_STATE_SCHED
again, so looping back to outside 'while' is only for set_bit().
When use 'if' and set_bit() instead of 'while', it will save at least
one running conditional instruction, and also will be clearer for readers
(although the binary size will be a little bigger).
The related patch is "1da177e Linux-2.6.12-rc2"
Signed-off-by: Chen Gang <gang.chen@asianux.com>
---
kernel/softirq.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/kernel/softirq.c b/kernel/softirq.c
index a5f8836..52da25f 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -540,10 +540,11 @@ void tasklet_kill(struct tasklet_struct *t)
if (in_interrupt())
printk("Attempt to kill tasklet from interrupt\n");
- while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
+ if (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
do {
yield();
} while (test_bit(TASKLET_STATE_SCHED, &t->state));
+ set_bit(TASKLET_STATE_SCHED, &t->state);
}
tasklet_unlock_wait(t);
clear_bit(TASKLET_STATE_SCHED, &t->state);
--
1.7.7.6
next reply other threads:[~2013-06-09 12:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-09 12:30 Chen Gang [this message]
2013-06-10 12:25 ` [PATCH] kernel/softirq.c: delete 'while' looping to improve a little performance and beautify code Paul E. McKenney
2013-06-13 2:08 ` Chen Gang
2013-06-10 14:15 ` Thomas Gleixner
2013-06-13 2:10 ` Chen Gang
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=51B4755B.4020205@asianux.com \
--to=gang.chen@asianux.com \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=sedat.dilek@gmail.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.