1mod uring;
2use std::{convert::Infallible, mem, num};
3
4use dope_sys::{
5 Errno, engine,
6 engine::{
7 admit,
8 ring::{Context, config, config::Config, create::Failure},
9 },
10 io::{
11 file, pipe,
12 reactor::{complete, complete::Observe, ready::delivery, submit},
13 socket::{
14 self, accept, gso, option,
15 option::{fast, tuning, tuning::device::Source},
16 record,
17 route::{self, install},
18 },
19 },
20 kernel,
21 kernel::errno,
22 memory,
23 memory::buffer::{self, provided},
24 probe,
25 probe::{accept::Validate, cleanup::Rejection, receive, session},
26 ring,
27 ring::{create, enter, map, prepare, ready},
28 table::{
29 permit,
30 token::{self, Codec, host},
31 },
32 thread::affinity,
33};
34use driver::Engine;
35use o3::{base::num::bounded, buffer::bytes::bounded::MAX};
36pub(crate) use observed::Observed;
37use reactor::{
38 buffers,
39 ring::{Recover, Released, Resources},
40 sq,
41};
42pub(crate) use reactor::{register::Register, ring::Ring};
43pub(crate) use sockets::Opened;
44pub use uring::Uring;
45
46use crate::{
47 driver::{
48 Closing, Turn,
49 poll::Poll,
50 token::Encoded,
51 tuning::{State, Table},
52 },
53 reactor::{
54 buffers::{Canary, Cleanup, Entry, Payload, Producer, Selected},
55 cq,
56 cq::packet,
57 op,
58 ring::{Accepted, Enter, Outcome, Range, Ready, Session, Waiting},
59 sq::Borrowed,
60 types,
61 },
62 sockets::{Control, Installer, Operation},
63 system::{Cpus, Fifo, Timer},
64};
65
66mod reactor;
67
68mod driver;
69
70mod error;
71mod observed;
72mod system;
73
74mod sockets;
75
76type BufferBuild<L, P> = buffers::Build<L, P>;
77
78type Primary = create::Primary<
79 create::Cause<kernel::Errno<error::Setup>, kernel::Errno<error::Map>>,
80 kernel::Errno<error::Register<20>>,
81 kernel::Errno<error::Register<22>>,
82>;
83type Fault<T> = create::Failure<
84 map::Storage<kernel::Errno<error::Unmap>>,
85 probe::Cause<
86 <<T as Codec>::Context as host::Context>::Probe,
87 Observed<T>,
88 kernel::Errno<error::Enter>,
89 >,
90>;
91
92type Mapping = map::Map<kernel::Errno<error::Map>>;
93type Unmap = map::Failure<kernel::Errno<error::Unmap>>;
94
95type Admission = prepare::Rejection<
96 kernel::Errno<error::Register<24>>,
97 kernel::Errno<error::Register<13>>,
98 kernel::Errno<error::Register<25>>,
99>;
100
101type Host<C> = <<C as Context>::Token as token::Codec>::Context;
102type Update = kernel::Errno<error::Register<6>>;
103type Cause<C> = <Host<C> as probe::Build<Update>>::Primary;
104type Removal<C> = <Host<C> as probe::Build<Update>>::Removed;
105type Retained<C> = Resources<<C as Context>::Token, <C as Context>::Layout, Cause<C>>;
106type Recovery<C> =
107 Result<Cause<C>, Recover<<C as Context>::Token, <C as Context>::Layout, Cause<C>>>;
108type Removed<C> = Result<
109 (Removal<C>, sq::Fixed),
110 Released<<C as Context>::Token, <C as Context>::Layout, Removal<C>>,
111>;
112type Created<C> = Failure<
113 <Ring<<C as Context>::Token> as create::Create>::Setup,
114 <Ring<<C as Context>::Token> as create::Create>::Map,
115 Cause<C>,
116 Retained<C>,
117 Removed<C>,
118>;
119
120type Built<C, G> = (
121 Engine<C>,
122 buffers::raw::Context<<C as Context>::Layout>,
123 <Uring as permit::Source>::Queue<<C as Config<G>>::Key, <C as Config<G>>::Index>,
124);
125
126mod raw;