Expand description
The kernel crate.
This crate contains the kernel APIs that have been ported or wrapped for usage by Rust code in the kernel and is shared by all of them.
In other words, all the rest of the Rust code in the kernel (e.g. kernel
modules written in Rust) depends on core, alloc and this crate.
If you need a kernel C API that is not ported or wrapped yet here, then do so first instead of bypassing this crate.
Re-exports
pub use macros;pub use crate::error::to_result;pub use crate::error::Error;pub use crate::error::Result;pub use crate::types::bit;pub use crate::types::bits_iter;pub use crate::types::ARef;pub use crate::types::AlwaysRefCounted;pub use crate::types::Bit;pub use crate::types::Bool;pub use crate::types::Either;pub use crate::types::Either::Left;pub use crate::types::Either::Right;pub use crate::types::False;pub use crate::types::ForeignOwnable;pub use crate::types::Mode;pub use crate::types::Opaque;pub use crate::types::ScopeGuard;pub use crate::types::True;Modules
Character devices.
Common clock framework.
Credentials management.
Delay functions for operations like sleeping.
Generic devices that are part of the kernel’s driver model.
Generic support for drivers of different buses (e.g., PCI, Platform, Amba, etc.).
Kernel errors.
Files and file descriptors.
File systems.
Support for gpio device drivers.
Hardware Random Number Generator.
Buffers used in IO.
Memory-mapped IO.
IO vector iterators.
Interrupts and interrupt chips.
Kernel async functionality.
KUnit-based macros for Rust unit tests.
Linked lists.
Miscellaneous devices.
Memory management.
Networking core.
Devicetree and Open Firmware abstractions.
Kernel page allocation and management.
Platform devices and drivers.
Power management interfaces.
The 
kernel prelude.Printing facilities.
Random numbers.
Red-black trees.
Revocable objects.
Linux Security Modules (LSM).
String representations.
Synchronisation primitives.
sysctl
CONFIG_SYSCTLSystem control.
Tasks (threads and processes).
Kernel types.
Intrusive circular doubly-linked lists.
User pointers.
Work queues.
Macros
Asserts that a boolean expression is 
true at compile time.Fails the build if the code path calling 
build_error! can possibly be executed.Safely initialises a 
CondVar with the given name, generating a new lock class.Produces a pointer to an object from a pointer to one of its fields.
Counts the number of comma-separated entries surrounded by braces.
Counts the number of parenthesis-delimited, comma-separated items.
Defines the file system parameters of a given file system context.
Defines a new constant 
IdArray with a concise syntax.Defines a new constant 
IdTable with a concise syntax.Defines a const open firmware device id table that also carries per-entry data/context/info.
Prints an alert-level message (level 1) prefixed with device information.
Prints a critical-level message (level 2) prefixed with device information.
Prints a debug-level message (level 7) prefixed with device information.
Prints an emergency-level message (level 0) prefixed with device information.
Prints an error-level message (level 3) prefixed with device information.
Prints an info-level message (level 6) prefixed with device information.
Prints a notice-level message (level 5) prefixed with device information.
Prints a warning-level message (level 4) prefixed with device information.
Converts a comma-separated list of pairs into an array with the first element. That is, it
discards the second element of the pair.
A convenience alias for 
core::format_args.Registers a gpio chip with the rest of the kernel.
Registers a gpio chip and its irq chip with the rest of the kernel.
Implements the 
WorkAdapter trait for a type where its Work instance is a field.Implements the 
WorkAdapter trait for an adapter type.Automatically initialises static instances of synchronisation primitives.
Initialises a work item.
Initialises a work item with the given adapter.
Declares a kernel module that exposes a single driver.
Declares a kernel module that exposes a single file system.
Declares a kernel module that exposes a single misc device.
Declares a kernel module that exposes a single platform driver.
Safely initialises a 
Mutex with the given name, generating a new lock class.Calculates the offset of a field from the beginning of the struct it belongs to.
Prints an alert-level message (level 1).
Continues a previous log message in the same line.
Prints a critical-level message (level 2).
Prints a debug-level message (level 7).
Prints an emergency-level message (level 0).
Prints an error-level message (level 3).
Prints an info-level message (level 6).
Prints a notice-level message (level 5).
Prints a warning-level message (level 4).
Safely initialises a 
RawSpinLock with the given name, generating a new lock class.Safely initialises a 
Revocable instance with the given name, generating a new lock class.Safely initialises a 
RwSemaphore with the given name, generating a new lock class.Converts a comma-separated list of pairs into an array with the second element. That is, it
discards the first element of the pair.
Spawns a new task to run in the given executor.
Spawns a new work item to run in the work queue.
Safely initialises a 
SpinLock with the given name, generating a new lock class.Static assert (i.e. compile-time assert).
Structs
Scoped lock on the kernel parameters of 
ThisModule.Equivalent to 
THIS_MODULE in the C API.Constants
Page size defined in terms of the 
PAGE_SHIFT macro from C.Traits
The top level entrypoint to implementing a kernel module.