Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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::cast_lossless)]
29#[allow(clippy::ptr_as_ptr)]
30#[allow(clippy::ref_as_ptr)]
31#[allow(clippy::undocumented_unsafe_blocks)]
32#[cfg_attr(CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES, allow(unnecessary_transmutes))]
33mod bindings_raw {
34 // Manual definition for blocklisted types.
35 type __kernel_size_t = usize;
36 type __kernel_ssize_t = isize;
37 type __kernel_ptrdiff_t = isize;
38
39 // Use glob import here to expose all helpers.
40 // Symbols defined within the module will take precedence to the glob import.
41 pub use super::bindings_helper::*;
42 include!(concat!(
43 env!("OBJTREE"),
44 "/rust/bindings/bindings_generated.rs"
45 ));
46}
47
48// When both a directly exposed symbol and a helper exists for the same function,
49// the directly exposed symbol is preferred and the helper becomes dead code, so
50// ignore the warning here.
51#[allow(dead_code)]
52mod bindings_helper {
53 // Import the generated bindings for types.
54 use super::bindings_raw::*;
55 include!(concat!(
56 env!("OBJTREE"),
57 "/rust/bindings/bindings_helpers_generated.rs"
58 ));
59}
60
61pub use bindings_raw::*;