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)] 15 pub use core::{ 16 mem::{ 17 align_of, 18 align_of_val, 19 size_of, 20 size_of_val, // 21 }, 22 pin::Pin, // 23 }; 24 25 #[doc(no_inline)] 26 pub use ::ffi::{ 27 c_char, 28 c_int, 29 c_long, 30 c_longlong, 31 c_schar, 32 c_short, 33 c_uchar, 34 c_uint, 35 c_ulong, 36 c_ulonglong, 37 c_ushort, 38 c_void, 39 CStr, // 40 }; 41 42 #[doc(no_inline)] 43 pub use macros::{ 44 export, 45 fmt, 46 kunit_tests, 47 module, 48 vtable, // 49 }; 50 51 #[doc(no_inline)] 52 pub use pin_init::{ 53 init, 54 pin_data, 55 pin_init, 56 pinned_drop, 57 InPlaceWrite, 58 Init, 59 PinInit, 60 Zeroable, // 61 }; 62 63 #[doc(no_inline)] 64 pub use zerocopy::{ 65 FromBytes, 66 IntoBytes, // 67 }; 68 69 #[doc(no_inline)] 70 pub use zerocopy_derive::{ 71 FromBytes, 72 IntoBytes, // 73 }; 74 75 #[doc(no_inline)] 76 pub use super::{ 77 alloc::{ 78 flags::*, 79 Box, 80 KBox, 81 KVBox, 82 KVVec, 83 KVec, 84 VBox, 85 VVec, 86 Vec, // 87 }, 88 build_assert::{ 89 build_assert, 90 build_error, 91 const_assert, 92 static_assert, // 93 }, 94 current, 95 dev_alert, 96 dev_crit, 97 dev_dbg, 98 dev_emerg, 99 dev_err, 100 dev_info, 101 dev_notice, 102 dev_warn, 103 error::{ 104 code::*, 105 Error, 106 Result, // 107 }, 108 init::InPlaceInit, 109 pr_alert, 110 pr_crit, 111 pr_debug, 112 pr_emerg, 113 pr_err, 114 pr_info, 115 pr_notice, 116 pr_warn, 117 str::CStrExt as _, 118 try_init, 119 try_pin_init, 120 uaccess::UserPtr, 121 ThisModule, // 122 }; 123 124 // `super::std_vendor` is hidden, which makes the macro inline for some reason. 125 #[doc(no_inline)] 126 pub use super::dbg; 127