diff options
author | kaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk> | 2004-11-01 17:51:58 +0000 |
---|---|---|
committer | kaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk> | 2004-11-01 17:51:58 +0000 |
commit | 8ad6d3829b5372c4cfa1962273ee5211982b2f17 (patch) | |
tree | a6e7ea260427af9b26b691efd8bfaa5d3e4b4171 /xen/common/softirq.c | |
parent | 28cb0115df3b6d2a4558d1323bf1be1407472548 (diff) | |
download | xen-8ad6d3829b5372c4cfa1962273ee5211982b2f17.tar.gz xen-8ad6d3829b5372c4cfa1962273ee5211982b2f17.tar.bz2 xen-8ad6d3829b5372c4cfa1962273ee5211982b2f17.zip |
bitkeeper revision 1.1159.1.326 (418677bearNwfvI3AaLxMG1OKQfO9A)
Better do_softirq(). We know that there is at least one softirq pending
on entry, so we cget rid of the initial test for zero.
Diffstat (limited to 'xen/common/softirq.c')
-rw-r--r-- | xen/common/softirq.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/xen/common/softirq.c b/xen/common/softirq.c index 166a8163c1..7c7e6cc636 100644 --- a/xen/common/softirq.c +++ b/xen/common/softirq.c @@ -23,12 +23,14 @@ asmlinkage void do_softirq() { unsigned int i, pending, cpu = smp_processor_id(); - while ( (pending = softirq_pending(cpu)) != 0 ) - { + pending = softirq_pending(cpu); + ASSERT(pending != 0); + + do { i = find_first_set_bit(pending); clear_bit(i, &softirq_pending(cpu)); (*softirq_handlers[i])(); - } + } while ( (pending = softirq_pending(cpu)) != 0 ); } void open_softirq(int nr, softirq_handler handler) |