| // SPDX-License-Identifier: GPL-2.0 | |
| //! The `kernel` prelude. | |
| //! | |
| //! These are the most common items used by Rust code in the kernel, | |
| //! intended to be imported by all Rust code, for convenience. | |
| //! | |
| //! # Examples | |
| //! | |
| //! ``` | |
| //! use kernel::prelude::*; | |
| //! ``` | |
| #[doc(no_inline)] | |
| pub use core::{ | |
| mem::{ | |
| align_of, | |
| align_of_val, | |
| size_of, | |
| size_of_val, // | |
| }, | |
| pin::Pin, // | |
| }; | |
| #[doc(no_inline)] | |
| pub use ::ffi::{ | |
| c_char, | |
| c_int, | |
| c_long, | |
| c_longlong, | |
| c_schar, | |
| c_short, | |
| c_uchar, | |
| c_uint, | |
| c_ulong, | |
| c_ulonglong, | |
| c_ushort, | |
| c_void, | |
| CStr, // | |
| }; | |
| #[doc(no_inline)] | |
| pub use macros::{ | |
| export, | |
| fmt, | |
| kunit_tests, | |
| module, | |
| vtable, // | |
| }; | |
| #[doc(no_inline)] | |
| pub use pin_init::{ | |
| init, | |
| pin_data, | |
| pin_init, | |
| pinned_drop, | |
| InPlaceWrite, | |
| Init, | |
| PinInit, | |
| Zeroable, // | |
| }; | |
| #[doc(no_inline)] | |
| pub use zerocopy::{ | |
| FromBytes, | |
| IntoBytes, // | |
| }; | |
| #[doc(no_inline)] | |
| pub use zerocopy_derive::{ | |
| FromBytes, | |
| IntoBytes, // | |
| }; | |
| #[doc(no_inline)] | |
| pub use super::{ | |
| alloc::{ | |
| flags::*, | |
| Box, | |
| KBox, | |
| KVBox, | |
| KVVec, | |
| KVec, | |
| VBox, | |
| VVec, | |
| Vec, // | |
| }, | |
| build_assert::{ | |
| build_assert, | |
| build_error, | |
| const_assert, | |
| static_assert, // | |
| }, | |
| current, | |
| dev_alert, | |
| dev_crit, | |
| dev_dbg, | |
| dev_emerg, | |
| dev_err, | |
| dev_info, | |
| dev_notice, | |
| dev_warn, | |
| error::{ | |
| code::*, | |
| Error, | |
| Result, // | |
| }, | |
| init::InPlaceInit, | |
| pr_alert, | |
| pr_crit, | |
| pr_debug, | |
| pr_emerg, | |
| pr_err, | |
| pr_info, | |
| pr_notice, | |
| pr_warn, | |
| str::CStrExt as _, | |
| try_init, | |
| try_pin_init, | |
| uaccess::UserPtr, | |
| ThisModule, // | |
| }; | |
| // `super::std_vendor` is hidden, which makes the macro inline for some reason. | |
| #[doc(no_inline)] | |
| pub use super::dbg; |