kernel/
prelude.rs

1// SPDX-License-Identifier: GPL-2.0
2
3//! The `kernel` prelude.
4//!
5//! These are the most common items used by Rust code in the kernel,
6//! intended to be imported by all Rust code, for convenience.
7//!
8//! # Examples
9//!
10//! ```
11//! use kernel::prelude::*;
12//! ```
13
14#[doc(no_inline)]
15pub use core::{
16    mem::{align_of, align_of_val, size_of, size_of_val},
17    pin::Pin,
18};
19
20pub use ::ffi::{
21    c_char, c_int, c_long, c_longlong, c_schar, c_short, c_uchar, c_uint, c_ulong, c_ulonglong,
22    c_ushort, c_void,
23};
24
25pub use crate::alloc::{flags::*, Box, KBox, KVBox, KVVec, KVec, VBox, VVec, Vec};
26
27#[doc(no_inline)]
28pub use macros::{export, kunit_tests, module, vtable};
29
30pub use pin_init::{init, pin_data, pin_init, pinned_drop, InPlaceWrite, Init, PinInit, Zeroable};
31
32pub use super::{build_assert, build_error};
33
34// `super::std_vendor` is hidden, which makes the macro inline for some reason.
35#[doc(no_inline)]
36pub use super::dbg;
37pub use super::{dev_alert, dev_crit, dev_dbg, dev_emerg, dev_err, dev_info, dev_notice, dev_warn};
38pub use super::{pr_alert, pr_crit, pr_debug, pr_emerg, pr_err, pr_info, pr_notice, pr_warn};
39pub use core::format_args as fmt;
40
41pub use super::{try_init, try_pin_init};
42
43pub use super::static_assert;
44
45pub use super::error::{code::*, Error, Result};
46
47pub use super::{str::CStr, ThisModule};
48
49pub use super::init::InPlaceInit;
50
51pub use super::current;
52
53pub use super::uaccess::UserPtr;