Re: [PATCH] add dispatch_i8259_irq() to i8259.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 18 Dec 2002, Jun Sun wrote:

> > do_IRQ(poll_8259A_irq(), regs);
> 
> I actually don't like the new semantic.  The main drawback is that we can't
> dispatch a 8259A interrupt from assemably code, which is often needed.

 You can't do that with your original code either, unless you arrange a
call to your dispatch_i8259_irq() C function.  This can still be done with
a trivial wrapper like:

asmlinkage void foo_dispatch_i8259_irq(struct pt_regs *regs)
{
	do_IRQ(poll_8259A_irq(), regs);
}

which results in code like you proposed.

> What is wrong with original way of dispatching?  The general interrupt 
> dispatching flow is that you chase the routing path until you find the final
> source and do a do_IRQ().  That seems fine with i8259A case here.

 It does too much and is therefore useful for a single specific case only. 
I focused on handling the chip only and the resulting function may be used
however desired, including your specific case.  Not all platforms need to
want to call do_IRQ() immediately after getting an IRQ number, including
code already in existence. 

> While there is certain urge to create asm/i8259a.h file, if in the end all there
> is two function declarations (i8259_init() and dispatch_i8259_irq()), it is not
> really worth it.

 The header issue is orthogonal -- for lone init_i8259_irqs() it should
exist.  Otherwise you'll be doomed upon the next interface change.

  Maciej

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux