In the 2.4 and earlier Linux kernels, there was no unified database of what devices were present in the system, and how they were connected with each other. The implications of this are:
- The user had to grep through log messages to find out if a particular device has been detected by the kernel or not. There was no straight forward method for an application to list out what devices have been detected by the kernel, and whether a driver has been associated with the device.
- It was not possible to do proper power management, because this requires information on how the devices are connected in a system. As an example, before a USB controller is powered down, all the USB peripherals connected to that controller had to be powered down.
To overcome these problems, in 2.5 and later kernels a framework has been provided to maintain a device model. The five software components that play a major role in building and maintaining the device model are:
- Device model core
- Generic bus drivers
- Bus controller drivers
- Device drivers
- Class drivers
Read more from my friends Vijaykumar’s blog: http://bravegnu.org/device-model/device-model.txt