Commit 3f9ebeba authored by Kunwu Chan's avatar Kunwu Chan Committed by Boqun Feng
Browse files

rust: sync: Mark CondVar::notify_*() inline



When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
with ARCH=arm64, the following symbols are generated:

$nm vmlinux | grep ' _R'.*CondVar | rustfilt
... T <kernel::sync::condvar::CondVar>::notify_all
... T <kernel::sync::condvar::CondVar>::notify_one
... T <kernel::sync::condvar::CondVar>::notify_sync
...

These notify_*() symbols are trivial wrappers around the C functions
__wake_up() and __wake_up_sync(). It doesn't make sense to go through
a trivial wrapper for these functions, so mark them inline.

[boqun: Reword the commit title for consistency and reformat the commit
log.]

Suggested-by: default avatarAlice Ryhl <aliceryhl@google.com>
Link: https://github.com/Rust-for-Linux/linux/issues/1145


Co-developed-by: default avatarGrace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: default avatarGrace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: default avatarKunwu Chan <kunwu.chan@hotmail.com>
Reviewed-by: default avatarBenno Lossin <benno.lossin@proton.me>
Reviewed-by: default avatarAlice Ryhl <aliceryhl@google.com>
Signed-off-by: default avatarBoqun Feng <boqun.feng@gmail.com>
Link: https://lore.kernel.org/r/20250324061835.1693125-1-kunwu.chan@linux.dev
parent 5bc34be4
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -216,6 +216,7 @@ fn notify(&self, count: c_int) {
    /// This method behaves like `notify_one`, except that it hints to the scheduler that the
    /// current thread is about to go to sleep, so it should schedule the target thread on the same
    /// CPU.
    #[inline]
    pub fn notify_sync(&self) {
        // SAFETY: `wait_queue_head` points to valid memory.
        unsafe { bindings::__wake_up_sync(self.wait_queue_head.get(), TASK_NORMAL) };
@@ -225,6 +226,7 @@ pub fn notify_sync(&self) {
    ///
    /// This is not 'sticky' in the sense that if no thread is waiting, the notification is lost
    /// completely (as opposed to automatically waking up the next waiter).
    #[inline]
    pub fn notify_one(&self) {
        self.notify(1);
    }
@@ -233,6 +235,7 @@ pub fn notify_one(&self) {
    ///
    /// This is not 'sticky' in the sense that if no thread is waiting, the notification is lost
    /// completely (as opposed to automatically waking up the next waiter).
    #[inline]
    pub fn notify_all(&self) {
        self.notify(0);
    }