Skip to content

Commit

Permalink
IRQ: Typedef the IRQ flow handler function type
Browse files Browse the repository at this point in the history
Typedef the IRQ flow handler function type.

Signed-Off-By: David Howells <dhowells@redhat.com>
(cherry picked from 8e973fbdf5716b93a0a8c0365be33a31ca0fa351 commit)
  • Loading branch information
David Howells authored and David Howells committed Oct 5, 2006
1 parent d223a60 commit 57a58a9
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 27 deletions.
30 changes: 12 additions & 18 deletions include/linux/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@
#include <asm/irq.h>
#include <asm/ptrace.h>

struct irq_desc;
typedef void fastcall (*irq_flow_handler_t)(unsigned int irq,
struct irq_desc *desc,
struct pt_regs *regs);


/*
* IRQ line status.
*
Expand Down Expand Up @@ -139,9 +145,7 @@ struct irq_chip {
* Pad this out to 32 bytes for cache and indexing reasons.
*/
struct irq_desc {
void fastcall (*handle_irq)(unsigned int irq,
struct irq_desc *desc,
struct pt_regs *regs);
irq_flow_handler_t handle_irq;
struct irq_chip *chip;
void *handler_data;
void *chip_data;
Expand Down Expand Up @@ -281,9 +285,7 @@ handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs);
* Get a descriptive string for the highlevel handler, for
* /proc/interrupts output:
*/
extern const char *
handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *));
extern const char *handle_irq_name(irq_flow_handler_t handle);

/*
* Monolithic do_IRQ implementation.
Expand Down Expand Up @@ -335,22 +337,15 @@ extern struct irq_chip dummy_irq_chip;

extern void
set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
void fastcall (*handle)(unsigned int,
struct irq_desc *,
struct pt_regs *));
irq_flow_handler_t handle);
extern void
__set_irq_handler(unsigned int irq,
void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *),
int is_chained);
__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained);

/*
* Set a highlevel flow handler for a given IRQ:
*/
static inline void
set_irq_handler(unsigned int irq,
void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *))
set_irq_handler(unsigned int irq, irq_flow_handler_t handle)
{
__set_irq_handler(irq, handle, 0);
}
Expand All @@ -362,8 +357,7 @@ set_irq_handler(unsigned int irq,
*/
static inline void
set_irq_chained_handler(unsigned int irq,
void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *))
irq_flow_handler_t handle)
{
__set_irq_handler(irq, handle, 1);
}
Expand Down
12 changes: 3 additions & 9 deletions kernel/irq/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -505,10 +505,7 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
#endif /* CONFIG_SMP */

void
__set_irq_handler(unsigned int irq,
void fastcall (*handle)(unsigned int, irq_desc_t *,
struct pt_regs *),
int is_chained)
__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained)
{
struct irq_desc *desc;
unsigned long flags;
Expand Down Expand Up @@ -561,9 +558,7 @@ __set_irq_handler(unsigned int irq,

void
set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
void fastcall (*handle)(unsigned int,
struct irq_desc *,
struct pt_regs *))
irq_flow_handler_t handle)
{
set_irq_chip(irq, chip);
__set_irq_handler(irq, handle, 0);
Expand All @@ -574,8 +569,7 @@ set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
* /proc/interrupts output:
*/
const char *
handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *))
handle_irq_name(irq_flow_handler_t handle)
{
if (handle == handle_level_irq)
return "level ";
Expand Down

0 comments on commit 57a58a9

Please sign in to comment.