]> www.infradead.org Git - users/dwmw2/linux.git/commit
rust: sync: add `CondVar::wait_timeout`
authorAlice Ryhl <aliceryhl@google.com>
Mon, 8 Jan 2024 14:49:59 +0000 (14:49 +0000)
committerMiguel Ojeda <ojeda@kernel.org>
Sun, 28 Jan 2024 19:54:35 +0000 (20:54 +0100)
commite7b9b1ff1d49e2117f2d78fa5f11b0d006c169f7
tree75cab8e914cb8ff13d964bc303576b7868c00b18
parent82e170874849c4c57dba6b4ee1a08fae1c0a5f02
rust: sync: add `CondVar::wait_timeout`

Sleep on a condition variable with a timeout.

This is used by Rust Binder for process freezing. There, we want to
sleep until the freeze operation completes, but we want to be able to
abort the process freezing if it doesn't complete within some timeout.

Note that it is not enough to avoid jiffies by introducing a variant of
`CondVar::wait_timeout` that takes the timeout in msecs because we need
to be able to restart the sleep with the remaining sleep duration if it
is interrupted, and if the API takes msecs rather than jiffies, then
that would require a conversion roundtrip jiffies->msecs->jiffies that
is best avoided.

Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Reviewed-by: Tiago Lam <tiagolam@gmail.com>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Benno Lossin <benno.lossin@proton.me>
Link: https://lore.kernel.org/r/20240108-rb-new-condvar-methods-v4-3-88e0c871cc05@google.com
[ Added `CondVarTimeoutResult` re-export and fixed typo. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/sync.rs
rust/kernel/sync/condvar.rs
rust/kernel/sync/lock.rs
rust/kernel/task.rs