mirror of
https://github.com/torvalds/linux.git
synced 2024-12-21 10:31:54 +00:00
rust: map __kernel_size_t
and friends also to usize/isize
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>
This commit is contained in:
parent
75c1fd41a6
commit
2fd6f55c04
@ -1,5 +1,10 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
# We want to map these types to `isize`/`usize` manually, instead of
|
||||||
|
# define them as `int`/`long` depending on platform bitwidth.
|
||||||
|
--blocklist-type __kernel_s?size_t
|
||||||
|
--blocklist-type __kernel_ptrdiff_t
|
||||||
|
|
||||||
--opaque-type xregs_state
|
--opaque-type xregs_state
|
||||||
--opaque-type desc_struct
|
--opaque-type desc_struct
|
||||||
--opaque-type arch_lbr_state
|
--opaque-type arch_lbr_state
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
#[allow(clippy::undocumented_unsafe_blocks)]
|
#[allow(clippy::undocumented_unsafe_blocks)]
|
||||||
mod bindings_raw {
|
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.
|
// Use glob import here to expose all helpers.
|
||||||
// Symbols defined within the module will take precedence to the glob import.
|
// Symbols defined within the module will take precedence to the glob import.
|
||||||
pub use super::bindings_helper::*;
|
pub use super::bindings_helper::*;
|
||||||
|
@ -25,4 +25,9 @@
|
|||||||
unsafe_op_in_unsafe_fn
|
unsafe_op_in_unsafe_fn
|
||||||
)]
|
)]
|
||||||
|
|
||||||
|
// Manual definition of blocklisted types.
|
||||||
|
type __kernel_size_t = usize;
|
||||||
|
type __kernel_ssize_t = isize;
|
||||||
|
type __kernel_ptrdiff_t = isize;
|
||||||
|
|
||||||
include!(concat!(env!("OBJTREE"), "/rust/uapi/uapi_generated.rs"));
|
include!(concat!(env!("OBJTREE"), "/rust/uapi/uapi_generated.rs"));
|
||||||
|
Loading…
Reference in New Issue
Block a user