]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rust: map `long` to `isize` and `char` to `u8`
authorGary Guo <gary@garyguo.net>
Fri, 13 Sep 2024 21:29:24 +0000 (22:29 +0100)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 16 Dec 2024 20:49:33 +0000 (21:49 +0100)
commit1bae8729e50a900f41e9a1c17ae81113e4cf62b8
treef9a6239a2d8e118cd373bf6f1e19a8267da18444
parent27c7518e7f1ccaaa43eb5f25dc362779d2dc2ccb
rust: map `long` to `isize` and `char` to `u8`

The following FFI types are replaced compared to `core::ffi`:

1. `char` type is now always mapped to `u8`, since kernel uses
   `-funsigned-char` on the C code. `core::ffi` maps it to platform
   default ABI, which can be either signed or unsigned.

2. `long` is now always mapped to `isize`. It's very common in the
   kernel to use `long` to represent a pointer-sized integer, and in
   fact `intptr_t` is a typedef of `long` in the kernel. Enforce this
   mapping rather than mapping to `i32/i64` depending on platform can
   save us a lot of unnecessary casts.

Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20240913213041.395655-5-gary@garyguo.net
[ Moved `uaccess` changes from the next commit, since they were
  irrefutable patterns that Rust >= 1.82.0 warns about. Reworded
  slightly and reformatted a few documentation comments. Rebased on
  top of `rust-next`. Added the removal of two casts to avoid Clippy
  warnings. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/ffi.rs
rust/kernel/error.rs
rust/kernel/firmware.rs
rust/kernel/miscdevice.rs
rust/kernel/uaccess.rs