From: "Alexander N. Kozhushkin" <alex@grave.users.botik.ru>
To: linux-hotplug@vger.kernel.org
Subject: Hotplug Driver Interface to User Level Programs: Some Questions.
Date: Thu, 19 Aug 2004 04:51:39 +0000 [thread overview]
Message-ID: <412431DB.DCC65347@grave.users.botik.ru> (raw)
My experience of using Linux kernels 2.6 shows that there is some
problem with hotplug devices. Namely, it seems that, there is no
uniform approach of how an application performing I/O operations on a
device must be handled, when that device is disconnected.
The following consideration explains the problem. Consider a
process, which is performing a system call with a file descriptor as
an argument. The file descriptor corresponds to a device special
file, and the device was disconnected after the descriptor was
created.
There are three reasonable ways by which the process can be handled:
1. If the call involves an I/O operation on the device, the process
hangs indefinitely until a signal has terminated the call or the
process.
2. If the call involves an I/O operation on the disconnected device,
the process waits for the device. As soon as the device is
connected again, an initialization procedure will put the device
into an appropriate state and will make the stopped process
continue. If the call does not involve I/O operations on the
device, it is performed without waiting, as if the device is
presented. In any case the process is able to complete the call
successfully.
3. The call completes without waiting for the device. The file
descriptor has been unusable for I/O operations on the device since
the disconnection, therefore the result of the call is not affected
if the device has been connected again. The result of the call
depends on the kind of the called function and other conditions.
However, the 'close' function closes the file, and there are system
calls which produce a specific error code in such situations.
In addition to the above, in many cases it is useful to deliver a
signal to a selected process at the moment when the device becomes
disconnected.
The choice of the standard affects not only the kernel itself, but
also applications. The third approach looks like the most reasonable
one, it is proposed in the 'drivers/usb/usb-skeleton.c' file, however,
all of the approaches above are in use now.
Which approach is the standard one or is supposed to be the standard?
What is the standard behavior of the 'read()', 'write()', 'ioctl()',
'select()', 'fcntl()', 'close()', ... system calls in such a
situation?
--
*********************************************************
Alexander N. Kozhushkin.
ADDR: alex@grave.users.botik.ru
*********************************************************
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
next reply other threads:[~2004-08-19 4:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-19 4:51 Alexander N. Kozhushkin [this message]
2004-08-19 15:32 ` [linux-usb-devel] Hotplug Driver Interface to User Level Programs: Alan Stern
2004-08-20 15:12 ` [linux-usb-devel] Hotplug Driver Interface to User Level Programs: Some Questions David Brownell
2004-09-12 0:33 ` [linux-usb-devel] Hotplug Driver Interface to User Level Programs: A Alexander N. Kozhushkin
2004-09-12 0:56 ` [linux-usb-devel] Hotplug Driver Interface to User Level Programs: Alexander N. Kozhushkin
2004-09-13 19:27 ` [linux-usb-devel] Hotplug Driver Interface to User Level Programs: A Driver Example Linas Vepstas
2004-09-13 20:25 ` Oliver Neukum
2004-09-14 6:58 ` Vojtech Pavlik
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=412431DB.DCC65347@grave.users.botik.ru \
--to=alex@grave.users.botik.ru \
--cc=linux-hotplug@vger.kernel.org \
/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).