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

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

 



On 11/21/2011 09:05 AM, Hennerich, Michael wrote:
> Lars-Peter Clausen wrote on 2011-11-21:
>> 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.
>>
>> - Lars
> 
> Agreed.
> 
Looks like everyone agrees then.  I've prepared a suitable patch set,
but need to do a bit of reordering of my patch queue before posting.

Jonathan
> 
> 

--
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