1 # io_uring prototypes
 2 
 3 ## 1. Poller implementation
 4 
 5 Simple Poller implementation that uses `IORING_OP_POLL_ADD` to poll a file descriptor.
 6 Selected when run with `-Djdk.io_uring=true`.
 7 
 8 Functional, and suited to pollerMode=3 (`io_uring` instance per carrier thread),
 9 but will not perform as well as the `epoll` based Poller. Batching of submits, to
10 reduce calls to `io_uring_enter`, was prototyped but the batching added latency
11 and reduced performance overall.
12 
13 
14 ## 2. Poller implementation with submission queue polling
15 
16 (not in loom repo at this time)
17 
18 Builds on prototype 1 but uses `IORING_SETUP_SQPOLL` to use a kernel thread to poll
19 the submission queue.
20 
21 ## 3. Blocking read/write implemented on async readv/writev
22 
23 (not in loom repo at this time)
24 
25 Uses `IORING_OP_READV` and `IORING_OP_WRITEV` with caller owned buffer and iovec.
26 
27 
28 ## 4. Blocking read/write implemented on async readv/writev with registered buffers
29 
30 (not in loom repo at this time)
31 
32 Uses `IORING_OP_READ_FIXED` and `IORING_OP_WRITE_FIXED` with buffers that are
33 registered with kernel.