Skip to main content

dope_sys/ring/create/
acquire.rs

1use std::num;
2
3use o3::base::num::bounded;
4
5use crate::{engine::ring::create::Failure, memory, ring::create::Create};
6
7type Resources<S, L, P, R> =
8    Failure<<S as Create>::Setup, <S as Create>::Map, P, <S as Acquire<L, P>>::Resources, R>;
9
10type Acquired<S, L, P, R> = Result<(S, Option<<S as Acquire<L, P>>::Range>), Resources<S, L, P, R>>;
11
12/// Acquires the ring and retains every partially admitted native resource.
13pub trait Acquire<L, P: Copy>: Create {
14    type Range;
15    type Resources: memory::Cleanup<P>;
16
17    fn acquire<const FILES: u32, R>(
18        submit: num::NonZero<u32>,
19        complete: num::NonZero<u32>,
20        defer: bool,
21        files: bounded::U32<1, FILES>,
22        range: Option<bounded::U32<1, { 1 << 24 }>>,
23    ) -> Acquired<Self, L, P, R>;
24}