Re: [PATCH][GPIO] Add IRQ edge setter to gpiolib

From: Russell King - ARM Linux
Date: Tue Oct 09 2012 - 08:29:46 EST


On Tue, Oct 09, 2012 at 02:00:34PM +0200, Linus Walleij wrote:
> On Fri, Oct 5, 2012 at 3:16 PM, Drasko DRASKOVIC
> <drasko.draskovic@xxxxxxxxx> wrote:
> > [Me]
> >> If I understand correctly the below more or less exports
> >> struct irq_chip to userspace,
> >> trying to hide it by instead exposing a property of the
> >> containing struct gpio_chip and it worries me.
> >
> > No, it should not.
>
> You are exporting all of the defines from irq.h,
> IRQ_TYPE_NONE, IRQ_TYPE_EDGE_FALLING, etc
> to userspace. These are defined in <linux/irq.h> and that file
> has this comment on top:
>
> /*
> * Please do not include this file in generic code. There is currently
> * no requirement for any architecture to implement anything held
> * within this file.
> *
> * Thanks. --rmk
> */
>
> And that comment is even only about generic *KERNEL* code,
> userspace is way, way more than that.

It is always worth remembering this simple fact:

If you export something from the kernel to userspace, it becomes part
of the kernel's userspace API. Userspace APIs are more stable than
the kernel, some suggest that the userspace API should be maintained
for 10 years. Are you willing to set in stone for years part of the
kernel internal structures without putting a lot of thought into how
you export the data?

If you haven't spent a significant amount of time thinking about how you're
going to export something - and thinking about whether it should even be
exported, then you haven't done enough to outweigh the pain of having it
exported.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/