diff options
| author | David Howells <dhowells@redhat.com> | 2006-10-05 08:06:34 -0400 |
|---|---|---|
| committer | David Howells <dhowells@warthog.cambridge.redhat.com> | 2006-10-05 08:28:06 -0400 |
| commit | 57a58a9435aef3e0342ba4b2c97e0ddfea6f2c7f (patch) | |
| tree | 35603f6385edf3dcd20e80a2fcf4c66c7cdc34a7 | |
| parent | d223a60106891bfe46febfacf46b20cd8509aaad (diff) | |
IRQ: Typedef the IRQ flow handler function type
Typedef the IRQ flow handler function type.
Signed-Off-By: David Howells <dhowells@redhat.com>
(cherry picked from 8e973fbdf5716b93a0a8c0365be33a31ca0fa351 commit)
| -rw-r--r-- | include/linux/irq.h | 30 | ||||
| -rw-r--r-- | kernel/irq/chip.c | 12 |
2 files changed, 15 insertions, 27 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 6f463606c3..b947d46e4b 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -22,6 +22,12 @@ | |||
| 22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
| 23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
| 24 | 24 | ||
| 25 | struct irq_desc; | ||
| 26 | typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, | ||
| 27 | struct irq_desc *desc, | ||
| 28 | struct pt_regs *regs); | ||
| 29 | |||
| 30 | |||
| 25 | /* | 31 | /* |
| 26 | * IRQ line status. | 32 | * IRQ line status. |
| 27 | * | 33 | * |
| @@ -139,9 +145,7 @@ struct irq_chip { | |||
| 139 | * Pad this out to 32 bytes for cache and indexing reasons. | 145 | * Pad this out to 32 bytes for cache and indexing reasons. |
| 140 | */ | 146 | */ |
| 141 | struct irq_desc { | 147 | struct irq_desc { |
| 142 | void fastcall (*handle_irq)(unsigned int irq, | 148 | irq_flow_handler_t handle_irq; |
| 143 | struct irq_desc *desc, | ||
| 144 | struct pt_regs *regs); | ||
| 145 | struct irq_chip *chip; | 149 | struct irq_chip *chip; |
| 146 | void *handler_data; | 150 | void *handler_data; |
| 147 | void *chip_data; | 151 | void *chip_data; |
| @@ -281,9 +285,7 @@ handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); | |||
| 281 | * Get a descriptive string for the highlevel handler, for | 285 | * Get a descriptive string for the highlevel handler, for |
| 282 | * /proc/interrupts output: | 286 | * /proc/interrupts output: |
| 283 | */ | 287 | */ |
| 284 | extern const char * | 288 | extern const char *handle_irq_name(irq_flow_handler_t handle); |
| 285 | handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *, | ||
| 286 | struct pt_regs *)); | ||
| 287 | 289 | ||
| 288 | /* | 290 | /* |
| 289 | * Monolithic do_IRQ implementation. | 291 | * Monolithic do_IRQ implementation. |
| @@ -335,22 +337,15 @@ extern struct irq_chip dummy_irq_chip; | |||
| 335 | 337 | ||
| 336 | extern void | 338 | extern void |
| 337 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, | 339 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, |
| 338 | void fastcall (*handle)(unsigned int, | 340 | irq_flow_handler_t handle); |
| 339 | struct irq_desc *, | ||
| 340 | struct pt_regs *)); | ||
| 341 | extern void | 341 | extern void |
| 342 | __set_irq_handler(unsigned int irq, | 342 | __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained); |
| 343 | void fastcall (*handle)(unsigned int, struct irq_desc *, | ||
| 344 | struct pt_regs *), | ||
| 345 | int is_chained); | ||
| 346 | 343 | ||
| 347 | /* | 344 | /* |
| 348 | * Set a highlevel flow handler for a given IRQ: | 345 | * Set a highlevel flow handler for a given IRQ: |
| 349 | */ | 346 | */ |
| 350 | static inline void | 347 | static inline void |
| 351 | set_irq_handler(unsigned int irq, | 348 | set_irq_handler(unsigned int irq, irq_flow_handler_t handle) |
| 352 | void fastcall (*handle)(unsigned int, struct irq_desc *, | ||
| 353 | struct pt_regs *)) | ||
| 354 | { | 349 | { |
| 355 | __set_irq_handler(irq, handle, 0); | 350 | __set_irq_handler(irq, handle, 0); |
| 356 | } | 351 | } |
| @@ -362,8 +357,7 @@ set_irq_handler(unsigned int irq, | |||
| 362 | */ | 357 | */ |
| 363 | static inline void | 358 | static inline void |
| 364 | set_irq_chained_handler(unsigned int irq, | 359 | set_irq_chained_handler(unsigned int irq, |
| 365 | void fastcall (*handle)(unsigned int, struct irq_desc *, | 360 | irq_flow_handler_t handle) |
| 366 | struct pt_regs *)) | ||
| 367 | { | 361 | { |
| 368 | __set_irq_handler(irq, handle, 1); | 362 | __set_irq_handler(irq, handle, 1); |
| 369 | } | 363 | } |
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 4cf65f5c6a..53e9dce6c6 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -505,10 +505,7 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
| 505 | #endif /* CONFIG_SMP */ | 505 | #endif /* CONFIG_SMP */ |
| 506 | 506 | ||
| 507 | void | 507 | void |
| 508 | __set_irq_handler(unsigned int irq, | 508 | __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained) |
| 509 | void fastcall (*handle)(unsigned int, irq_desc_t *, | ||
| 510 | struct pt_regs *), | ||
| 511 | int is_chained) | ||
| 512 | { | 509 | { |
| 513 | struct irq_desc *desc; | 510 | struct irq_desc *desc; |
| 514 | unsigned long flags; | 511 | unsigned long flags; |
| @@ -561,9 +558,7 @@ __set_irq_handler(unsigned int irq, | |||
| 561 | 558 | ||
| 562 | void | 559 | void |
| 563 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, | 560 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, |
| 564 | void fastcall (*handle)(unsigned int, | 561 | irq_flow_handler_t handle) |
| 565 | struct irq_desc *, | ||
| 566 | struct pt_regs *)) | ||
| 567 | { | 562 | { |
| 568 | set_irq_chip(irq, chip); | 563 | set_irq_chip(irq, chip); |
| 569 | __set_irq_handler(irq, handle, 0); | 564 | __set_irq_handler(irq, handle, 0); |
| @@ -574,8 +569,7 @@ set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, | |||
| 574 | * /proc/interrupts output: | 569 | * /proc/interrupts output: |
| 575 | */ | 570 | */ |
| 576 | const char * | 571 | const char * |
| 577 | handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *, | 572 | handle_irq_name(irq_flow_handler_t handle) |
| 578 | struct pt_regs *)) | ||
| 579 | { | 573 | { |
| 580 | if (handle == handle_level_irq) | 574 | if (handle == handle_level_irq) |
| 581 | return "level "; | 575 | return "level "; |
