Re: [PATCH] iio: adc: ad7768-1: Fix the right interrupt interfacecalls

From: Lars-Peter Clausen
Date: Wed May 12 2021 - 05:22:04 EST


On 5/12/21 10:39 AM, tangbin wrote:
Hi Lars-Peter:

        Thanks for you reply!

Hi,

Thanks for the patch. Aren't those two expressions equivalent? Are you seeing an issue with the current code? If so can you include that in the commit message?

- Lars


       When submitting this patch, I actually thought about it for a while, but finally decided to submit it, my reason is as follows:

        In numerical data of address, &ad7768_interrupt is equal to ad7768_interrupt, and the compilation can pass. But I think they are not the same, ad7768_interrupt is the first

address of the function, and its type is irqreturn_t, &ad7768_interrupt represents the address of an object that points to the function ad7768_interrupt().

        So I think they are not the same, For previous experience with devm_request_irq(), I send this patch. If I'm wrong, I'm sorry to bother you.

Have a look at https://stackoverflow.com/questions/6893285/why-do-function-pointer-definitions-work-with-any-number-of-ampersands-or-as for some background on this.

You can also easily verify that they are the same with a simple test program

static void foo(void) {}

int main(void) {
    printf("%p %p %d\n", foo, &foo, foo == &foo);
}