lib.rs (823d4737d4c226699f4378b71675822f5ebe78ba) lib.rs (071cedc84e907f6984b3de3285ec2b077d3c3cdb)
1// SPDX-License-Identifier: GPL-2.0
2
3//! Crate for all kernel procedural macros.
4
5#[macro_use]
6mod quote;
7mod concat_idents;
8mod helpers;
9mod module;
10mod paste;
11mod pin_data;
12mod pinned_drop;
13mod vtable;
1// SPDX-License-Identifier: GPL-2.0
2
3//! Crate for all kernel procedural macros.
4
5#[macro_use]
6mod quote;
7mod concat_idents;
8mod helpers;
9mod module;
10mod paste;
11mod pin_data;
12mod pinned_drop;
13mod vtable;
14mod zeroable;
14
15use proc_macro::TokenStream;
16
17/// Declares a kernel module.
18///
19/// The `type` argument should be a type which implements the [`Module`]
20/// trait. Also accepts various forms of kernel metadata.
21///

--- 316 unchanged lines hidden (view full) ---

338///
339/// [`paste`]: https://docs.rs/paste/
340#[proc_macro]
341pub fn paste(input: TokenStream) -> TokenStream {
342 let mut tokens = input.into_iter().collect();
343 paste::expand(&mut tokens);
344 tokens.into_iter().collect()
345}
15
16use proc_macro::TokenStream;
17
18/// Declares a kernel module.
19///
20/// The `type` argument should be a type which implements the [`Module`]
21/// trait. Also accepts various forms of kernel metadata.
22///

--- 316 unchanged lines hidden (view full) ---

339///
340/// [`paste`]: https://docs.rs/paste/
341#[proc_macro]
342pub fn paste(input: TokenStream) -> TokenStream {
343 let mut tokens = input.into_iter().collect();
344 paste::expand(&mut tokens);
345 tokens.into_iter().collect()
346}
347
348/// Derives the [`Zeroable`] trait for the given struct.
349///
350/// This can only be used for structs where every field implements the [`Zeroable`] trait.
351///
352/// # Examples
353///
354/// ```rust,ignore
355/// #[derive(Zeroable)]
356/// pub struct DriverData {
357/// id: i64,
358/// buf_ptr: *mut u8,
359/// len: usize,
360/// }
361/// ```
362#[proc_macro_derive(Zeroable)]
363pub fn derive_zeroable(input: TokenStream) -> TokenStream {
364 zeroable::derive(input)
365}