pagers_core/ops/
lockall.rs1use crate::mincore::PageMap;
2
3use super::lock::{Lock, LockedFile};
4use super::{FileContext, Op, ResidencyEffect};
5use crate::mlock;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct Lockall;
11
12impl Op for Lockall {
13 const LABEL: &str = "locked";
14 const EFFECT: ResidencyEffect = ResidencyEffect::Populate;
15 type Output = LockedFile;
16
17 fn execute<PM: PageMap + Sync>(&self, ctx: &FileContext<'_, PM>) -> crate::Result<LockedFile> {
18 Lock.execute(ctx)
19 }
20
21 fn finish(&self) -> crate::Result<()> {
22 mlock::mlockall_current()?;
23 Ok(())
24 }
25}