Re: [PATCH 2/2] irq: Add function pointer table for generic-chip

From: Nobuhiro Iwamatsu
Date: Wed Oct 19 2011 - 23:45:18 EST


Hi,

2011/10/17 Thomas Gleixner <tglx@xxxxxxxxxxxxx>:
> On Mon, 17 Oct 2011, Nobuhiro Iwamatsu wrote:
>
>> This adds the function table to access it with function pointer
>> by some functions providedd in generic-chip.
>> The driver who uses the function offered in generic-chip can use
>> this via this function table.
>>
>> -/* Generic chip callback functions */
>> -void irq_gc_noop(struct irq_data *d);
>> -void irq_gc_mask_disable_reg(struct irq_data *d);
>> -void irq_gc_mask_set_bit(struct irq_data *d);
>> -void irq_gc_mask_clr_bit(struct irq_data *d);
>> -void irq_gc_unmask_enable_reg(struct irq_data *d);
>> -void irq_gc_ack_set_bit(struct irq_data *d);
>> -void irq_gc_ack_clr_bit(struct irq_data *d);
>> -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d);
>> -void irq_gc_eoi(struct irq_data *d);
>> -int irq_gc_set_wake(struct irq_data *d, unsigned int on);
>
> This breaks the world and some more. We have code which references
> those functions directly.
>
>> +             gc->functions.gc_noop = irq_gc_noop;
>> +             gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg;
>> +             gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit;
>> +             gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit;
>> +             gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg;
>> +             gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit;
>> +             gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit;
>> +             gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack;
>> +             gc->functions.gc_eoi = irq_gc_eoi;
>> +             gc->functions.gc_set_wake = irq_gc_set_wake;
>
> Why do you want to add that to every instance of generic irq chip?
> What I asked for is:
>
> struct bla {
>       .noop = irq_gc_noop,
>       ...
> };
> EXPORT_SYMBOL_GPL(bla);
>
> Now when we have this, we can run a coccinelle script over the tree
> and convert all current users to use bla.fun instead of the direct
> functions and then make those static.
>

OK, I misled about your point.
You do not make many symbols by EXPORT_SYMBOL,
genetic_chip makes the object with the function pointer, and you
suggest that each
driver uses the function defined in the object.
Is it correct?

I created new patch. could you check this?

-----