From: Alice Ryhl <aliceryhl@google.com>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Wedson Almeida Filho" <wedsonaf@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <benno.lossin@proton.me>,
"Andreas Hindborg" <a.hindborg@samsung.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@redhat.com>, "Will Deacon" <will@kernel.org>,
"Waiman Long" <longman@redhat.com>
Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
Alice Ryhl <aliceryhl@google.com>
Subject: [PATCH 1/2] rust: sync: add `CondVar::notify_sync`
Date: Wed, 06 Dec 2023 10:09:23 +0000 [thread overview]
Message-ID: <20231206-rb-new-condvar-methods-v1-1-33a4cab7fdaa@google.com> (raw)
In-Reply-To: <20231206-rb-new-condvar-methods-v1-0-33a4cab7fdaa@google.com>
Wake up another thread synchronously.
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.
This is used by Rust Binder as a performance optimization. When sending
a transaction to a different process, we usually know which thread will
handle it, so we can schedule that thread for execution next on this
CPU for better cache locality.
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
rust/kernel/sync/condvar.rs | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/rust/kernel/sync/condvar.rs b/rust/kernel/sync/condvar.rs
index b679b6f6dbeb..9861c6749ad0 100644
--- a/rust/kernel/sync/condvar.rs
+++ b/rust/kernel/sync/condvar.rs
@@ -155,6 +155,12 @@ fn notify(&self, count: i32, flags: u32) {
};
}
+ /// Calls the kernel function to notify one thread synchronously.
+ pub fn notify_sync(&self) {
+ // SAFETY: `wait_list` points to valid memory.
+ unsafe { bindings::__wake_up_sync(self.wait_list.get(), bindings::TASK_NORMAL) };
+ }
+
/// Wakes a single waiter up, if any.
///
/// This is not 'sticky' in the sense that if no thread is waiting, the notification is lost
--
2.43.0.rc2.451.g8631bc7472-goog
next prev parent reply other threads:[~2023-12-06 10:09 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 10:09 [PATCH 0/2] Additional CondVar methods needed by Rust Binder Alice Ryhl
2023-12-06 10:09 ` Alice Ryhl [this message]
2023-12-06 15:49 ` [PATCH 1/2] rust: sync: add `CondVar::notify_sync` Martin Rodriguez Reboredo
2023-12-07 20:21 ` Benno Lossin
2023-12-08 7:29 ` Alice Ryhl
2023-12-08 9:30 ` Benno Lossin
2023-12-06 10:09 ` [PATCH 2/2] rust: sync: add `CondVar::wait_timeout` Alice Ryhl
2023-12-06 15:53 ` Martin Rodriguez Reboredo
2023-12-06 16:38 ` Alice Ryhl
2023-12-06 16:30 ` Boqun Feng
2023-12-06 16:39 ` Peter Zijlstra
2023-12-06 16:42 ` Alice Ryhl
2023-12-06 16:53 ` Peter Zijlstra
2023-12-06 17:00 ` Alice Ryhl
2023-12-06 17:05 ` Tiago Lam
2023-12-08 7:37 ` Alice Ryhl
2023-12-08 9:27 ` Benno Lossin
2023-12-12 9:45 ` Alice Ryhl
2023-12-14 19:58 ` Boqun Feng
2023-12-14 20:04 ` [PATCH] rust: sync: Makes `CondVar::wait()` an uninterruptible wait Boqun Feng
2023-12-15 10:27 ` Alice Ryhl
2023-12-15 23:45 ` Boqun Feng
2023-12-18 17:39 ` Benno Lossin
2023-12-18 20:57 ` Boqun Feng
2023-12-15 11:58 ` Tiago Lam
2023-12-20 11:11 ` Benno Lossin
2023-12-21 21:43 ` Miguel Ojeda
2023-12-08 19:04 ` [PATCH 2/2] rust: sync: add `CondVar::wait_timeout` Benno Lossin
2023-12-12 9:51 ` Alice Ryhl
2023-12-12 17:05 ` Benno Lossin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231206-rb-new-condvar-methods-v1-1-33a4cab7fdaa@google.com \
--to=aliceryhl@google.com \
--cc=a.hindborg@samsung.com \
--cc=alex.gaynor@gmail.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mingo@redhat.com \
--cc=ojeda@kernel.org \
--cc=peterz@infradead.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=wedsonaf@gmail.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).