| 1 | // SPDX-License-Identifier: GPL-2.0 |
| 2 | |
| 3 | //! Bindings. |
| 4 | //! |
| 5 | //! Imports the generated bindings by `bindgen`. |
| 6 | //! |
| 7 | //! This crate may not be directly used. If you need a kernel C API that is |
| 8 | //! not ported or wrapped in the `kernel` crate, then do so first instead of |
| 9 | //! using this crate. |
| 10 | |
| 11 | #![no_std] |
| 12 | // See <https://github.com/rust-lang/rust-bindgen/issues/1651>. |
| 13 | #![cfg_attr(test, allow(deref_nullptr))] |
| 14 | #![cfg_attr(test, allow(unaligned_references))] |
| 15 | #![cfg_attr(test, allow(unsafe_op_in_unsafe_fn))] |
| 16 | #![allow( |
| 17 | clippy::all, |
| 18 | missing_docs, |
| 19 | non_camel_case_types, |
| 20 | non_upper_case_globals, |
| 21 | non_snake_case, |
| 22 | improper_ctypes, |
| 23 | unreachable_pub, |
| 24 | unsafe_op_in_unsafe_fn |
| 25 | )] |
| 26 | |
| 27 | #[allow(dead_code)] |
| 28 | #[allow(clippy::undocumented_unsafe_blocks)] |
| 29 | #[cfg_attr(CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES, allow(unnecessary_transmutes))] |
| 30 | mod bindings_raw { |
| 31 | // Manual definition for blocklisted types. |
| 32 | type __kernel_size_t = usize; |
| 33 | type __kernel_ssize_t = isize; |
| 34 | type __kernel_ptrdiff_t = isize; |
| 35 | |
| 36 | // Use glob import here to expose all helpers. |
| 37 | // Symbols defined within the module will take precedence to the glob import. |
| 38 | pub use super::bindings_helper::*; |
| 39 | include!(concat!( |
| 40 | env!("OBJTREE" ), |
| 41 | "/rust/bindings/bindings_generated.rs" |
| 42 | )); |
| 43 | } |
| 44 | |
| 45 | // When both a directly exposed symbol and a helper exists for the same function, |
| 46 | // the directly exposed symbol is preferred and the helper becomes dead code, so |
| 47 | // ignore the warning here. |
| 48 | #[allow(dead_code)] |
| 49 | mod bindings_helper { |
| 50 | // Import the generated bindings for types. |
| 51 | use super::bindings_raw::*; |
| 52 | include!(concat!( |
| 53 | env!("OBJTREE" ), |
| 54 | "/rust/bindings/bindings_helpers_generated.rs" |
| 55 | )); |
| 56 | } |
| 57 | |
| 58 | pub use bindings_raw::*; |
| 59 | |