14.1. Kobjects, Ksets, and Subsystems14.1.1. Kobject Basics14.1.1.1. Embedding kobjects14.1.1.2. Kobject initialization14.1.1.3. Reference count manipulation14.1.1.4. Release functions and kobject types14.1.2. Kobject Hierarchies, Ksets, and Subsystems14.1.2.1. Ksets14.1.2.2. Operations on ksets14.1.2.3. Subsystems14.2. Low-Level Sysfs Operations14.2.1. Default Attributes14.2.2. Nondefault Attributes14.2.3. Binary Attributes14.2.4. Symbolic Links14.3. Hotplug Event Generation14.3.1. Hotplug Operations14.4. Buses, Devices, and Drivers14.4.1. Buses14.4.1.1. Bus registration14.4.1.2. Bus methods14.4.1.3. Iterating over devices and drivers14.4.1.4. Bus attributes14.4.2. Devices14.4.2.1. Device registration14.4.2.2. Device attributes14.4.2.3. Device structure embedding14.4.3. Device Drivers14.4.3.1. Driver structure embedding14.5. Classes14.5.1. The class_simple Interface14.5.2. The Full Class Interface14.5.2.1. Managing classes14.5.2.2. Class devices14.5.2.3. Class interfaces14.6. Putting It All Together14.6.1. Add a Device14.6.2. Remove a Device14.6.3. Add a Driver14.6.4. Remove a Driver14.7. Hotplug14.7.1. Dynamic Devices14.7.2. The /sbin/hotplug Utility14.7.2.1. IEEE1394 (FireWire)14.7.2.2. Networking14.7.2.3. PCI14.7.2.4. Input14.7.2.5. USB14.7.2.6. SCSI14.7.2.7. Laptop docking stations14.7.2.8. S/390 and zSeries14.7.3. Using /sbin/hotplug14.7.3.1. Linux hotplug scripts14.7.3.2. udev14.8. Dealing with Firmware14.8.1. The Kernel Firmware Interface14.8.2. How It Works14.9. Quick Reference14.9.1. Kobjects14.9.2. Sysfs Operations14.9.3. Buses, Devices, and Drivers14.9.4. Classes14.9.5. Firmware