diff options
Diffstat (limited to 'rust/bindings/lib.rs')
| -rw-r--r-- | rust/bindings/lib.rs | 53 | 
1 files changed, 53 insertions, 0 deletions
diff --git a/rust/bindings/lib.rs b/rust/bindings/lib.rs new file mode 100644 index 000000000000..6c50ee62c56b --- /dev/null +++ b/rust/bindings/lib.rs @@ -0,0 +1,53 @@ +// 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] +#![feature(core_ffi_c)] +// 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. +    include!(concat!( +        env!("OBJTREE"), +        "/rust/bindings/bindings_helpers_generated.rs" +    )); +} + +pub use bindings_raw::*; + +pub const GFP_KERNEL: gfp_t = BINDINGS_GFP_KERNEL; +pub const __GFP_ZERO: gfp_t = BINDINGS___GFP_ZERO;  |