Skip to content

Commit

Permalink
[PATCH] adjust handle_IRR_event() return type
Browse files Browse the repository at this point in the history
Correct the return type of handle_IRQ_event() (inconsistency noticed during
Xen development), and remove redundant declarations.  The return type
adjustment required breaking out the definition of irqreturn_t into a
separate header, in order to satisfy current include order dependencies.

Signed-off-by: Jan Beulich <[email protected]>

Cc: Richard Henderson <[email protected]>
Cc: Ivan Kokshaysky <[email protected]>
Cc: Russell King <[email protected]>
Cc: Ian Molton <[email protected]>
Cc: Mikael Starvik <[email protected]>
Cc: Yoshinori Sato <[email protected]>
Cc: Hirokazu Takata <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: William Lee Irwin III <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Miles Bader <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Roman Zippel <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Jan Beulich authored and Linus Torvalds committed Jun 23, 2006
1 parent a5d6839 commit 908dcec
Show file tree
Hide file tree
Showing 13 changed files with 31 additions and 57 deletions.
4 changes: 0 additions & 4 deletions include/asm-alpha/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,4 @@ extern void enable_irq(unsigned int);
struct pt_regs;
extern void (*perf_irq)(unsigned long, struct pt_regs *);

struct irqaction;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);


#endif /* _ALPHA_IRQ_H */
4 changes: 0 additions & 4 deletions include/asm-arm/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,6 @@ void disable_irq_wake(unsigned int irq);
void enable_irq_wake(unsigned int irq);
int setup_irq(unsigned int, struct irqaction *);

struct irqaction;
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

extern void migrate_irqs(void);
#endif

4 changes: 0 additions & 4 deletions include/asm-arm26/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,5 @@ extern void enable_irq(unsigned int);

int set_irq_type(unsigned int irq, unsigned int type);

int setup_irq(unsigned int, struct irqaction *);
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif

4 changes: 0 additions & 4 deletions include/asm-h8300/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,4 @@ extern void enable_irq(unsigned int);
extern void disable_irq(unsigned int);
#define disable_irq_nosync(x) disable_irq(x)

struct irqaction;
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif /* _H8300_IRQ_H_ */
4 changes: 0 additions & 4 deletions include/asm-m68k/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,4 @@ extern volatile unsigned int num_spurious;
*/
extern irq_node_t *new_irq_node(void);

struct irqaction;
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif /* _M68K_IRQ_H_ */
4 changes: 0 additions & 4 deletions include/asm-m68knommu/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,4 @@ extern void (*mach_disable_irq)(unsigned int);
#define disable_irq(x) do { } while (0)
#define disable_irq_nosync(x) disable_irq(x)

struct irqaction;
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif /* _M68K_IRQ_H_ */
4 changes: 0 additions & 4 deletions include/asm-s390/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@ enum interruption_class {

#define touch_nmi_watchdog() do { } while(0)

struct irqaction;
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif /* __KERNEL__ */
#endif

4 changes: 0 additions & 4 deletions include/asm-sparc/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,4 @@ extern struct sun4m_intregs *sun4m_interrupts;
#define SUN4M_INT_SBUS(x) (1 << (x+7))
#define SUN4M_INT_VME(x) (1 << (x))

struct irqaction;
struct pt_regs;
int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif
2 changes: 0 additions & 2 deletions include/asm-v850/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,6 @@ extern void disable_irq (unsigned int irq);
/* Disable an irq without waiting. */
extern void disable_irq_nosync (unsigned int irq);

extern int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);

#endif /* !__ASSEMBLY__ */

#endif /* __V850_IRQ_H__ */
21 changes: 1 addition & 20 deletions include/linux/interrupt.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,13 @@
#include <linux/bitops.h>
#include <linux/preempt.h>
#include <linux/cpumask.h>
#include <linux/irqreturn.h>
#include <linux/hardirq.h>
#include <linux/sched.h>
#include <asm/atomic.h>
#include <asm/ptrace.h>
#include <asm/system.h>

/*
* For 2.4.x compatibility, 2.4.x can use
*
* typedef void irqreturn_t;
* #define IRQ_NONE
* #define IRQ_HANDLED
* #define IRQ_RETVAL(x)
*
* To mix old-style and new-style irq handler returns.
*
* IRQ_NONE means we didn't handle it.
* IRQ_HANDLED means that we did have a valid interrupt and handled it.
* IRQ_RETVAL(x) selects on the two depending on x being non-zero (for handled)
*/
typedef int irqreturn_t;

#define IRQ_NONE (0)
#define IRQ_HANDLED (1)
#define IRQ_RETVAL(x) ((x) != 0)

struct irqaction {
irqreturn_t (*handler)(int, void *, struct pt_regs *);
unsigned long flags;
Expand Down
3 changes: 2 additions & 1 deletion include/linux/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <linux/cache.h>
#include <linux/spinlock.h>
#include <linux/cpumask.h>
#include <linux/irqreturn.h>

#include <asm/irq.h>
#include <asm/ptrace.h>
Expand Down Expand Up @@ -175,7 +176,7 @@ static inline void set_balance_irq_affinity(unsigned int irq, cpumask_t mask)
extern int no_irq_affinity;
extern int noirqdebug_setup(char *str);

extern fastcall int handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
extern fastcall irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
struct irqaction *action);
extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs);
extern void note_interrupt(unsigned int irq, irq_desc_t *desc,
Expand Down
25 changes: 25 additions & 0 deletions include/linux/irqreturn.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* irqreturn.h */
#ifndef _LINUX_IRQRETURN_H
#define _LINUX_IRQRETURN_H

/*
* For 2.4.x compatibility, 2.4.x can use
*
* typedef void irqreturn_t;
* #define IRQ_NONE
* #define IRQ_HANDLED
* #define IRQ_RETVAL(x)
*
* To mix old-style and new-style irq handler returns.
*
* IRQ_NONE means we didn't handle it.
* IRQ_HANDLED means that we did have a valid interrupt and handled it.
* IRQ_RETVAL(x) selects on the two depending on x being non-zero (for handled)
*/
typedef int irqreturn_t;

#define IRQ_NONE (0)
#define IRQ_HANDLED (1)
#define IRQ_RETVAL(x) ((x) != 0)

#endif
5 changes: 3 additions & 2 deletions kernel/irq/handle.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,11 @@ irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs)
/*
* Have got an event to handle:
*/
fastcall int handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
fastcall irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
struct irqaction *action)
{
int ret, retval = 0, status = 0;
irqreturn_t ret, retval = IRQ_NONE;
unsigned int status = 0;

if (!(action->flags & SA_INTERRUPT))
local_irq_enable();
Expand Down

0 comments on commit 908dcec

Please sign in to comment.