Skip to content

Define the boundaries between driver class, library and subsystem #99250

@carlescufi

Description

@carlescufi

Summary

In Zephyr we have two distinct ways of achieving a similar result:

  • Driver classes (drivers/) which offer a common API that encapsulates a hardware feature and then has multiple hardware-specific implementations
  • Libraries, which are usually self-contained reusable units of code that do not interact with the hardware
  • Subsystems, which typically implement a higher-level API that is hardware agnostic and is not tied to pure hardware feature but rather something higher level, and that then have a concept of "backends" each of which is typically a different "transport"

Describe the solution you'd like

Define and describe in the documentation clear guidelines to determine whether a new feature should be added as a new driver class or a new subsystem.

Alternatives

No response

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Architecture ReviewDiscussion in the Architecture WG requiredEnhancementChanges/Updates/Additions to existing features

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions