Downgrade context sigcontrol to read

This commit is contained in:
Wildan M
2026-04-29 21:48:31 +07:00
parent ba28216ae8
commit 844f393ae8
7 changed files with 25 additions and 17 deletions
+8
View File
@@ -620,6 +620,14 @@ impl<'a, L: Level, T> RwLockWriteGuard<'a, L, T> {
drop(self.inner);
self.lock_token
}
/// Upgrade to RO lock
pub fn downgrade(self) -> RwLockReadGuard<'a, L, T> {
RwLockReadGuard {
inner: self.inner.downgrade(),
lock_token: self.lock_token,
}
}
}
impl<L: Level, T> core::ops::Deref for RwLockWriteGuard<'_, L, T> {
+2 -2
View File
@@ -80,13 +80,13 @@ impl WaitCondition {
let mut preempt = PreemptGuardL2::new(&current_context_ref, &mut token);
let token = preempt.token();
{
let mut context = current_context_ref.write(token.token());
let context = current_context_ref.upgradeable_read(token.token());
if let Some((control, pctl, _)) = context.sigcontrol()
&& control.currently_pending_unblocked(pctl) != 0
{
return false;
}
context.block(reason);
context.upgrade().block(reason);
}
self.contexts