mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Currently bindgen has special logic to recognise `size_t` and `ssize_t` and map them to Rust `usize` and `isize`. Similarly, `ptrdiff_t` is mapped to `isize`. However this falls short for `__kernel_size_t`, `__kernel_ssize_t` and `__kernel_ptrdiff_t`. To ensure that they are mapped to usize/isize rather than 32/64 integers depending on platform, blocklist them in bindgen parameters and manually provide their definition. Signed-off-by: Gary Guo <gary@garyguo.net> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Reviewed-by: Trevor Gross <tmgross@umich.edu> Link: https://lore.kernel.org/r/20240913213041.395655-3-gary@garyguo.net [ Formatted comment. - Miguel ] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
// 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
 | 
						|
)]
 | 
						|
 | 
						|
#[allow(dead_code)]
 | 
						|
#[allow(clippy::undocumented_unsafe_blocks)]
 | 
						|
mod bindings_raw {
 | 
						|
    // Manual definition for blocklisted types.
 | 
						|
    type __kernel_size_t = usize;
 | 
						|
    type __kernel_ssize_t = isize;
 | 
						|
    type __kernel_ptrdiff_t = isize;
 | 
						|
 | 
						|
    // 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::*;
 |