mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'rust-6.20-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux
Pull rust updates from Miguel Ojeda:
"Toolchain and infrastructure:
- Add '__rust_helper' annotation to the C helpers
This is needed to inline these helpers into Rust code
- Remove imports available via the prelude, treewide
This was possible thanks to a new lint in Klint that Gary has
implemented -- more Klint-related changes, including initial
upstream support, are coming
- Deduplicate pin-init flags
'kernel' crate:
- Add support for calling a function exactly once with the new
'do_once_lite!' macro (and 'OnceLite' type)
Based on this, add 'pr_*_once!' macros to print only once
- Add 'impl_flags!' macro for defining common bitflags operations:
impl_flags!(
/// Represents multiple permissions.
#[derive(Debug, Clone, Default, Copy, PartialEq, Eq)]
pub struct Permissions(u32);
/// Represents a single permission.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Permission {
/// Read permission.
Read = 1 << 0,
/// Write permission.
Write = 1 << 1,
/// Execute permission.
Execute = 1 << 2,
}
);
let mut f: Permissions = Permission::Read | Permission::Write;
assert!(f.contains(Permission::Read));
assert!(!f.contains(Permission::Execute));
f |= Permission::Execute;
assert!(f.contains(Permission::Execute));
let f2: Permissions = Permission::Write | Permission::Execute;
assert!((f ^ f2).contains(Permission::Read));
assert!(!(f ^ f2).contains(Permission::Write));
- 'bug' module: support 'CONFIG_DEBUG_BUGVERBOSE_DETAILED' in the
'warn_on!' macro in order to show the evaluated condition alongside
the file path:
------------[ cut here ]------------
WARNING: [val == 1] linux/samples/rust/rust_minimal.rs:27 at ...
Modules linked in: rust_minimal(+)
- Add safety module with 'unsafe_precondition_assert!' macro,
currently a wrapper for 'debug_assert!', intended to mark the
validation of safety preconditions where possible:
/// # Safety
///
/// The caller must ensure that `index` is less than `N`.
unsafe fn set_unchecked(&mut self, index: usize, value: T) {
unsafe_precondition_assert!(
index < N,
"set_unchecked() requires index ({index}) < N ({N})"
);
...
}
- Add instructions to 'build_assert!' documentation requesting to
always inline functions when used with function arguments
- 'ptr' module: replace 'build_assert!' with a 'const' one
- 'rbtree' module: reduce unsafe blocks on pointer derefs
- 'transmute' module: implement 'FromBytes' and 'AsBytes' for
inhabited ZSTs, and use it in Nova
- More treewide replacements of 'c_str!' with C string literals
'macros' crate:
- Rewrite most procedural macros ('module!', 'concat_idents!',
'#[export]', '#[vtable]', '#[kunit_tests]') to use the 'syn'
parsing library which we introduced last cycle, with better
diagnostics
This also allows to support '#[cfg]' properly in the '#[vtable]'
macro, to support arbitrary types in 'module!' macro (not just an
identifier) and to remove several custom parsing helpers we had
- Use 'quote!' from the recently vendored 'quote' library and remove
our custom one
The vendored one also allows us to avoid quoting '"' and '{}'
inside the template anymore and editors can now highlight it. In
addition, it improves robustness as it eliminates the need for
string quoting and escaping
- Use 'pin_init::zeroed()' to simplify KUnit code
'pin-init' crate:
- Rewrite all procedural macros ('[pin_]init!', '#[pin_data]',
'#[pinned_drop]', 'derive([Maybe]Zeroable)') to use the 'syn'
parsing library which we introduced last cycle, with better
diagnostics
- Implement 'InPlaceWrite' for '&'static mut MaybeUninit<T>'. This
enables users to use external allocation mechanisms such as
'static_cell'
- Support tuple structs in 'derive([Maybe]Zeroable)'
- Support attributes on fields in '[pin_]init!' (such as
'#[cfg(...)]')
- Add a '#[default_error(<type>)]' attribute to '[pin_]init!' to
override the default error (when no '? Error' is specified)
- Support packed structs in '[pin_]init!' with
'#[disable_initialized_field_access]'
- Remove 'try_[pin_]init!' in favor of merging their feature with
'[pin_]init!'. Update the kernel's own 'try_[pin_]init!' macros to
use the 'default_error' attribute
- Correct 'T: Sized' bounds to 'T: ?Sized' in the generated
'PinnedDrop' check by '#[pin_data]'
Documentation:
- Conclude the Rust experiment
MAINTAINERS:
- Add "RUST [RUST-ANALYZER]" entry for the rust-analyzer support.
Tamir and Jesung will take care of it. They have both been active
around it for a while. The new tree will flow through the Rust one
- Add Gary as maintainer for "RUST [PIN-INIT]"
- Update Boqun and Tamir emails to their kernel.org accounts
And a few other cleanups and improvements"
* tag 'rust-6.20-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux: (59 commits)
rust: safety: introduce `unsafe_precondition_assert!` macro
rust: add `impl_flags!` macro for defining common bitflag operations
rust: print: Add pr_*_once macros
rust: bug: Support DEBUG_BUGVERBOSE_DETAILED option
rust: print: Add support for calling a function exactly once
rust: kbuild: deduplicate pin-init flags
gpu: nova-core: remove imports available via prelude
rust: clk: replace `kernel::c_str!` with C-Strings
MAINTAINERS: Update my email address to @kernel.org
rust: macros: support `#[cfg]` properly in `#[vtable]` macro.
rust: kunit: use `pin_init::zeroed` instead of custom null value
rust: macros: rearrange `#[doc(hidden)]` in `module!` macro
rust: macros: allow arbitrary types to be used in `module!` macro
rust: macros: convert `#[kunit_tests]` macro to use `syn`
rust: macros: convert `concat_idents!` to use `syn`
rust: macros: convert `#[export]` to use `syn`
rust: macros: use `quote!` for `module!` macro
rust: macros: use `syn` to parse `module!` macro
rust: macros: convert `#[vtable]` macro to use `syn`
rust: macros: use `quote!` from vendored crate
...
This commit is contained in:
@@ -152,6 +152,7 @@ Bjorn Andersson <andersson@kernel.org> <bjorn.andersson@sonymobile.com>
|
||||
Björn Steinbrink <B.Steinbrink@gmx.de>
|
||||
Björn Töpel <bjorn@kernel.org> <bjorn.topel@gmail.com>
|
||||
Björn Töpel <bjorn@kernel.org> <bjorn.topel@intel.com>
|
||||
Boqun Feng <boqun@kernel.org> <boqun.feng@gmail.com>
|
||||
Boris Brezillon <bbrezillon@kernel.org> <b.brezillon.dev@gmail.com>
|
||||
Boris Brezillon <bbrezillon@kernel.org> <b.brezillon@overkiz.com>
|
||||
Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@bootlin.com>
|
||||
@@ -800,6 +801,7 @@ Sven Eckelmann <sven@narfation.org> <sven@open-mesh.com>
|
||||
Sven Peter <sven@kernel.org> <sven@svenpeter.dev>
|
||||
Szymon Wilczek <swilczek.lx@gmail.com> <szymonwilczek@gmx.com>
|
||||
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
||||
Tamir Duberstein <tamird@kernel.org> <tamird@gmail.com>
|
||||
Tamizh Chelvam Raja <quic_tamizhr@quicinc.com> <tamizhr@codeaurora.org>
|
||||
Taniya Das <quic_tdas@quicinc.com> <tdas@codeaurora.org>
|
||||
Tanzir Hasan <tanzhasanwork@gmail.com> <tanzirh@google.com>
|
||||
|
||||
@@ -34,7 +34,7 @@ Please refer to ``include/linux/compiler_attributes.h`` for more information.
|
||||
Rust
|
||||
----
|
||||
|
||||
The kernel has experimental support for the Rust programming language
|
||||
The kernel has support for the Rust programming language
|
||||
[rust-language]_ under ``CONFIG_RUST``. It is compiled with ``rustc`` [rustc]_
|
||||
under ``--edition=2021`` [rust-editions]_. Editions are a way to introduce
|
||||
small changes to the language that are not backwards compatible.
|
||||
|
||||
@@ -7,24 +7,6 @@ Documentation related to Rust within the kernel. To start using Rust
|
||||
in the kernel, please read the quick-start.rst guide.
|
||||
|
||||
|
||||
The Rust experiment
|
||||
-------------------
|
||||
|
||||
The Rust support was merged in v6.1 into mainline in order to help in
|
||||
determining whether Rust as a language was suitable for the kernel, i.e. worth
|
||||
the tradeoffs.
|
||||
|
||||
Currently, the Rust support is primarily intended for kernel developers and
|
||||
maintainers interested in the Rust support, so that they can start working on
|
||||
abstractions and drivers, as well as helping the development of infrastructure
|
||||
and tools.
|
||||
|
||||
If you are an end user, please note that there are currently no in-tree
|
||||
drivers/modules suitable or intended for production use, and that the Rust
|
||||
support is still in development/experimental, especially for certain kernel
|
||||
configurations.
|
||||
|
||||
|
||||
Code documentation
|
||||
------------------
|
||||
|
||||
|
||||
+18
-9
@@ -4113,7 +4113,7 @@ F: drivers/input/touchscreen/atmel_mxt_ts.c
|
||||
ATOMIC INFRASTRUCTURE
|
||||
M: Will Deacon <will@kernel.org>
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
M: Boqun Feng <boqun.feng@gmail.com>
|
||||
M: Boqun Feng <boqun@kernel.org>
|
||||
R: Mark Rutland <mark.rutland@arm.com>
|
||||
R: Gary Guo <gary@garyguo.net>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
@@ -4506,7 +4506,7 @@ F: lib/sbitmap.c
|
||||
|
||||
BLOCK LAYER DEVICE DRIVER API [RUST]
|
||||
M: Andreas Hindborg <a.hindborg@kernel.org>
|
||||
R: Boqun Feng <boqun.feng@gmail.com>
|
||||
R: Boqun Feng <boqun@kernel.org>
|
||||
L: linux-block@vger.kernel.org
|
||||
L: rust-for-linux@vger.kernel.org
|
||||
S: Supported
|
||||
@@ -11281,7 +11281,7 @@ F: tools/testing/selftests/timers/
|
||||
|
||||
DELAY, SLEEP, TIMEKEEPING, TIMERS [RUST]
|
||||
M: Andreas Hindborg <a.hindborg@kernel.org>
|
||||
R: Boqun Feng <boqun.feng@gmail.com>
|
||||
R: Boqun Feng <boqun@kernel.org>
|
||||
R: FUJITA Tomonori <fujita.tomonori@gmail.com>
|
||||
R: Frederic Weisbecker <frederic@kernel.org>
|
||||
R: Lyude Paul <lyude@redhat.com>
|
||||
@@ -14582,7 +14582,7 @@ M: Alan Stern <stern@rowland.harvard.edu>
|
||||
M: Andrea Parri <parri.andrea@gmail.com>
|
||||
M: Will Deacon <will@kernel.org>
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
M: Boqun Feng <boqun.feng@gmail.com>
|
||||
M: Boqun Feng <boqun@kernel.org>
|
||||
M: Nicholas Piggin <npiggin@gmail.com>
|
||||
M: David Howells <dhowells@redhat.com>
|
||||
M: Jade Alglave <j.alglave@ucl.ac.uk>
|
||||
@@ -14741,7 +14741,7 @@ LOCKING PRIMITIVES
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
M: Ingo Molnar <mingo@redhat.com>
|
||||
M: Will Deacon <will@kernel.org>
|
||||
M: Boqun Feng <boqun.feng@gmail.com> (LOCKDEP & RUST)
|
||||
M: Boqun Feng <boqun@kernel.org> (LOCKDEP & RUST)
|
||||
R: Waiman Long <longman@redhat.com>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
@@ -21948,7 +21948,7 @@ M: Frederic Weisbecker <frederic@kernel.org> (kernel/rcu/tree_nocb.h)
|
||||
M: Neeraj Upadhyay <neeraj.upadhyay@kernel.org> (kernel/rcu/tasks.h)
|
||||
M: Joel Fernandes <joelagnelf@nvidia.com>
|
||||
M: Josh Triplett <josh@joshtriplett.org>
|
||||
M: Boqun Feng <boqun.feng@gmail.com>
|
||||
M: Boqun Feng <boqun@kernel.org>
|
||||
M: Uladzislau Rezki <urezki@gmail.com>
|
||||
R: Steven Rostedt <rostedt@goodmis.org>
|
||||
R: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
@@ -22399,7 +22399,7 @@ RESTARTABLE SEQUENCES SUPPORT
|
||||
M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
M: "Paul E. McKenney" <paulmck@kernel.org>
|
||||
M: Boqun Feng <boqun.feng@gmail.com>
|
||||
M: Boqun Feng <boqun@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: include/trace/events/rseq.h
|
||||
@@ -22922,7 +22922,7 @@ F: tools/verification/
|
||||
|
||||
RUST
|
||||
M: Miguel Ojeda <ojeda@kernel.org>
|
||||
R: Boqun Feng <boqun.feng@gmail.com>
|
||||
R: Boqun Feng <boqun@kernel.org>
|
||||
R: Gary Guo <gary@garyguo.net>
|
||||
R: Björn Roy Baron <bjorn3_gh@protonmail.com>
|
||||
R: Benno Lossin <lossin@kernel.org>
|
||||
@@ -22968,6 +22968,7 @@ F: rust/kernel/num/
|
||||
|
||||
RUST [PIN-INIT]
|
||||
M: Benno Lossin <lossin@kernel.org>
|
||||
M: Gary Guo <gary@garyguo.net>
|
||||
L: rust-for-linux@vger.kernel.org
|
||||
S: Maintained
|
||||
W: https://rust-for-linux.com/pin-init
|
||||
@@ -22979,6 +22980,14 @@ F: rust/kernel/init.rs
|
||||
F: rust/pin-init/
|
||||
K: \bpin-init\b|pin_init\b|PinInit
|
||||
|
||||
RUST [RUST-ANALYZER]
|
||||
M: Tamir Duberstein <tamird@kernel.org>
|
||||
R: Jesung Yang <y.j3ms.n@gmail.com>
|
||||
L: rust-for-linux@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git https://github.com/Rust-for-Linux/linux.git rust-analyzer-next
|
||||
F: scripts/generate_rust_analyzer.py
|
||||
|
||||
RXRPC SOCKETS (AF_RXRPC)
|
||||
M: David Howells <dhowells@redhat.com>
|
||||
M: Marc Dionne <marc.dionne@auristor.com>
|
||||
@@ -28385,7 +28394,7 @@ F: lib/xarray.c
|
||||
F: tools/testing/radix-tree
|
||||
|
||||
XARRAY API [RUST]
|
||||
M: Tamir Duberstein <tamird@gmail.com>
|
||||
M: Tamir Duberstein <tamird@kernel.org>
|
||||
M: Andreas Hindborg <a.hindborg@kernel.org>
|
||||
L: rust-for-linux@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
|
||||
use core::{
|
||||
marker::PhantomData,
|
||||
mem::size_of,
|
||||
ops::Deref, //
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
use core::mem::size_of_val;
|
||||
|
||||
use kernel::{
|
||||
device,
|
||||
dma::{
|
||||
@@ -34,11 +32,11 @@ use crate::{
|
||||
/// that scheme before nova-core becomes stable, which means this module will eventually be
|
||||
/// removed.
|
||||
mod elf {
|
||||
use core::mem::size_of;
|
||||
|
||||
use kernel::bindings;
|
||||
use kernel::str::CStr;
|
||||
use kernel::transmute::FromBytes;
|
||||
use kernel::{
|
||||
bindings,
|
||||
prelude::*,
|
||||
transmute::FromBytes, //
|
||||
};
|
||||
|
||||
/// Newtype to provide a [`FromBytes`] implementation.
|
||||
#[repr(transparent)]
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
//! Support for firmware binaries designed to run on a RISC-V core. Such firmwares files have a
|
||||
//! dedicated header.
|
||||
|
||||
use core::mem::size_of;
|
||||
|
||||
use kernel::{
|
||||
device,
|
||||
firmware::Firmware,
|
||||
|
||||
@@ -142,7 +142,7 @@ impl CommandToGsp for SetRegistry {
|
||||
}
|
||||
|
||||
/// Message type for GSP initialization done notification.
|
||||
struct GspInitDone {}
|
||||
struct GspInitDone;
|
||||
|
||||
// SAFETY: `GspInitDone` is a zero-sized type with no bytes, therefore it
|
||||
// trivially has no uninitialized bytes.
|
||||
@@ -151,13 +151,13 @@ unsafe impl FromBytes for GspInitDone {}
|
||||
impl MessageFromGsp for GspInitDone {
|
||||
const FUNCTION: MsgFunction = MsgFunction::GspInitDone;
|
||||
type InitError = Infallible;
|
||||
type Message = GspInitDone;
|
||||
type Message = ();
|
||||
|
||||
fn read(
|
||||
_msg: &Self::Message,
|
||||
_sbuffer: &mut SBufferIter<array::IntoIter<&[u8], 2>>,
|
||||
) -> Result<Self, Self::InitError> {
|
||||
Ok(GspInitDone {})
|
||||
Ok(GspInitDone)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,7 @@
|
||||
|
||||
//! GSP Sequencer implementation for Pre-hopper GSP boot sequence.
|
||||
|
||||
use core::{
|
||||
array,
|
||||
mem::{
|
||||
size_of,
|
||||
size_of_val, //
|
||||
},
|
||||
};
|
||||
use core::array;
|
||||
|
||||
use kernel::{
|
||||
device,
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
|
||||
use core::ops::Deref;
|
||||
|
||||
use kernel::{
|
||||
alloc::KVec,
|
||||
prelude::*, //
|
||||
};
|
||||
use kernel::prelude::*;
|
||||
|
||||
/// A buffer abstraction for discontiguous byte slices.
|
||||
///
|
||||
|
||||
+29
-12
@@ -117,6 +117,23 @@ syn-flags := \
|
||||
--extern quote \
|
||||
$(call cfgs-to-flags,$(syn-cfgs))
|
||||
|
||||
pin_init_internal-cfgs := \
|
||||
kernel
|
||||
|
||||
pin_init_internal-flags := \
|
||||
--extern proc_macro2 \
|
||||
--extern quote \
|
||||
--extern syn \
|
||||
$(call cfgs-to-flags,$(pin_init_internal-cfgs))
|
||||
|
||||
pin_init-cfgs := \
|
||||
kernel
|
||||
|
||||
pin_init-flags := \
|
||||
--extern pin_init_internal \
|
||||
--extern macros \
|
||||
$(call cfgs-to-flags,$(pin_init-cfgs))
|
||||
|
||||
# `rustdoc` did not save the target modifiers, thus workaround for
|
||||
# the time being (https://github.com/rust-lang/rust/issues/144521).
|
||||
rustdoc_modifiers_workaround := $(if $(call rustc-min-version,108800),-Cunsafe-allow-abi-mismatch=fixed-x18)
|
||||
@@ -211,15 +228,15 @@ rustdoc-ffi: $(src)/ffi.rs rustdoc-core FORCE
|
||||
+$(call if_changed,rustdoc)
|
||||
|
||||
rustdoc-pin_init_internal: private rustdoc_host = yes
|
||||
rustdoc-pin_init_internal: private rustc_target_flags = --cfg kernel \
|
||||
rustdoc-pin_init_internal: private rustc_target_flags = $(pin_init_internal-flags) \
|
||||
--extern proc_macro --crate-type proc-macro
|
||||
rustdoc-pin_init_internal: $(src)/pin-init/internal/src/lib.rs \
|
||||
rustdoc-clean FORCE
|
||||
rustdoc-clean rustdoc-proc_macro2 rustdoc-quote rustdoc-syn FORCE
|
||||
+$(call if_changed,rustdoc)
|
||||
|
||||
rustdoc-pin_init: private rustdoc_host = yes
|
||||
rustdoc-pin_init: private rustc_target_flags = --extern pin_init_internal \
|
||||
--extern macros --extern alloc --cfg kernel --cfg feature=\"alloc\"
|
||||
rustdoc-pin_init: private rustc_target_flags = $(pin_init-flags) \
|
||||
--extern alloc --cfg feature=\"alloc\"
|
||||
rustdoc-pin_init: $(src)/pin-init/src/lib.rs rustdoc-pin_init_internal \
|
||||
rustdoc-macros FORCE
|
||||
+$(call if_changed,rustdoc)
|
||||
@@ -272,14 +289,14 @@ rusttestlib-macros: $(src)/macros/lib.rs \
|
||||
rusttestlib-proc_macro2 rusttestlib-quote rusttestlib-syn FORCE
|
||||
+$(call if_changed,rustc_test_library)
|
||||
|
||||
rusttestlib-pin_init_internal: private rustc_target_flags = --cfg kernel \
|
||||
rusttestlib-pin_init_internal: private rustc_target_flags = $(pin_init_internal-flags) \
|
||||
--extern proc_macro
|
||||
rusttestlib-pin_init_internal: private rustc_test_library_proc = yes
|
||||
rusttestlib-pin_init_internal: $(src)/pin-init/internal/src/lib.rs FORCE
|
||||
rusttestlib-pin_init_internal: $(src)/pin-init/internal/src/lib.rs \
|
||||
rusttestlib-proc_macro2 rusttestlib-quote rusttestlib-syn FORCE
|
||||
+$(call if_changed,rustc_test_library)
|
||||
|
||||
rusttestlib-pin_init: private rustc_target_flags = --extern pin_init_internal \
|
||||
--extern macros --cfg kernel
|
||||
rusttestlib-pin_init: private rustc_target_flags = $(pin_init-flags)
|
||||
rusttestlib-pin_init: $(src)/pin-init/src/lib.rs rusttestlib-macros \
|
||||
rusttestlib-pin_init_internal $(obj)/$(libpin_init_internal_name) FORCE
|
||||
+$(call if_changed,rustc_test_library)
|
||||
@@ -548,8 +565,9 @@ $(obj)/$(libmacros_name): $(src)/macros/lib.rs $(obj)/libproc_macro2.rlib \
|
||||
$(obj)/libquote.rlib $(obj)/libsyn.rlib FORCE
|
||||
+$(call if_changed_dep,rustc_procmacro)
|
||||
|
||||
$(obj)/$(libpin_init_internal_name): private rustc_target_flags = --cfg kernel
|
||||
$(obj)/$(libpin_init_internal_name): $(src)/pin-init/internal/src/lib.rs FORCE
|
||||
$(obj)/$(libpin_init_internal_name): private rustc_target_flags = $(pin_init_internal-flags)
|
||||
$(obj)/$(libpin_init_internal_name): $(src)/pin-init/internal/src/lib.rs \
|
||||
$(obj)/libproc_macro2.rlib $(obj)/libquote.rlib $(obj)/libsyn.rlib FORCE
|
||||
+$(call if_changed_dep,rustc_procmacro)
|
||||
|
||||
quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@
|
||||
@@ -643,8 +661,7 @@ $(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
|
||||
+$(call if_changed_rule,rustc_library)
|
||||
|
||||
$(obj)/pin_init.o: private skip_gendwarfksyms = 1
|
||||
$(obj)/pin_init.o: private rustc_target_flags = --extern pin_init_internal \
|
||||
--extern macros --cfg kernel
|
||||
$(obj)/pin_init.o: private rustc_target_flags = $(pin_init-flags)
|
||||
$(obj)/pin_init.o: $(src)/pin-init/src/lib.rs $(obj)/compiler_builtins.o \
|
||||
$(obj)/$(libpin_init_internal_name) $(obj)/$(libmacros_name) FORCE
|
||||
+$(call if_changed_rule,rustc_library)
|
||||
|
||||
+2
-2
@@ -2,12 +2,12 @@
|
||||
|
||||
#include <linux/bug.h>
|
||||
|
||||
__noreturn void rust_helper_BUG(void)
|
||||
__rust_helper __noreturn void rust_helper_BUG(void)
|
||||
{
|
||||
BUG();
|
||||
}
|
||||
|
||||
bool rust_helper_WARN_ON(bool cond)
|
||||
__rust_helper bool rust_helper_WARN_ON(bool cond)
|
||||
{
|
||||
return WARN_ON(cond);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#include <linux/errname.h>
|
||||
|
||||
const char *rust_helper_errname(int err)
|
||||
__rust_helper const char *rust_helper_errname(int err)
|
||||
{
|
||||
return errname(err);
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,17 +2,17 @@
|
||||
|
||||
#include <linux/err.h>
|
||||
|
||||
__force void *rust_helper_ERR_PTR(long err)
|
||||
__rust_helper __force void *rust_helper_ERR_PTR(long err)
|
||||
{
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
bool rust_helper_IS_ERR(__force const void *ptr)
|
||||
__rust_helper bool rust_helper_IS_ERR(__force const void *ptr)
|
||||
{
|
||||
return IS_ERR(ptr);
|
||||
}
|
||||
|
||||
long rust_helper_PTR_ERR(__force const void *ptr)
|
||||
__rust_helper long rust_helper_PTR_ERR(__force const void *ptr)
|
||||
{
|
||||
return PTR_ERR(ptr);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
#include <linux/maple_tree.h>
|
||||
|
||||
void rust_helper_mt_init_flags(struct maple_tree *mt, unsigned int flags)
|
||||
__rust_helper void rust_helper_mt_init_flags(struct maple_tree *mt,
|
||||
unsigned int flags)
|
||||
{
|
||||
mt_init_flags(mt, flags);
|
||||
}
|
||||
|
||||
+10
-10
@@ -3,48 +3,48 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/sched/mm.h>
|
||||
|
||||
void rust_helper_mmgrab(struct mm_struct *mm)
|
||||
__rust_helper void rust_helper_mmgrab(struct mm_struct *mm)
|
||||
{
|
||||
mmgrab(mm);
|
||||
}
|
||||
|
||||
void rust_helper_mmdrop(struct mm_struct *mm)
|
||||
__rust_helper void rust_helper_mmdrop(struct mm_struct *mm)
|
||||
{
|
||||
mmdrop(mm);
|
||||
}
|
||||
|
||||
void rust_helper_mmget(struct mm_struct *mm)
|
||||
__rust_helper void rust_helper_mmget(struct mm_struct *mm)
|
||||
{
|
||||
mmget(mm);
|
||||
}
|
||||
|
||||
bool rust_helper_mmget_not_zero(struct mm_struct *mm)
|
||||
__rust_helper bool rust_helper_mmget_not_zero(struct mm_struct *mm)
|
||||
{
|
||||
return mmget_not_zero(mm);
|
||||
}
|
||||
|
||||
void rust_helper_mmap_read_lock(struct mm_struct *mm)
|
||||
__rust_helper void rust_helper_mmap_read_lock(struct mm_struct *mm)
|
||||
{
|
||||
mmap_read_lock(mm);
|
||||
}
|
||||
|
||||
bool rust_helper_mmap_read_trylock(struct mm_struct *mm)
|
||||
__rust_helper bool rust_helper_mmap_read_trylock(struct mm_struct *mm)
|
||||
{
|
||||
return mmap_read_trylock(mm);
|
||||
}
|
||||
|
||||
void rust_helper_mmap_read_unlock(struct mm_struct *mm)
|
||||
__rust_helper void rust_helper_mmap_read_unlock(struct mm_struct *mm)
|
||||
{
|
||||
mmap_read_unlock(mm);
|
||||
}
|
||||
|
||||
struct vm_area_struct *rust_helper_vma_lookup(struct mm_struct *mm,
|
||||
unsigned long addr)
|
||||
__rust_helper struct vm_area_struct *
|
||||
rust_helper_vma_lookup(struct mm_struct *mm, unsigned long addr)
|
||||
{
|
||||
return vma_lookup(mm, addr);
|
||||
}
|
||||
|
||||
void rust_helper_vma_end_read(struct vm_area_struct *vma)
|
||||
__rust_helper void rust_helper_vma_end_read(struct vm_area_struct *vma)
|
||||
{
|
||||
vma_end_read(vma);
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
#include <linux/of.h>
|
||||
|
||||
bool rust_helper_is_of_node(const struct fwnode_handle *fwnode)
|
||||
__rust_helper bool rust_helper_is_of_node(const struct fwnode_handle *fwnode)
|
||||
{
|
||||
return is_of_node(fwnode);
|
||||
}
|
||||
|
||||
+5
-4
@@ -4,23 +4,24 @@
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
struct page *rust_helper_alloc_pages(gfp_t gfp_mask, unsigned int order)
|
||||
__rust_helper struct page *rust_helper_alloc_pages(gfp_t gfp_mask,
|
||||
unsigned int order)
|
||||
{
|
||||
return alloc_pages(gfp_mask, order);
|
||||
}
|
||||
|
||||
void *rust_helper_kmap_local_page(struct page *page)
|
||||
__rust_helper void *rust_helper_kmap_local_page(struct page *page)
|
||||
{
|
||||
return kmap_local_page(page);
|
||||
}
|
||||
|
||||
void rust_helper_kunmap_local(const void *addr)
|
||||
__rust_helper void rust_helper_kunmap_local(const void *addr)
|
||||
{
|
||||
kunmap_local(addr);
|
||||
}
|
||||
|
||||
#ifndef NODE_NOT_IN_PAGE_FLAGS
|
||||
int rust_helper_page_to_nid(const struct page *page)
|
||||
__rust_helper int rust_helper_page_to_nid(const struct page *page)
|
||||
{
|
||||
return page_to_nid(page);
|
||||
}
|
||||
|
||||
@@ -2,18 +2,19 @@
|
||||
|
||||
#include <linux/rbtree.h>
|
||||
|
||||
void rust_helper_rb_link_node(struct rb_node *node, struct rb_node *parent,
|
||||
struct rb_node **rb_link)
|
||||
__rust_helper void rust_helper_rb_link_node(struct rb_node *node,
|
||||
struct rb_node *parent,
|
||||
struct rb_node **rb_link)
|
||||
{
|
||||
rb_link_node(node, parent, rb_link);
|
||||
}
|
||||
|
||||
struct rb_node *rust_helper_rb_first(const struct rb_root *root)
|
||||
__rust_helper struct rb_node *rust_helper_rb_first(const struct rb_root *root)
|
||||
{
|
||||
return rb_first(root);
|
||||
}
|
||||
|
||||
struct rb_node *rust_helper_rb_last(const struct rb_root *root)
|
||||
__rust_helper struct rb_node *rust_helper_rb_last(const struct rb_root *root)
|
||||
{
|
||||
return rb_last(root);
|
||||
}
|
||||
|
||||
+2
-2
@@ -2,14 +2,14 @@
|
||||
|
||||
#include <linux/slab.h>
|
||||
|
||||
void * __must_check __realloc_size(2)
|
||||
__rust_helper void *__must_check __realloc_size(2)
|
||||
rust_helper_krealloc_node_align(const void *objp, size_t new_size, unsigned long align,
|
||||
gfp_t flags, int node)
|
||||
{
|
||||
return krealloc_node_align(objp, new_size, align, flags, node);
|
||||
}
|
||||
|
||||
void * __must_check __realloc_size(2)
|
||||
__rust_helper void *__must_check __realloc_size(2)
|
||||
rust_helper_kvrealloc_node_align(const void *p, size_t size, unsigned long align,
|
||||
gfp_t flags, int node)
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user