mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
rust: replace CStr with core::ffi::CStr
`kernel::ffi::CStr` was introduced in commit d126d23801 ("rust: str:
add `CStr` type") in November 2022 as an upstreaming of earlier work
that was done in May 2021[0]. That earlier work, having predated the
inclusion of `CStr` in `core`, largely duplicated the implementation of
`std::ffi::CStr`.
`std::ffi::CStr` was moved to `core::ffi::CStr` in Rust 1.64 in
September 2022. Hence replace `kernel::str::CStr` with `core::ffi::CStr`
to reduce our custom code footprint, and retain needed custom
functionality through an extension trait.
Add `CStr` to `ffi` and the kernel prelude.
Link: https://github.com/Rust-for-Linux/linux/commit/faa3cbcca03d0dec8f8e43f1d8d5c0860d98a23f [0]
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Benno Lossin <lossin@kernel.org>
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
Link: https://patch.msgid.link/20251018-cstr-core-v18-16-9378a54385f8@gmail.com
[ Removed assert that would now depend on the Rust version. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
committed by
Miguel Ojeda
parent
c5cf01ba8d
commit
3b83f5d5e7
@@ -61,7 +61,7 @@ impl BinderStats {
|
||||
|
||||
mod strings {
|
||||
use core::str::from_utf8_unchecked;
|
||||
use kernel::str::CStr;
|
||||
use kernel::str::{CStr, CStrExt as _};
|
||||
|
||||
extern "C" {
|
||||
static binder_command_strings: [*const u8; super::BC_COUNT];
|
||||
|
||||
@@ -46,3 +46,5 @@ alias! {
|
||||
}
|
||||
|
||||
pub use core::ffi::c_void;
|
||||
|
||||
pub use core::ffi::CStr;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
use crate::debugfs::file_ops::FileOps;
|
||||
use crate::ffi::c_void;
|
||||
use crate::str::CStr;
|
||||
use crate::str::{CStr, CStrExt as _};
|
||||
use crate::sync::Arc;
|
||||
use core::marker::PhantomData;
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ use core::{marker::PhantomData, ptr};
|
||||
|
||||
#[cfg(CONFIG_PRINTK)]
|
||||
use crate::c_str;
|
||||
use crate::str::CStrExt as _;
|
||||
|
||||
pub mod property;
|
||||
|
||||
|
||||
@@ -156,7 +156,9 @@ macro_rules! declare_drm_ioctls {
|
||||
Some($cmd)
|
||||
},
|
||||
flags: $flags,
|
||||
name: $crate::c_str!(::core::stringify!($cmd)).as_char_ptr(),
|
||||
name: $crate::str::as_char_ptr_in_const_context(
|
||||
$crate::c_str!(::core::stringify!($cmd)),
|
||||
),
|
||||
}
|
||||
),*];
|
||||
ioctls
|
||||
|
||||
@@ -182,6 +182,8 @@ impl Error {
|
||||
if ptr.is_null() {
|
||||
None
|
||||
} else {
|
||||
use crate::str::CStrExt as _;
|
||||
|
||||
// SAFETY: The string returned by `errname` is static and `NUL`-terminated.
|
||||
Some(unsafe { CStr::from_char_ptr(ptr) })
|
||||
}
|
||||
|
||||
@@ -4,7 +4,14 @@
|
||||
//!
|
||||
//! C header: [`include/linux/firmware.h`](srctree/include/linux/firmware.h)
|
||||
|
||||
use crate::{bindings, device::Device, error::Error, error::Result, ffi, str::CStr};
|
||||
use crate::{
|
||||
bindings,
|
||||
device::Device,
|
||||
error::Error,
|
||||
error::Result,
|
||||
ffi,
|
||||
str::{CStr, CStrExt as _},
|
||||
};
|
||||
use core::ptr::NonNull;
|
||||
|
||||
/// # Invariants
|
||||
|
||||
@@ -19,7 +19,7 @@ pub use core::{
|
||||
|
||||
pub use ::ffi::{
|
||||
c_char, c_int, c_long, c_longlong, c_schar, c_short, c_uchar, c_uint, c_ulong, c_ulonglong,
|
||||
c_ushort, c_void,
|
||||
c_ushort, c_void, CStr,
|
||||
};
|
||||
|
||||
pub use crate::alloc::{flags::*, Box, KBox, KVBox, KVVec, KVec, VBox, VVec, Vec};
|
||||
@@ -43,7 +43,7 @@ pub use super::static_assert;
|
||||
|
||||
pub use super::error::{code::*, Error, Result};
|
||||
|
||||
pub use super::{str::CStr, ThisModule};
|
||||
pub use super::{str::CStrExt as _, ThisModule};
|
||||
|
||||
pub use super::init::InPlaceInit;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//!
|
||||
//! C header: [`include/linux/seq_file.h`](srctree/include/linux/seq_file.h)
|
||||
|
||||
use crate::{bindings, c_str, fmt, types::NotThreadSafe, types::Opaque};
|
||||
use crate::{bindings, c_str, fmt, str::CStrExt as _, types::NotThreadSafe, types::Opaque};
|
||||
|
||||
/// A utility for generating the contents of a seq file.
|
||||
#[repr(transparent)]
|
||||
|
||||
+103
-320
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@
|
||||
use super::{lock::Backend, lock::Guard, LockClassKey};
|
||||
use crate::{
|
||||
ffi::{c_int, c_long},
|
||||
str::CStr,
|
||||
str::{CStr, CStrExt as _},
|
||||
task::{
|
||||
MAX_SCHEDULE_TIMEOUT, TASK_FREEZABLE, TASK_INTERRUPTIBLE, TASK_NORMAL, TASK_UNINTERRUPTIBLE,
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
use super::LockClassKey;
|
||||
use crate::{
|
||||
str::CStr,
|
||||
str::{CStr, CStrExt as _},
|
||||
types::{NotThreadSafe, Opaque, ScopeGuard},
|
||||
};
|
||||
use core::{cell::UnsafeCell, marker::PhantomPinned, pin::Pin};
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
//! Support for defining statics containing locks.
|
||||
|
||||
use crate::{
|
||||
str::CStr,
|
||||
str::{CStr, CStrExt as _},
|
||||
sync::lock::{Backend, Guard, Lock},
|
||||
sync::{LockClassKey, LockedBy},
|
||||
types::Opaque,
|
||||
|
||||
Reference in New Issue
Block a user