Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 31085
b: refs/heads/master
c: 47c2a3a
h: refs/heads/master
i:
  31083: b4d3bd5
v: v3
  • Loading branch information
Ingo Molnar authored and Linus Torvalds committed Jun 29, 2006
1 parent e750b97 commit 5fa4f66
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f702d7013c7470284843a6370aaa53b8b75c5a40
refs/heads/master: 47c2a3aa4475d27073dd3c7e183fcc13f495c8f5
6 changes: 4 additions & 2 deletions trunk/include/linux/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ struct proc_dir_entry;
* @mask: mask an interrupt source
* @mask_ack: ack and mask an interrupt source
* @unmask: unmask an interrupt source
* @end: end of interrupt
* @eoi: end of interrupt - chip level
* @end: end of interrupt - flow level
* @set_affinity: set the CPU affinity on SMP machines
* @retrigger: resend an IRQ to the CPU
* @set_type: set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
Expand All @@ -94,6 +95,7 @@ struct irq_chip {
void (*mask)(unsigned int irq);
void (*mask_ack)(unsigned int irq);
void (*unmask)(unsigned int irq);
void (*eoi)(unsigned int irq);

void (*end)(unsigned int irq);
void (*set_affinity)(unsigned int irq, cpumask_t dest);
Expand Down Expand Up @@ -287,7 +289,7 @@ extern int handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
extern void fastcall
handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs);
extern void fastcall
handle_fastack_irq(unsigned int irq, struct irq_desc *desc,
handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc,
struct pt_regs *regs);
extern void fastcall
handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs);
Expand Down
25 changes: 11 additions & 14 deletions trunk/kernel/irq/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,18 +280,18 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
}

/**
* handle_fastack_irq - irq handler for transparent controllers
* handle_fasteoi_irq - irq handler for transparent controllers
* @irq: the interrupt number
* @desc: the interrupt description structure for this irq
* @regs: pointer to a register structure
*
* Only a single callback will be issued to the chip: an ->ack()
* Only a single callback will be issued to the chip: an ->eoi()
* call when the interrupt has been serviced. This enables support
* for modern forms of interrupt handlers, which handle the flow
* details in hardware, transparently.
*/
void fastcall
handle_fastack_irq(unsigned int irq, struct irq_desc *desc,
handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc,
struct pt_regs *regs)
{
unsigned int cpu = smp_processor_id();
Expand Down Expand Up @@ -327,10 +327,7 @@ handle_fastack_irq(unsigned int irq, struct irq_desc *desc,
spin_lock(&desc->lock);
desc->status &= ~IRQ_INPROGRESS;
out:
if (!(desc->status & IRQ_DISABLED))
desc->chip->ack(irq);
else
desc->chip->mask(irq);
desc->chip->eoi(irq);

spin_unlock(&desc->lock);
}
Expand Down Expand Up @@ -510,19 +507,19 @@ handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *,
struct pt_regs *))
{
if (handle == handle_level_irq)
return "level ";
if (handle == handle_fastack_irq)
return "level ";
return "level ";
if (handle == handle_fasteoi_irq)
return "fasteoi";
if (handle == handle_edge_irq)
return "edge ";
return "edge ";
if (handle == handle_simple_irq)
return "simple";
return "simple ";
#ifdef CONFIG_SMP
if (handle == handle_percpu_irq)
return "percpu";
return "percpu ";
#endif
if (handle == handle_bad_irq)
return "bad ";
return "bad ";

return NULL;
}

0 comments on commit 5fa4f66

Please sign in to comment.