public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kernel/softirq.c: delete 'while' looping to improve a little performance and beautify code
@ 2013-06-09 12:30 Chen Gang
  2013-06-10 12:25 ` Paul E. McKenney
  2013-06-10 14:15 ` Thomas Gleixner
  0 siblings, 2 replies; 5+ messages in thread
From: Chen Gang @ 2013-06-09 12:30 UTC (permalink / raw)
  To: Frederic Weisbecker, Thomas Gleixner, Sedat Dilek, Paul McKenney
  Cc: Andrew Morton, Linus Torvalds, linux-kernel@vger.kernel.org


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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-06-13  2:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-09 12:30 [PATCH] kernel/softirq.c: delete 'while' looping to improve a little performance and beautify code Chen Gang
2013-06-10 12:25 ` Paul E. McKenney
2013-06-13  2:08   ` Chen Gang
2013-06-10 14:15 ` Thomas Gleixner
2013-06-13  2:10   ` Chen Gang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox