1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.channel.uring;
17
18
19 final class RingBuffer {
20 private final SubmissionQueue ioUringSubmissionQueue;
21 private final CompletionQueue ioUringCompletionQueue;
22 private final int features;
23
24 RingBuffer(SubmissionQueue ioUringSubmissionQueue,
25 CompletionQueue ioUringCompletionQueue, int features) {
26 this.ioUringSubmissionQueue = ioUringSubmissionQueue;
27 this.ioUringCompletionQueue = ioUringCompletionQueue;
28 this.features = features;
29 }
30
31
32
33
34
35 void enable() {
36
37 Native.ioUringRegisterEnableRings(fd());
38
39
40 ioUringSubmissionQueue.tryRegisterRingFd();
41 }
42
43 int fd() {
44 return ioUringCompletionQueue.ringFd;
45 }
46
47 int features() {
48 return features;
49 }
50
51 SubmissionQueue ioUringSubmissionQueue() {
52 return this.ioUringSubmissionQueue;
53 }
54
55 CompletionQueue ioUringCompletionQueue() {
56 return this.ioUringCompletionQueue;
57 }
58
59 void close() {
60 Native.ioUringExit(
61 ioUringSubmissionQueue.submissionQueueArrayAddress,
62 ioUringSubmissionQueue.ringEntries,
63 ioUringSubmissionQueue.ringAddress,
64 ioUringSubmissionQueue.ringSize,
65 ioUringCompletionQueue.ringAddress,
66 ioUringCompletionQueue.ringSize,
67 ioUringSubmissionQueue.ringFd,
68 ioUringSubmissionQueue.enterRingFd);
69 }
70 }