Re: IIO_BUFFER - IIO_TRIGGERED_BUFFER circular dependency

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

 



On Fri, Mar 01, 2013 at 04:04:29PM +0100, Lars-Peter Clausen wrote:
> On 03/01/2013 03:41 PM, Guenter Roeck wrote:
> > On Fri, Mar 01, 2013 at 02:38:30PM +0100, Lars-Peter Clausen wrote:
> >> On 03/01/2013 05:32 AM, Guenter Roeck wrote:
> >>> Hi all,
> >>>
> >>> IIO_TRIGGERED_BUFFER depends on IIO_BUFFER because of:
> >>>
> >>> drivers/iio/industrialio-triggered-buffer.c:20:16: error:
> >>> ‘iio_sw_buffer_preenable’ undeclared here (not in a function)
> >>>
> >>> On the other side, it is often selected as follows.
> >>>
> >>> 	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
> >>>
> >>> For that reason, selecting IIO_BUFFER in the IIO_TRIGGERED_BUFFER declaration
> >>> results in a circular dependency. Sometimes the "if (IIO_BUFFER)" when selecting
> >>> IIO_TRIGGERED_BUFFER is missing, though, which can result in the compile error.
> >>>
> >>> What is the proper solution ?
> >>> - Add "if (IIO_BUFFER)" whenever IIO_TRIGGERED_BUFFER is selected
> >>> or
> >>> - Remove "if (IIO_BUFFER)" from IIO_TRIGGERED_BUFFER selection and add "select
> >>>   IIO_BUFFER" to the IIO_TRIGGERED_BUFFER declaration
> >>>
> >>> I would prefer the latter to solve the problem for good.
> >>
> >> Hi,
> >>
> >> This is a bit tricky, some drivers have optional buffer support, so they
> >> only select the helper module if buffer support is enabled, since they don't
> >> use the helper module if buffer support is disabled. Other driver though
> >> always want buffer support so they select the helper module unconditionally.
> >> So far it was the responsibility of the driver's Kconfig entry to make sure
> >> that if it selects IIO_TRIGGERED_BUFFER it needs to make sure that
> >> IIO_BUFFER is also selected. As far as I can see all drivers do this
> >> currently. Which one breaks things for you?
> >>
> > It is a randconfig thing, so it breaks in some of my nightly randconfig builds,
> > and it has also been reported as build failure in the official builds. I can dig
> > out some affected configurations and send it to you if you like.
> 
> Yes that would be great, thanks.
> 
> > but the gist of
> > it is that IIO_TRIGGERED_BUFFER can be selected without IIO_BUFFER, but depends
> > on it. That just isn't correct. Of course, the other option might be to make
> > IIO_TRIGGERED_BUFFER dependent on IIO_BUFFER. Would that be acceptable ?
> > 
> 
> That won't work, you can overwrite 'depends on' by selecting the symbol.
> 
> But the reason why there is a cyclic dependency is not because of the
> 'select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)' but rather because
> IIO_TRIGGERED_BUFFER is in an 'if IIO_BUFFER' section. Moving it out there
> fixes the cyclic dependency error. But creates a recursive dependency warning.
> 
> I think we could avoid this warning by introducing a new symbol. E.g.
> IIO_BUFFER_INTERN (bad name). IIO_BUFFER_INTERN won't be user selectable. It
> will be selected by IIO_BUFFER and IIO_TRIGGERED_BUFFER and if it is
> selected buffer support is built. E.g. something like this:
> 
Agreed, that would also solve the need of selecting IIO_BUFFER as well if
IIO_TRIGGERED_BUFFER is selected. For now I solved the problem with the two
patches I submitted, so assuming those are accepted I guess this one or
something similar can wait for -next.

Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux