linux/rust
Wedson Almeida Filho e32cca32c3 rust: lock: add Guard::do_unlocked
It releases the lock, executes some function provided by the caller,
then reacquires the lock. This is preparation for the implementation of
condvars, which will sleep after between unlocking and relocking.

We need an explicit `relock` method for primitives like `SpinLock` that
have an irqsave variant: we use the guard state to determine if the lock
was originally acquired with the regular `lock` function or
`lock_irqsave`.

Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Signed-off-by: Wedson Almeida Filho <walmeida@microsoft.com>
Link: https://lore.kernel.org/rust-for-linux/20230412121431.41627-1-wedsonaf@gmail.com/
[ Removed the irqsave bits as discussed. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2023-04-22 01:46:30 +02:00
..
alloc rust: alloc: vec: Add some try_* methods we need 2023-04-10 23:55:43 +02:00
bindings rust: add basic Task 2023-04-22 00:20:00 +02:00
kernel rust: lock: add Guard::do_unlocked 2023-04-22 01:46:30 +02:00
macros rust: init: add PinnedDrop trait and macros 2023-04-12 18:41:05 +02:00
.gitignore kbuild: rust: move rust/target.json to scripts/ 2023-01-22 23:43:33 +09:00
bindgen_parameters rust: bindgen: Add alt_instr as opaque type 2023-03-02 22:44:15 +01:00
build_error.rs rust: add build_error crate 2022-12-04 01:59:16 +01:00
compiler_builtins.rs rust: compiler_builtins: make stubs non-global 2023-01-16 21:04:34 +01:00
exports.c rust: add build_error crate 2022-12-04 01:59:16 +01:00
helpers.c rust: introduce current 2023-04-22 00:20:00 +02:00
Makefile Kbuild updates for v6.3 2023-02-26 11:53:25 -08:00