linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: "Drubin, Daniel" <daniel.drubin@intel.com>
Cc: Jonathan Cameron <jic23@cam.ac.uk>,
	"Yuniverg, Michael" <michael.yuniverg@intel.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"Haimovich, Yoav" <yoav.haimovich@intel.com>
Subject: Re: working with IIO
Date: Thu, 22 Aug 2013 16:52:53 +0200	[thread overview]
Message-ID: <521625C5.4020504@metafoo.de> (raw)
In-Reply-To: <CE30B71206DDA24CBD6D43D23C236C034D8BDE@HASMSX103.ger.corp.intel.com>

On 08/22/2013 04:45 PM, Drubin, Daniel wrote:
> 
> 
>> -----Original Message-----
>> From: Lars-Peter Clausen [mailto:lars@metafoo.de]
>> Sent: Thursday, August 22, 2013 5:17 PM
>> To: Drubin, Daniel
>> Cc: Jonathan Cameron; Yuniverg, Michael; linux-iio@vger.kernel.org;
>> Haimovich, Yoav
>> Subject: Re: working with IIO
>>
>> On 08/22/2013 03:39 PM, Drubin, Daniel wrote:
>>> [...]
>>>>> As of now we would like to propose an option for IIO device to allow
>>>> multiple opens()s. Without that additional option devices will work
>>>> as today, so that, for example, existing sensor drivers will not have
>>>> to be modified for reentrancy; but those drivers that need it will
>>>> signal with that option that they will handle reentrancy themselves.
>>>>
>>>> How about implementing a userspace daemon which does the arbitration
>>>> between multiple users? Doing this in kernel space can get tricky,
>>>> especially if you want to allow concurrent users with different settings,
>> e.g. sample rate.
>>>> This is in part due to the majority of the IIO ABI being stateless
>>>> and this doesn't really mix well with concurrent users. Having a
>>>> daemon will allow you to implement a stateful API on top of the stateless
>> IIO userspace ABI.
>>>> If you go the kernel route though I'm pretty sure you'll run into
>>>> lots of problems without an immediate solution.
>>>
>>> That's the direction in which we are currently advancing. Not because we
>> are afraid of kernel-mode problems - after all they are very similar to what
>> kernel-mode filesystem driver faces when serving multiple processes
>> accessing the same FS, just less complicated (e.g. no writers); but mainly
>> because we want to use existing IIO as framework.
>>>
>>
>> The problem is that the IIO ABI is stateless, so either you need to add some
>> very crude hacks on-top of it to allow this or you'd have to throw  away the
>> current ABI and develop a IIOv2. The userspace daemon is in my opinion
>> preferable to both cases.
> 
> From practical POV we don't have much choice (timeline), since we have to reuse driver that is bound to IIO. From principle standpoint I somehow fail to see a problem. It seems to me that all state handling that an IIO driver needs to do is to keep associations of PIDs to sensor rates, configure sensor to the highest rate in the list and replicate shared data at rates requested by the clients. When a file descriptor is closed (due to process termination or another reasons), the actual sensor is re-configured with next-highest rate among the open FDs.

But you can't track the configured rate per PID with the current API. That's
why I keep saying that the API is stateless. You can not track state per
application without inventing a new API.

- Lars


  reply	other threads:[~2013-08-22 14:51 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <0423FED8EB79934F939F077EAF96DBD717D8025F@HASMSX105.ger.corp.intel.com>
2013-08-21 21:00 ` working with IIO Jonathan Cameron
2013-08-22 11:30   ` Drubin, Daniel
2013-08-22 13:16     ` Lars-Peter Clausen
2013-08-22 13:39       ` Drubin, Daniel
2013-08-22 14:16         ` Lars-Peter Clausen
2013-08-22 14:45           ` Drubin, Daniel
2013-08-22 14:52             ` Lars-Peter Clausen [this message]
2013-08-22 15:08               ` Jonathan Cameron
2013-08-22 15:33                 ` Drubin, Daniel
2013-08-22 16:15                   ` Jonathan Cameron
2013-08-22 16:35                     ` Drubin, Daniel
2013-08-23 16:23                       ` Jonathan Cameron
2013-08-23 18:37                         ` Jonathan Cameron
2013-08-22 15:16               ` Drubin, Daniel
2013-08-22 15:41                 ` Lars-Peter Clausen
2013-08-22 15:48                   ` Drubin, Daniel
2013-08-22 16:00                     ` Lars-Peter Clausen
2013-08-22 16:26                       ` Drubin, Daniel
2013-08-22 16:56                         ` Lars-Peter Clausen
2013-08-28 12:56                         ` Alexander Holler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=521625C5.4020504@metafoo.de \
    --to=lars@metafoo.de \
    --cc=daniel.drubin@intel.com \
    --cc=jic23@cam.ac.uk \
    --cc=linux-iio@vger.kernel.org \
    --cc=michael.yuniverg@intel.com \
    --cc=yoav.haimovich@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).