mirror of
https://github.com/torvalds/linux
synced 2026-07-22 10:10:47 +09:00
Given the macro scoping rules, all macros are rendered twice, in the
module and in the top-level of kernel crate.
Add `#[doc(hidden)]` to the macro definition and `#[doc(inline)]` to the
re-export inside `build_assert` module so the top-level items are hidden.
[ Sadly, because the definition is hidden, `rustdoc` decides to not list
them as re-exports in the `prelude` page anymore, even if we refer to
the not-actually-hidden item.
- Miguel ]
Acked-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Acked-by: Alexandre Courbot <acourbot@nvidia.com>
Acked-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Acked-by: Boqun Feng <boqun@kernel.org>
Signed-off-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260609142637.373347-1-gary@kernel.org
[ Kept a single declaration in the prelude, and reworded since they
already had `no_inline`. Removed other imports from `predefine` since
we now use the prelude. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
121 lines
1.8 KiB
Rust
121 lines
1.8 KiB
Rust
// 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;
|
|
|
|
#[doc(no_inline)]
|
|
pub use zerocopy_derive::FromBytes;
|
|
|
|
#[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;
|