mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
The Rust standard library has a really handy macro, `dbg!` [1,2]. It prints the source location (filename and line) along with the raw source code that is invoked with and the `Debug` representation of the given expression, e.g.: let a = 2; let b = dbg!(a * 2) + 1; // ^-- prints: [src/main.rs:2] a * 2 = 4 assert_eq!(b, 5); Port the macro over to the `kernel` crate inside a new module called `std_vendor`, using `pr_info!` instead of `eprintln!` and make the rules about committing uses of `dbg!` into version control more concrete (i.e. tailored for the kernel). Since the source code for the macro is taken from the standard library source (with only minor adjustments), the new file is licensed under `Apache 2.0 OR MIT`, just like the original [3,4]. Link: https://doc.rust-lang.org/std/macro.dbg.html [1] Link: https://github.com/rust-lang/rust/blob/master/library/std/src/macros.rs#L212 [2] Link: https://github.com/rust-lang/rust/blob/master/library/std/Cargo.toml [3] Link: https://github.com/rust-lang/rust/blob/master/COPYRIGHT [4] Signed-off-by: Niklas Mohrin <dev@niklasmohrin.de> [Reworded, adapted for upstream and applied latest changes] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
24 lines
555 B
Rust
24 lines
555 B
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::*;
|
|
//! ```
|
|
|
|
pub use core::pin::Pin;
|
|
|
|
pub use alloc::{boxed::Box, vec::Vec};
|
|
|
|
pub use macros::{module, vtable};
|
|
|
|
pub use super::{dbg, pr_alert, pr_crit, pr_debug, pr_emerg, pr_err, pr_info, pr_notice, pr_warn};
|
|
|
|
pub use super::error::{code::*, Error, Result};
|
|
|
|
pub use super::{str::CStr, ThisModule};
|