Messages in this thread | | | Date | Thu, 13 Nov 2008 12:06:49 -0800 | From | Yinghai Lu <> | Subject | Re: [PATCH] sparse_irq aka dyn_irq v13 |
| |
Ingo Molnar wrote:
> it still looks ugly to me: couldnt we make it completely #ifdef-free, > by just adding the new API variants? > > i.e. leave these present unconditionally: > >> extern void hpet_msi_unmask(unsigned int irq); >> extern void hpet_msi_mask(unsigned int irq); > > and just _add_ these (unconditionally): > >> +extern void hpet_msi_unmask_desc(unsigned int irq, struct irq_desc **descp); >> +extern void hpet_msi_mask_desc(unsigned int irq, struct irq_desc **descp); > > that gives us zero #ifdefs and much nicer to read patches. Am i > missing something why this isnt possible?
in io_apic.c
struct irq_chip hpet_msi_type = { .name = "HPET_MSI", .unmask = hpet_msi_unmask, .mask = hpet_msi_mask, .ack = ack_apic_edge, #ifdef CONFIG_SMP .set_affinity = hpet_msi_set_affinity, #endif .retrigger = ioapic_retrigger_irq, };
so those ack, mask, unmak, eoi field will have different function prototype..when sparseirq is enabled or not.
if you want to remove those #ifdef, we need to go over all irq_chip definition to make all those field to take struct irq_desc *desc (or **descp) instead of unsigned int irq.
actually we only need to pass desc struct instead of irq, because we can get desc->irq in case.
YH
| |