debuggers.hg

view xen/common/softirq.c @ 3515:d331c6994d28

bitkeeper revision 1.1159.223.12 (41f14d3cE4GADmEAEr6XE9nXX4dyGw)

Common-code cleanups. Moved arch-specific code out into arch/x86
and asm-x86.
author kaf24@scramble.cl.cam.ac.uk
date Fri Jan 21 18:43:08 2005 +0000 (2005-01-21)
parents f65b65977b19
children 46c14b1a4351 0dc3b8b8c298
line source
1 /******************************************************************************
2 * common/softirq.c
3 *
4 * Softirqs in Xen are only executed in an outermost activation (e.g., never
5 * within an interrupt activation). This simplifies some things and generally
6 * seems a good thing.
7 *
8 * Copyright (c) 2003, K A Fraser
9 * Copyright (c) 1992, Linus Torvalds
10 */
12 #include <xen/config.h>
13 #include <xen/init.h>
14 #include <xen/mm.h>
15 #include <xen/sched.h>
16 #include <xen/softirq.h>
18 #ifndef __ARCH_IRQ_STAT
19 irq_cpustat_t irq_stat[NR_CPUS];
20 #endif
22 static softirq_handler softirq_handlers[NR_SOFTIRQS];
24 asmlinkage void do_softirq()
25 {
26 unsigned int i, pending, cpu = smp_processor_id();
28 pending = softirq_pending(cpu);
29 ASSERT(pending != 0);
31 do {
32 i = find_first_set_bit(pending);
33 clear_bit(i, &softirq_pending(cpu));
34 (*softirq_handlers[i])();
35 } while ( (pending = softirq_pending(cpu)) != 0 );
36 }
38 void open_softirq(int nr, softirq_handler handler)
39 {
40 softirq_handlers[nr] = handler;
41 }