blob: a9da96da9e93b16e0a991e33587022dd609e5255 [file] [log] [blame] [view] [edit]
# Starnix Modules
Starnix modules are crates that are statically linked into the Starnix kernel and provide
self-contained functionality.
## Dependencies
Starnix modules can depend on `starnix_core` but `starnix_core` cannot depend on any modules.
A Starnix module cannot depend on another Starnix module. If you need to share code between
two modules, please either put that code in `//src/starnix/lib`, if the code does not need to
depend on `starnix_core`, or in `//src/starnix/kernel`, if the code does need to depend on
`starnix_core`.
## Use cases
Two common use cases for Starnix modules are device drivers and file systems.
## Configuration
To ensure code quality and consistency across all Starnix modules, each
module's `BUILD.gn` file must include the common clippy lint configuration and
other compiler flags.
This is done by adding the following to the `configs` list of your
`rustc_library` target:
```gn
configs += [ "//src/starnix/build:kernel_library_config" ]
```
This configuration enforces a standard set of lints and aligns other flags with
the library's use in the Starnix kernel binary.