As I'm reading about the Linux device drivers and power management API I keep encountering terms like "system level", "subsystem", "platform", "class", and so on.

What is the relation between them? Is the system a subtype of platform? Or is system and platform exist in parallel with no inclusion relation? How does "class" differ from "system"? What each domain is good for (i.e. if I want to implement a certain functionality, should it be a class level functionality, or or platform functionality, or some other etcetera)?

In short, can someone explain to me what these different things are?


These are difficult to define. Generally, in the context of device enumeration,

  • "platform" devices are things typically found on a PC, or typically found on a Raspberry Pi.

    The kernel starts out looking for them, because the kernel has been compiled to run on a PC, or on an RPi. Some of the mainboard components, and CPU and memory fall under this category.

  • a "subsystem" is basically a group of drivers with similar functionality for different hardware.

    Individual drivers may then in turn use drivers from another subsystem. For example, the "sound" subsystem drivers handle individual sound cards and present a common sound card interface, while a driver can use the PCI subsystem to find the sound card, regardless of the type of southbridge chip used.

  • a "class" driver deals with devices from different vendors that implement a common interface.

    This is typical for USB devices, where there is e.g. a standard for mass storage devices, and a single driver handles all devices that claim to be compatible.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.