linux/rust/kernel
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
..
init rust: init: add stack_pin_init! macro 2023-04-12 18:41:05 +02:00
sync rust: lock: add Guard::do_unlocked 2023-04-22 01:46:30 +02:00
allocator.rs
build_assert.rs rust: build_assert: add build_{error,assert}! macros 2022-12-04 01:59:16 +01:00
error.rs rust: error: Add from_result() helper 2023-04-12 18:41:04 +02:00
init.rs rust: init: broaden the blanket impl of Init 2023-04-21 00:35:26 +02:00
lib.rs rust: add basic Task 2023-04-22 00:20:00 +02:00
prelude.rs rust: introduce current 2023-04-22 00:20:00 +02:00
print.rs rust: print: avoid evaluating arguments in pr_* macros in unsafe blocks 2023-01-16 00:54:35 +01:00
static_assert.rs rust: static_assert: add static_assert! macro 2022-12-04 01:59:16 +01:00
std_vendor.rs rust: std_vendor: add dbg! macro based on std's one 2022-12-04 01:59:16 +01:00
str.rs rust: str: add fmt! macro 2022-12-04 01:59:16 +01:00
sync.rs rust: sync: introduce LockedBy 2023-04-22 00:20:00 +02:00
task.rs rust: introduce current 2023-04-22 00:20:00 +02:00
types.rs rust: introduce ARef 2023-04-22 00:20:00 +02:00