annotate local/hotplug-history.html @ 124:41ca6e4a8b6d default tip

Add Ottawa Linux Symposium 2011 and 2012 index pages.
author Rob Landley <rob@landley.net>
date Fri, 26 Jul 2013 15:23:43 -0500
parents 87598e3a8e3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
53
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 <html>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 <title>The history of hotplug</title>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 <body>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
4
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 <h1><b>The history of hotplug.</b></h1>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
6
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 <h2>What is hotplug, what problems does it solve, why do we have the current
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 set of hotplug mechanisms, and what legacy mechanisms did the current
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 hotplug implementation obsolete?</h2>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
10
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
11 <ul>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 <li><a href="#before">Before hotplug</a></li>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 <li><a href="#removable">Removable media</a></li>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 <li><a href="#modules">Modules</a></li>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
15
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 <h2><a name="before"><b>Before hotplug: static everything.</b></h2>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
17
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
18 <p>Originally, the kernel had no hotplug capability. A kernel without hotplug
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 manages a fixed set of hardware, all of which is detected and initialized at
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 boot time, and all of which remains present until the system is shut down.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 This is very simple, but also very limited.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
22
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 <p>This meant device drivers statically linked into the kernel image,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
24 and a /dev directory filled of device nodes for every potential device
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 when the system was installed. A program that wanted to probe for available
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 hardware sifted through /dev and opened devices it found there, elminating
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 the ones which gave an -ENODEV error.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
28
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 <p>One reason for this was simplicity, but equally important was that early PCs
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 were not designed around hotpluggable hardware, and Linux started out on a PC.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 When the PC was introduced, users couldn't even switch keyboards while the
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 machine was on without risking hardware damage.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
33
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 <p>[FOOTNOTE]Of course users widely ignored this constraint whenever they could. Users
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 hotplugged keyboards, serial, and parallel devices all the time, no matter
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
36 what the manufacturer said, and by the late 80's most hardware developers had
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
37 adapted to reality and buffered their more vulnerable external I/O ports. But
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 the number of keyboard, serial, and parallel ports on the machine remained
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 fixed, and each port could handle only one device at a time, so drivers focused
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
40 on handling ports and left figuring out what device was behind an I/O port to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
41 the userspace application trying to talk to that device.[/FOOTNOTE]</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
42
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
43 <h2><a name="removable">Removable media</h2>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
44
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 <p>The original PC did have one type of early hotplug: it had removable storage
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 media in the form of floppy drives (and later, CD-ROM drives, zip disks,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 and DVD drives). The first stirrings of hotplug support came from Linux's
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 need to cope with removable media.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
49
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
50 <p>With removable media, the contents of the corresponding block devices
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 changed, including even the size of the media represented by those block
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
52 devices. Since filesystems could depend on those block devices, and processes
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 depended on those filesystems, in extreme cases ejecting a floppy could
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
54 lead to a kernel panic.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
55
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 <p>The kernel's response to this was to ignore as much of the problem as
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
57 possible, and work around the rest. Removable media was treated as a special
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
58 case, and the kernel grew workarounds rather than any real systematic
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
59 solution to a larger generic problem.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
60
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
61 <p>Since the drives themselves stayed around awaiting the insertion of
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
62 new media, media were treated as a property of drives, and most drives could
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
63 have exactly one instance of removable media in them at a time anyway.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 [FOOTNOTE]There were "jukebox" style multi-CD changers, but they were poorly
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
65 supported and mostly treated like a single drive with multiple
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
66 partitions.[/FOOTNOTE]
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
67 So device drivers used device nodes representing the drive instead
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
68 of the media, and when the drive contained no media the driver would respond to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
69 attempts to access the drive's device node with error codes.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
70
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
71 <p>Poor hardware support for hotplug continued to be a problem: most removable
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
72 media provided no notification mechanism to inform the system
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
73 when media was inserted or removed. The driver could probe the device to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
74 see what media it contained at any given moment, but no interrupt was
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
75 generated to signal changes. Thus the kernel
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
76 had no way to respond to the a block device's removal except via extensive
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
77 error handling after the fact.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
78
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
79 <p>Applications using removable media probed for them or
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
80 received error codes on attempted access to an empty drive, and the kernel
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
81 developer's advice about dealing with the problems of removing a mounted
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
82 volume was "don't do that": inserting or removing media when the system didn't
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
83 expect it was dismissed as user error.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
84
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
85 <h3>A workaround: drive locking</h2>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
86
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
87 <p>To avoid being surprised by the unexpected removal of media containing
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
88 a mounted filesystem, some drives grew the ability for software to "lock"
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
89 a drive, preventing it from ejecting its media until it was unlocked.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
90 (Pressing the eject button still didn't generate an interrupt, it simply had
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
91 no effect until the software unlocked the drive.) This let the operating
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
92 system force users to eject removable media from software (via the "eject"
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
93 command) rather than by pressing the button on the drive, allowing the OS to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
94 safely use the block device at the expense of annoying users.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
95
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
96 <p>By locking the drive to prevent unauthorized eject, the hotplug-less kernel
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
97 avoided having to unmount filesystems on short notice. This meant the kernel
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
98 didn't have to promptly flush buffers when data was written to the device (to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
99 minimize unmount time), and that the kernel could veto attempts to unmount a
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
100 filesystem that was still in use for any reason, such as due to any process
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
101 having open files in that filesystem or that filesystem containing any
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
102 process's current directory. (Yes, even though a process's current directory
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
103 could be deleted, it couldn't be unmounted. Not for any deep technical reason;
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
104 support for it simply hadn't been implemented. Removable media was a poorly
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
105 supported afterthought.)</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
106
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
107 <p>Of course some drives (most notably PC floppy drives) had no provision for
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
108 locking the drive; ejecting a floppy was a manual process controlled by a
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
109 purely mechanical button. Users that didn't remember to manually unmount a
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
110 floppy lost data, and were largely mocked as clueless by traditional Unix
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
111 developers (or else PC hardware was mocked for not having drive locking
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
112 support). The "mtools" package provided a popular workaround, reading and
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
113 writing FAT files directly through a floppy disk's unmounted block device,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
114 probing for media before each command, and flushing all data after each
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
115 command. (It even accepted dos-style names for floppy drives.)</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
116
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
117 <p>As late as Linux 1.0, support for eject was still a special case for CDROM
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
118 drives (/include/linux/cdrom.h had a "#define CROMEJECT"), and door locking
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
119 support was a special case for SCSI (/drivers/scsi/sci_ioctl.h #defined
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
120 SCSI_IOCTL_DOORLOCK). As late as Linux 2.4, the underlying problems
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
121 with dynamically unplugging block devices were considered too hard to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
122 properly solve.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
123
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
124 <h2><a name="modules">Modules</h2>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
125
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
126 <p>The first serious hotplug mechanism in Linux was modules, because modules
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
127 allow device drivers to be loaded after the kernel boots and unloaded again
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
128 before shutdown.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
129
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
130 <p>Hotplug was a side effect, since most hardware used by Linux still wasn't
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
131 hotpluggable. The primary motivation for modules was reducing the memory
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
132 footprint of kernels, which was increasing due to the proliferation of device
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
133 drivers. A generically configured kernel, such as those in the emerging Linux
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
134 distributions, needed to be built with drivers for every piece of hardware it
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
135 might encounter, but most systems it ran on would use only a small subset of
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
136 those drivers.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
137
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
138 <p>Modules meant that device drivers could probe for hardware present when the
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
139 module was inserted, after the kernel booted. A module that failed to find any
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
140 devices (of the kind it contained a device driver for) could refuse to load, so
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
141 attempting to load all modules was a simple way of probing for available
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
142 hardware. Modules could even be removed and re-inserted to scan for and handle
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
143 new hardware.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
144
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
145 <p>This was an improvement, but not a complete solution. Using modules as the
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
146 primary hotplug mechanism quickly revealed numerous deficiencies: the
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
147 granularity was wrong, there were insufficient notification mechanisms, and
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
148 this approach didn't handle configuration issues like device nodes.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
149
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
150 <p>The granularity is wrong because a module encapsulates a device driver, and
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
151 one instance of a driver can manage multiple instances of a device. When
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
152 inserting a second instance of a device into a system, removing the module to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
153 reinsert it (and thus find the new instance of the device) takes the first
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
154 instance of the device offline. This is an extremely unpleasant side effect,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
155 and not always possible if the device is in use.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
156
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
157 <pre>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
158 More to come...
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
159
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
160 Ad-hoc mechanisms to rescan busses
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
161
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
162
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
163 module manages muliple devices; insert a second ethernet card.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
164 Need a way to tell module to rescan devices.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
165 Still need a separate notification mechanism to trigger module loading.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
166 Module loading either has to happen _after_ device insertion, or module
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
167 has to be told to rescan after module loaded.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
168 Doesn't handle unplug.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
169 Notification problem worse: ideally need to know before device goes away
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
170 so flush buffers, umount filesystems, close file handles, etc. Cleanup.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
171 Unloading module.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
172 Doesn't handle /dev entries.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
173 Fill up /dev with every possible device, there could be thousands of them.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
174 (Every possible partition on every possible hard drive...)
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
175 How does userspace know which ones are active? (In a static /dev, presence
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
176 of an entry gives no information about whether or not the device is there.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
177 Iterate through the lot and test. Very slow, timeouts, generates spurious
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
178 activity that can have unwanted side effects like spinning up drives...)
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
179
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
180
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
181 <h2>PCMCIA</h2> The arrival of PCMCIA (a hotpluggable 16-bit expansion card bus for early laptops) provided the first , USB, laptop docking stations,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
182
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
183 static everything.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
184 modules
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
185 The /proc directory
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
186 Rescan scsi bus via /proc/scsi
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
187 http://bash.cyberciti.biz/diskadmin/rescan-scsi-bus.sh.php
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
188 laptops (pcmcia)
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
189 USB
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
190 Added in 2.2.7, written by Linus Torvalds throwing out earlier work.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
191 devfs
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
192 Having the driver detect the presence of hardware is backwards. Driver
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
193 loads in response to device being plugged in, but the driver detects the
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
194 existence of the device... chicken and egg problem.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
195
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
196 The biggest problem with devfs
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
197 is that device nodes and physical devices aren't the same thing. Some device
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
198 nodes have no corresponding hardware (such as /dev/null), and some devices
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
199 have multiple device nodes (such as partitioned hard drives). Devfs had no
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
200 way to tell userspace what actual devices the system had separate from what
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
201 drivers were loaded, which was especially problematic when a newly inserted
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
202 device required some action from userspace (loading modules or firmware) before
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
203 device nodes could be created for it. And some USB devices can be driven
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
204 entirely from userspace, with no kernel device driver
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
205
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
206 A device that requires some action to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
207 be taken (such as a userspace program loading firmware into it) between
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
208 device insertion and device node creation, Suppose device that requires firmware to
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
209 be loaded (by userspace) before a device driver can probe it and create
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
210 appropriate /dev nodes
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
211 of information was missing from userspace.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
212
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
213
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
214
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
215 sysfs
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
216 Finally, the modern approach.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
217 /sbin/hotplug vs netlink
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
218
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
219 Also, devfs provides /dev entries, but that's the wrong layer. Some
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
220 hardware provides multiple /dev entries (partitioned hard drives), some
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
221 dev entries have no underlying hardware (/dev/zero, /dev/null, network
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
222 block devices), and some devices have no /dev entry (ethernet, for
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
223 historical reasons).
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
224
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
225
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
226
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
227
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
228
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
229
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
230 <h2>Static drivers, modules, and hotplug.</h2>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
231
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
232 A kernel without any hotplug capability manages a fixed set of hardware,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
233 all of which is detected and initialized at boot time, and all of which remains
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
234 present until the system is shut down.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
235
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
236 The Linux module loading mechanism allowed drivers to be loaded after the
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
237 system boots
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
238
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
239
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
240
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
241 Early atte
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
242
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
243 Hotplug allows the kernel to dynamically respond to the addition or removal of
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
244 hardware. At boot time,
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
245
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
246 /sbin/hotplug or netlink.
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
247 Support for hotplug in Linux evolved out of Linus's rewrite of USB
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
248 </body>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
249 </html>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
250
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
251 note:
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
252 What's the probe for removable media? (ioctl()?)
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
253
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
254 http://kerneltrap.org/node/1893
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
255 http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
256 http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
257 http://kerneltrap.org/node/5340
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
258 http://kerneltrap.org/node/6744
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents:
diff changeset
259 </pre>