Re: RFC usecases for simultaneous buffered / sysfs access to data

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

 



Am Montag, 21. November 2011, 09:12:10 schrieb Lars-Peter Clausen:
> On 11/20/2011 01:39 PM, Jonathan Cameron wrote:
> > Hi All,
> > 
> > One nasty issue is kicking around in how to handle in kernel interfaces.
> > 
> > It comes down to what happens when a sysfs read is performed on a device
> > doing buffered capture.  Right now some drivers will look into the
> > buffer, see if the relevant channel is there, and then pull out the
> > latest reading.
> > 
> > Now, with in kernel push interfaces (buffer_cb etc) things are more
> > complex as we have several 'buffers' and it may be that none of them
> > is the traditional IIO buffer.  Thus working out whether the data is
> > available anywhere is a pain.
> > 
> > Clearly the same issue effects other in kernel 'pull' users (which
> > make direct calls to read_raw).  Now in these cases they have
> > specifically requested a set of channels.  Given we have a tightly
> > defined subset of channels we can add another 'buffer' that caches
> > the latest value and the demux code can handle this fine. It's costly
> > in terms of bus transactions, but probably the only way we can keep
> > things consistent and predictable.
> > 
> > This approach doesn't work for the IIO sysfs accesses though as these
> > frequently involve incompatible sets of channel reads (differential and
> > non differential on a typical adc for example).  We simply can't do
> > buffered capture of these in a single pass on some devices (max1363 for
> > example).  If there is a really strong use case some sort of fallback to
> > a faked 'scan' might be possible but is going to be very fiddly and in
> > my view doesn't want to be in drivers unless there is a user.
> > 
> > 
> > Hence this question comes down to what we do for iio sysfs interfaces
> > and that is dependent on why people actually use the sysfs interfaces.
> > 
> > 1) Drop the reading from the buffer (to output via sysfs) across all
> > drivers that do it. (does this hurt any one?  I wrote the first driver
> > that does this and it doesn't effect any use case I have!)
> > 
> > 2) Implement something like in0_reserve to allow us to specify which
> > channels should still be available for sysfs reads when buffered reading
> > is going on.
> > 
> > 3) Add an iio on iio driver that uses the mapping infrastructure to
> > allow it to pretend to be like the other in kernel users described above.
> > 
> > 
> > 
> > So my thoughts are that 1) is the best plan unless someone has a real
> > pressing use case that requires us to read from the buffer.
> 
> I agree. The usecases for simultaneously doing a buffer and sysfs read are
> rather limited. On the other hand it complicates the design and implementation.

Also a vote for 1) from my side. The most important thing for me is that I don't loose any values while reading from the buffer.
If that means there is no sysfs access while using the buffer, it will be OK.

-- 
Regards,
Manuel Stahl
--
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