xref: /kernel/linux/linux-6.6/rust/bindings/lib.rs (revision 62306a36)
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
27mod bindings_raw {
28    // Use glob import here to expose all helpers.
29    // Symbols defined within the module will take precedence to the glob import.
30    pub use super::bindings_helper::*;
31    include!(concat!(
32        env!("OBJTREE"),
33        "/rust/bindings/bindings_generated.rs"
34    ));
35}
36
37// When both a directly exposed symbol and a helper exists for the same function,
38// the directly exposed symbol is preferred and the helper becomes dead code, so
39// ignore the warning here.
40#[allow(dead_code)]
41mod bindings_helper {
42    // Import the generated bindings for types.
43    use super::bindings_raw::*;
44    include!(concat!(
45        env!("OBJTREE"),
46        "/rust/bindings/bindings_helpers_generated.rs"
47    ));
48}
49
50pub use bindings_raw::*;
51
52pub const GFP_KERNEL: gfp_t = BINDINGS_GFP_KERNEL;
53pub const __GFP_ZERO: gfp_t = BINDINGS___GFP_ZERO;
54