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

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

 



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.


Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Margaret Seif



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