rust: use custom FFI integer types
commit d072acda4862f095ec9056979b654cc06a22cc68 upstream. Currently FFI integer types are defined in libcore. This commit creates the `ffi` crate and asks bindgen to use that crate for FFI integer types instead of `core::ffi`. This commit is preparatory and no type changes are made in this commit yet. Signed-off-by: Gary Guo <gary@garyguo.net> Link: https://lore.kernel.org/r/20240913213041.395655-4-gary@garyguo.net [ Added `rustdoc`, `rusttest` and KUnit tests support. Rebased on top of `rust-next` (e.g. migrated more `core::ffi` cases). Reworded crate docs slightly and formatted. - Miguel ] Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0ea8582faa
commit
641ecd0d0a
@@ -332,11 +332,11 @@ impl<T: ?Sized> Arc<T> {
|
||||
impl<T: 'static> ForeignOwnable for Arc<T> {
|
||||
type Borrowed<'a> = ArcBorrow<'a, T>;
|
||||
|
||||
fn into_foreign(self) -> *const core::ffi::c_void {
|
||||
fn into_foreign(self) -> *const crate::ffi::c_void {
|
||||
ManuallyDrop::new(self).ptr.as_ptr() as _
|
||||
}
|
||||
|
||||
unsafe fn borrow<'a>(ptr: *const core::ffi::c_void) -> ArcBorrow<'a, T> {
|
||||
unsafe fn borrow<'a>(ptr: *const crate::ffi::c_void) -> ArcBorrow<'a, T> {
|
||||
// By the safety requirement of this function, we know that `ptr` came from
|
||||
// a previous call to `Arc::into_foreign`.
|
||||
let inner = NonNull::new(ptr as *mut ArcInner<T>).unwrap();
|
||||
@@ -346,7 +346,7 @@ impl<T: 'static> ForeignOwnable for Arc<T> {
|
||||
unsafe { ArcBorrow::new(inner) }
|
||||
}
|
||||
|
||||
unsafe fn from_foreign(ptr: *const core::ffi::c_void) -> Self {
|
||||
unsafe fn from_foreign(ptr: *const crate::ffi::c_void) -> Self {
|
||||
// SAFETY: By the safety requirement of this function, we know that `ptr` came from
|
||||
// a previous call to `Arc::into_foreign`, which guarantees that `ptr` is valid and
|
||||
// holds a reference count increment that is transferrable to us.
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
use super::{lock::Backend, lock::Guard, LockClassKey};
|
||||
use crate::{
|
||||
ffi::{c_int, c_long},
|
||||
init::PinInit,
|
||||
pin_init,
|
||||
str::CStr,
|
||||
@@ -14,7 +15,6 @@ use crate::{
|
||||
time::Jiffies,
|
||||
types::Opaque,
|
||||
};
|
||||
use core::ffi::{c_int, c_long};
|
||||
use core::marker::PhantomPinned;
|
||||
use core::ptr;
|
||||
use macros::pin_data;
|
||||
|
||||
@@ -46,7 +46,7 @@ pub unsafe trait Backend {
|
||||
/// remain valid for read indefinitely.
|
||||
unsafe fn init(
|
||||
ptr: *mut Self::State,
|
||||
name: *const core::ffi::c_char,
|
||||
name: *const crate::ffi::c_char,
|
||||
key: *mut bindings::lock_class_key,
|
||||
);
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ unsafe impl super::Backend for MutexBackend {
|
||||
|
||||
unsafe fn init(
|
||||
ptr: *mut Self::State,
|
||||
name: *const core::ffi::c_char,
|
||||
name: *const crate::ffi::c_char,
|
||||
key: *mut bindings::lock_class_key,
|
||||
) {
|
||||
// SAFETY: The safety requirements ensure that `ptr` is valid for writes, and `name` and
|
||||
|
||||
@@ -95,7 +95,7 @@ unsafe impl super::Backend for SpinLockBackend {
|
||||
|
||||
unsafe fn init(
|
||||
ptr: *mut Self::State,
|
||||
name: *const core::ffi::c_char,
|
||||
name: *const crate::ffi::c_char,
|
||||
key: *mut bindings::lock_class_key,
|
||||
) {
|
||||
// SAFETY: The safety requirements ensure that `ptr` is valid for writes, and `name` and
|
||||
|
||||
Reference in New Issue
Block a user