|  | // SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | //! Bindings. | 
|  | //! | 
|  | //! Imports the generated bindings by `bindgen`. | 
|  | //! | 
|  | //! This crate may not be directly used. If you need a kernel C API that is | 
|  | //! not ported or wrapped in the `kernel` crate, then do so first instead of | 
|  | //! using this crate. | 
|  |  | 
|  | #![no_std] | 
|  | // See <https://github.com/rust-lang/rust-bindgen/issues/1651>. | 
|  | #![cfg_attr(test, allow(deref_nullptr))] | 
|  | #![cfg_attr(test, allow(unaligned_references))] | 
|  | #![cfg_attr(test, allow(unsafe_op_in_unsafe_fn))] | 
|  | #![allow( | 
|  | clippy::all, | 
|  | missing_docs, | 
|  | non_camel_case_types, | 
|  | non_upper_case_globals, | 
|  | non_snake_case, | 
|  | improper_ctypes, | 
|  | unreachable_pub, | 
|  | unsafe_op_in_unsafe_fn | 
|  | )] | 
|  |  | 
|  | mod bindings_raw { | 
|  | // Use glob import here to expose all helpers. | 
|  | // Symbols defined within the module will take precedence to the glob import. | 
|  | pub use super::bindings_helper::*; | 
|  | include!(concat!( | 
|  | env!("OBJTREE"), | 
|  | "/rust/bindings/bindings_generated.rs" | 
|  | )); | 
|  | } | 
|  |  | 
|  | // When both a directly exposed symbol and a helper exists for the same function, | 
|  | // the directly exposed symbol is preferred and the helper becomes dead code, so | 
|  | // ignore the warning here. | 
|  | #[allow(dead_code)] | 
|  | mod bindings_helper { | 
|  | // Import the generated bindings for types. | 
|  | use super::bindings_raw::*; | 
|  | include!(concat!( | 
|  | env!("OBJTREE"), | 
|  | "/rust/bindings/bindings_helpers_generated.rs" | 
|  | )); | 
|  | } | 
|  |  | 
|  | pub use bindings_raw::*; |