Mercurial > hg > kdocs
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 |
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> |