All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Arve Hjønnevåg" <arve@android.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Len Brown <len.brown@intel.com>,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	Magnus Damm <damm@igel.co.jp>,
	linux-pm@lists.linux-foundation.org
Subject: Re: [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space
Date: Sun, 25 Apr 2010 15:34:20 -0700	[thread overview]
Message-ID: <v2ld6200be21004251534y6c820e96l824f3288201a757d__18282.4685857215$1272235235$gmane$org@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1004241037230.6848-100000@netrider.rowland.org>

On Sat, Apr 24, 2010 at 7:44 AM, Alan Stern <stern@rowland.harvard.edu> wrote:
> On Sat, 24 Apr 2010, Pavel Machek wrote:
>
>> On Fri 2010-04-23 20:20:47, Arve Hj?nnev?g wrote:
>> > On Fri, Apr 23, 2010 at 9:43 AM, Alan Stern <stern@rowland.harvard.edu> wrote:
>> > > On Fri, 23 Apr 2010, Pavel Machek wrote:
>> > >
>> > >> Hi!
>> > >>
>> > >> > Add a misc device, "suspend_blocker", that allows user-space processes
>> > >> > to block auto suspend. The device has ioctls to create a suspend_blocker,
>> > >> > and to block and unblock suspend. To delete the suspend_blocker, close
>> > >> > the device.
>> > >> >
>> > >> > Signed-off-by: Arve Hj??nnev??g <arve@android.com>
>> > >>
>> > >> > --- a/Documentation/power/suspend-blockers.txt
>> > >> > +++ b/Documentation/power/suspend-blockers.txt
>> > >> > @@ -95,3 +95,20 @@ if (list_empty(&state->pending_work))
>> > >> >  else
>> > >> >     suspend_block(&state->suspend_blocker);
>> > >> >
>> > >> > +User-space API
>> > >> > +==============
>> > >> > +
>> > >> > +To create a suspend_blocker from user-space, open the suspend_blocker device:
>> > >> > +    fd = open("/dev/suspend_blocker", O_RDWR | O_CLOEXEC);
>> > >> > +then call:
>> > >> > +    ioctl(fd, SUSPEND_BLOCKER_IOCTL_INIT(strlen(name)), name);
>> > >>
>> > >>
>> > >> This seems like very wrong idea -- it uses different ioctl number for
>> > >> each length AFAICT.
>> > >
>> > > How about specifying the name by an ordinary write() call instead of
>> > > by an ioctl()?
>> > >
>> >
>> > I prefer using ioctls. We have three operations at the moment. Init,
>> > block and unblock. If we do init with write but block and unblock
>> > using ioctls, it would be pretty strange. Specifying a command and
>>
>> Why would it be "strange"?
>
> Why indeed?  Using write() is the natural way to pass a data buffer
> into the kernel, especially a variable-length buffer.
>
> Mixing ioctl() and write() might seem strange at first, but it has
> plenty of precedent.  Consider adjusting the settings for a serial
> port, for example.
>
That sound like to opposite situation to me. It uses ioctls for setup
and read/write access the data stream.

>> > argument in a string to write is more complicated to parse than using
>> > ioctls.
>>
>> More complicated to parse?
>
> It shouldn't be -- especially if you assume that the init action must
> always come first.  The first write would contain the suspend blocker's
> name; all following writes would have to be either "on" or "off".
> That's not hard to parse.
>

Why should I have to parse a string at all? We already have a control
interface, ioctl, where user space can pass a command with data. If we
later want to add other commands we can easily add them without
breaking existing command. With your interface, where the first write
is a name, adding more initialization data later becomes harder. I
also don't like that wring the same string twice has a different
meaning the second time. With the ioctl interface, you forget to
initialize the suspend blocker, it block and unblock operations will
fail. With your interface you create a suspend blocker call "on" or
"off".

-- 
Arve Hjønnevåg

  reply	other threads:[~2010-04-25 22:34 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-23  1:08 [PATCH 0/9] Suspend block api (version 4) Arve Hjønnevåg
2010-04-23  1:08 ` [PATCH 1/9] PM: Add suspend block api Arve Hjønnevåg
2010-04-23  1:08 ` Arve Hjønnevåg
2010-04-23  1:08   ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2010-04-23  1:08     ` Arve Hjønnevåg
2010-04-23  1:08     ` [PATCH 3/9] PM: suspend_block: Abort task freezing if a suspend_blocker is active Arve Hjønnevåg
2010-04-23  1:08     ` Arve Hjønnevåg
2010-04-23  1:08       ` [PATCH 4/9] PM: suspend_block: Switch to list of active and inactive suspend blockers Arve Hjønnevåg
2010-04-23  1:08         ` [PATCH 5/9] PM: suspend_block: Add debugfs file Arve Hjønnevåg
2010-04-23  1:08           ` Arve Hjønnevåg
2010-04-23  1:08           ` [PATCH 6/9] PM: suspend_block: Add suspend_blocker stats Arve Hjønnevåg
2010-04-23  1:08             ` Arve Hjønnevåg
2010-04-23  1:08             ` [PATCH 7/9] PM: Add suspend blocking work Arve Hjønnevåg
2010-04-23  1:08             ` Arve Hjønnevåg
2010-04-23  1:08               ` [PATCH 8/9] Input: Block suspend while event queue is not empty Arve Hjønnevåg
2010-04-23  1:08               ` Arve Hjønnevåg
2010-04-23  1:08                 ` [PATCH 9/9] power_supply: Block suspend while power supply change notifications are pending Arve Hjønnevåg
2010-04-23  1:08                 ` Arve Hjønnevåg
2010-04-23 20:56                 ` [PATCH 8/9] Input: Block suspend while event queue is not empty Randy Dunlap
2010-04-23 21:08                   ` Dmitry Torokhov
2010-04-23 21:08                   ` Dmitry Torokhov
2010-04-23 21:08                     ` Dmitry Torokhov
2010-04-24  5:02                     ` Arve Hjønnevåg
2010-04-24  5:02                     ` Arve Hjønnevåg
2010-04-24  5:02                       ` Arve Hjønnevåg
2010-04-24 14:36                       ` Alan Stern
2010-04-24 14:36                       ` [linux-pm] " Alan Stern
2010-04-24 14:36                         ` Alan Stern
2010-04-25  2:30                         ` Rafael J. Wysocki
2010-04-25  2:30                           ` Rafael J. Wysocki
2010-04-25 15:29                           ` Alan Stern
2010-04-25 15:29                             ` Alan Stern
2010-04-25 22:41                             ` Arve Hjønnevåg
2010-04-25 22:41                               ` Arve Hjønnevåg
2010-04-25 22:41                             ` Arve Hjønnevåg
2010-04-25 15:29                           ` Alan Stern
2010-04-25  2:30                         ` Rafael J. Wysocki
2010-04-24  4:58                   ` Arve Hjønnevåg
2010-04-24  4:58                     ` Arve Hjønnevåg
2010-04-24  4:58                   ` Arve Hjønnevåg
2010-04-23 20:56                 ` Randy Dunlap
2010-04-23  8:16               ` [PATCH 7/9] PM: Add suspend blocking work Tejun Heo
2010-04-23 12:20                 ` Oleg Nesterov
2010-04-23 22:49                   ` Arve Hjønnevåg
2010-04-23 22:49                   ` Arve Hjønnevåg
2010-04-24  5:21                     ` Arve Hjønnevåg
2010-04-24  5:21                     ` Arve Hjønnevåg
2010-04-24  6:33                     ` Tejun Heo
2010-04-24  7:21                       ` Arve Hjønnevåg
2010-04-24  7:21                       ` Arve Hjønnevåg
2010-04-24  7:43                         ` Tejun Heo
2010-04-24  7:43                           ` Tejun Heo
2010-04-24  6:33                     ` Tejun Heo
2010-04-26 14:06                     ` Oleg Nesterov
2010-04-26 14:06                     ` Oleg Nesterov
2010-04-23 12:20                 ` Oleg Nesterov
2010-04-23  8:16               ` Tejun Heo
2010-04-23 20:58           ` [PATCH 5/9] PM: suspend_block: Add debugfs file Randy Dunlap
2010-04-23 20:58           ` Randy Dunlap
2010-04-24  3:23             ` Arve Hjønnevåg
2010-04-24  4:24               ` Randy Dunlap
2010-04-24  4:24                 ` Randy Dunlap
2010-04-24  4:54                 ` Arve Hjønnevåg
2010-04-24  4:54                 ` Arve Hjønnevåg
2010-04-24  3:23             ` Arve Hjønnevåg
2010-04-25 18:15             ` Greg KH
2010-04-25 18:15             ` Greg KH
2010-04-25 19:53               ` Randy Dunlap
2010-04-26  0:00                 ` tytso
2010-04-26  0:00                 ` tytso
2010-04-26  0:23                   ` Randy Dunlap
2010-04-26  0:23                   ` Randy Dunlap
2010-04-26  0:45                     ` tytso
2010-04-26  0:45                     ` tytso
2010-04-26  0:50                       ` Randy Dunlap
2010-04-26  0:50                       ` Randy Dunlap
2010-04-26  1:39                     ` [linux-pm] " Alan Stern
2010-04-26  1:39                     ` Alan Stern
2010-04-26  6:24                 ` Brian Swetland
2010-04-26 13:28                   ` Randy Dunlap
2010-04-26 13:28                   ` Randy Dunlap
2010-04-26  6:24                 ` Brian Swetland
2010-04-25 19:53               ` Randy Dunlap
2010-04-23  1:08       ` [PATCH 4/9] PM: suspend_block: Switch to list of active and inactive suspend blockers Arve Hjønnevåg
2010-04-23  2:25     ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Matt Helsley
2010-04-23  2:25     ` [linux-pm] " Matt Helsley
2010-04-23  3:54       ` Arve Hjønnevåg
2010-04-23  3:54       ` [linux-pm] " Arve Hjønnevåg
2010-04-23  4:38       ` Greg KH
2010-04-23  4:38       ` [linux-pm] " Greg KH
2010-04-23  8:43     ` Pavel Machek
2010-04-23 16:43       ` Alan Stern
2010-04-23 16:43       ` [linux-pm] " Alan Stern
2010-04-24  3:20         ` Arve Hjønnevåg
2010-04-24  3:20         ` [linux-pm] " Arve Hjønnevåg
2010-04-24  5:55           ` Pavel Machek
2010-04-24  5:55           ` [linux-pm] " Pavel Machek
2010-04-24 14:44             ` Alan Stern
2010-04-25 22:34               ` Arve Hjønnevåg [this message]
2010-04-25 22:34               ` Arve Hjønnevåg
2010-04-26 19:25                 ` Alan Stern
2010-04-27  4:04                   ` Arve Hjønnevåg
2010-04-27 18:33                     ` Alan Stern
2010-04-27 18:33                     ` [linux-pm] " Alan Stern
2010-04-27 22:03                       ` Rafael J. Wysocki
2010-04-27 22:03                       ` [linux-pm] " Rafael J. Wysocki
2010-04-27 23:22                         ` Arve Hjønnevåg
2010-04-27 23:22                         ` [linux-pm] " Arve Hjønnevåg
2010-04-27  4:04                   ` Arve Hjønnevåg
2010-04-26 19:25                 ` Alan Stern
2010-04-24 14:44             ` Alan Stern
2010-04-24  1:53       ` tytso
2010-04-24  5:39         ` Pavel Machek
2010-04-24  5:39         ` Pavel Machek
2010-04-24  1:53       ` tytso
2010-04-23  8:43     ` Pavel Machek
2010-04-23 16:33   ` [PATCH 1/9] PM: Add suspend block api Alan Stern
2010-04-23 16:33   ` Alan Stern
2010-04-23 16:45     ` [linux-pm] " Alan Stern
2010-04-23 16:45     ` Alan Stern
2010-04-24  2:15     ` Arve Hjønnevåg
2010-04-24  2:15     ` Arve Hjønnevåg
2010-04-24  2:30       ` Alan Stern
2010-04-24  2:30       ` Alan Stern
2010-04-24  3:14         ` Arve Hjønnevåg
2010-04-24  3:14         ` Arve Hjønnevåg
2010-04-23  4:39 ` [linux-pm] [PATCH 0/9] Suspend block api (version 4) Greg KH
2010-04-23  4:39 ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2009-05-06  4:18 [RFC][PATCH 0/9] Suspend block api (version 3) Arve Hjønnevåg
2009-05-06  4:18 ` [PATCH 1/9] PM: Add suspend block api Arve Hjønnevåg
2009-05-06  4:18   ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2009-05-05 20:12     ` Pavel Machek
2009-05-07  1:42       ` Arve Hjønnevåg
2009-05-07 10:32         ` Pavel Machek
2009-05-08  0:43           ` Arve Hjønnevåg
2009-05-08 14:22             ` Rafael J. Wysocki
2009-05-09  0:38               ` Arve Hjønnevåg
2009-05-05 20:16     ` Pavel Machek
2009-05-07  1:31       ` Arve Hjønnevåg
2009-05-07 10:43         ` Pavel Machek
2009-04-30  3:09 [RFC][PATCH 0/9] Suspend block api (version 2) Arve Hjønnevåg
2009-04-30  3:10 ` [PATCH 1/9] PM: Add suspend block api Arve Hjønnevåg
2009-04-30  3:10   ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg

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='v2ld6200be21004251534y6c820e96l824f3288201a757d__18282.4685857215$1272235235$gmane$org@mail.gmail.com' \
    --to=arve@android.com \
    --cc=damm@igel.co.jp \
    --cc=jbarnes@virtuousgeek.org \
    --cc=len.brown@intel.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=stern@rowland.harvard.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.