Fuchsia’s driver framework is a collection of libraries, tools, metadata, and components that enable developers to create, run, test, and distribute drivers for Fuchsia systems. The driver framework aims to provide a stable ABI that allows developers to write a driver once and deploy it on multiple versions of the Fuchsia platform. (However, Fuchsia's driver framework is constantly evolving and has not achieved ABI stability yet.)
The driver framework is composed of the driver manager, driver hosts, libraries, FIDL interfaces, Banjo interfaces, and a set of guidelines for developing drivers for Fuchsia:
- The driver manager is responsible for managing the life cycle of drivers, such as loading, unloading, and registering. It also provides ways for drivers to communicate with each other and with Fuchsia’s Zircon kernel.
- The driver host is a process that runs in the kernel and enables drivers to access kernel resources.
- The driver runtime is an in process library which facilitates communication and event handling.
- The FIDL interfaces are used for communication between drivers and the rest of the system.
- [DFv1 only] The core library (
libdriver) provides a set of common functions that DFv1 drivers can use to interact with the driver manager and driver host.
[DFv1 only] The Banjo interfaces are used for communication between drivers and the driver manager.
(For more information on the differences between DFv1 and DFv2, see Comparison between DFv1 and DFv2.)
For more details on these concepts for the new driver framework (DFv2), see the Drivers section under Fundamentals.
Table of contents
DFv1 to DFv2 driver migration
DFv2 driver development
- Composite nodes
- Driver stack performance
- VMO Registration Pattern
DFv1 driver development
- Fuchsia driver development (DFv1)
- Building drivers
- Platform Bus
- Fuchsia Driver Framework (DFv1)
Device driver model
- Board drivers
- Display drivers
- PCI drivers
- USB drivers
- Input drivers
- SDMMC drivers