-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
genirq: Distangle kernel/irq/handle.c
kernel/irq/handle.c has become a dumpground for random code in random order. Split out the irq descriptor management and the dummy irq_chip implementation into separate files. Cleanup the include maze while at it. No code change. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Ingo Molnar <mingo@elte.hu>
- Loading branch information
Thomas Gleixner
committed
Oct 12, 2010
1 parent
f303a6d
commit 3795de2
Showing
4 changed files
with
340 additions
and
332 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/* | ||
* Copyright (C) 1992, 1998-2006 Linus Torvalds, Ingo Molnar | ||
* Copyright (C) 2005-2006, Thomas Gleixner, Russell King | ||
* | ||
* This file contains the dummy interrupt chip implementation | ||
*/ | ||
#include <linux/interrupt.h> | ||
#include <linux/irq.h> | ||
|
||
#include "internals.h" | ||
|
||
/* | ||
* What should we do if we get a hw irq event on an illegal vector? | ||
* Each architecture has to answer this themself. | ||
*/ | ||
static void ack_bad(struct irq_data *data) | ||
{ | ||
struct irq_desc *desc = irq_data_to_desc(data); | ||
|
||
print_irq_desc(data->irq, desc); | ||
ack_bad_irq(data->irq); | ||
} | ||
|
||
/* | ||
* NOP functions | ||
*/ | ||
static void noop(struct irq_data *data) { } | ||
|
||
static unsigned int noop_ret(struct irq_data *data) | ||
{ | ||
return 0; | ||
} | ||
|
||
#ifndef CONFIG_GENERIC_HARDIRQS_NO_CRUFT | ||
static void compat_noop(unsigned int irq) { } | ||
#define END_INIT .end = compat_noop | ||
#else | ||
#define END_INIT | ||
#endif | ||
|
||
/* | ||
* Generic no controller implementation | ||
*/ | ||
struct irq_chip no_irq_chip = { | ||
.name = "none", | ||
.irq_startup = noop_ret, | ||
.irq_shutdown = noop, | ||
.irq_enable = noop, | ||
.irq_disable = noop, | ||
.irq_ack = ack_bad, | ||
END_INIT | ||
}; | ||
|
||
/* | ||
* Generic dummy implementation which can be used for | ||
* real dumb interrupt sources | ||
*/ | ||
struct irq_chip dummy_irq_chip = { | ||
.name = "dummy", | ||
.irq_startup = noop_ret, | ||
.irq_shutdown = noop, | ||
.irq_enable = noop, | ||
.irq_disable = noop, | ||
.irq_ack = noop, | ||
.irq_mask = noop, | ||
.irq_unmask = noop, | ||
END_INIT | ||
}; |
Oops, something went wrong.