From: "Arve Hjønnevåg" <arve@android.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Pavel Machek <pavel@ucw.cz>, 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: [linux-pm] [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space
Date: Mon, 26 Apr 2010 21:04:12 -0700 [thread overview]
Message-ID: <y2nd6200be21004262104mb81ba7d6xe5c8f35689ca20a0@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1004261518130.1764-100000@iolanthe.rowland.org>
2010/4/26 Alan Stern <stern@rowland.harvard.edu>:
> On Sun, 25 Apr 2010, Arve Hjønnevåg wrote:
>
>> >> > >> > +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.
>
> Or you could say that it uses ioctls to send commands and read/write to
> pass data. That's pretty much what you would be doing.
>
> Let's put it another way: You find it excessively strange to do init
> using write and to send commands via ioctl, but you don't find it
> strange to abuse the ioctl number code for passing the string length?
> The old saying about motes and beams applies here...
>
> If you insist on using ioctl for init, you should use the standard
> convention for passing variable-length data. The userspace program
> sets up a fixed-size buffer containing a pointer to the name and the
> name's length, and it passes the buffer's address as the ioctl
> argument.
Are you sure that is the standard? I searched for ioctls with NAME in
their name and only found one that passed the name that way. The rest
used fixed length string buffers, or passed the buffersize to _IOC
like I do. For instance, input.h has ioctls to read string and
bitmasks where user space specify the buffer size as an argument to
the ioctl macro. These pass data from the kernel to user space, but I
don't passing a string length is any worse than passing a buffer size.
--
Arve Hjønnevåg
next prev parent reply other threads:[~2010-04-27 4:04 UTC|newest]
Thread overview: 61+ 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 ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space 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 ` [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 ` [PATCH 6/9] PM: suspend_block: Add suspend_blocker stats 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 ` [PATCH 8/9] Input: Block suspend while event queue is not empty 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 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-24 5:02 ` Arve Hjønnevåg
2010-04-24 14:36 ` [linux-pm] " Alan Stern
2010-04-25 2:30 ` Rafael J. Wysocki
2010-04-25 15:29 ` Alan Stern
2010-04-25 22:41 ` Arve Hjønnevåg
2010-04-24 4:58 ` Arve Hjønnevåg
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-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:43 ` Tejun Heo
2010-04-26 14:06 ` Oleg Nesterov
2010-04-23 20:58 ` [PATCH 5/9] PM: suspend_block: Add debugfs file Randy Dunlap
2010-04-24 3:23 ` Arve Hjønnevåg
2010-04-24 4:24 ` Randy Dunlap
2010-04-24 4:54 ` Arve Hjønnevåg
2010-04-25 18:15 ` Greg KH
2010-04-25 19:53 ` Randy Dunlap
2010-04-26 0:00 ` tytso
2010-04-26 0:23 ` Randy Dunlap
2010-04-26 0:45 ` tytso
2010-04-26 0:50 ` Randy Dunlap
2010-04-26 1:39 ` [linux-pm] " Alan Stern
2010-04-26 6:24 ` Brian Swetland
2010-04-26 13:28 ` Randy Dunlap
2010-04-23 2:25 ` [linux-pm] [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Matt Helsley
2010-04-23 3:54 ` Arve Hjønnevåg
2010-04-23 4:38 ` Greg KH
2010-04-23 8:43 ` Pavel Machek
2010-04-23 16:43 ` [linux-pm] " Alan Stern
2010-04-24 3:20 ` Arve Hjønnevåg
2010-04-24 5:55 ` Pavel Machek
2010-04-24 14:44 ` Alan Stern
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 [this message]
2010-04-27 18:33 ` Alan Stern
2010-04-27 22:03 ` Rafael J. Wysocki
2010-04-27 23:22 ` Arve Hjønnevåg
2010-04-24 1:53 ` tytso
2010-04-24 5:39 ` Pavel Machek
2010-04-23 16:33 ` [PATCH 1/9] PM: Add suspend block api Alan Stern
2010-04-23 16:45 ` [linux-pm] " Alan Stern
2010-04-24 2:15 ` Arve Hjønnevåg
2010-04-24 2:30 ` Alan Stern
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
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=y2nd6200be21004262104mb81ba7d6xe5c8f35689ca20a0@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=pavel@ucw.cz \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®