Class IOURingParams
- java.lang.Object
-
- org.lwjgl.system.Pointer.Default
-
- org.lwjgl.system.Struct
-
- org.lwjgl.system.linux.liburing.IOURingParams
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,org.lwjgl.system.NativeResource
,org.lwjgl.system.Pointer
public class IOURingParams extends org.lwjgl.system.Struct implements org.lwjgl.system.NativeResource
Passed in forsetup
. Copied back with updated info on success.The
flags
,sq_thread_cpu
, andsq_thread_idle
fields are used to configure theio_uring
instance. If noflags
are specified, theio_uring
instance is setup for interrupt driven I/O. I/O may be submitted usingenter
and can be reaped by polling the completion queue.The rest of the fields are filled in by the kernel, and provide the information necessary to memory map the submission queue, completion queue, and the array of submission queue entries.
sq_off
describes the offsets of various ring buffer fields. Taken together,sq_entries
andsq_off
provide all of the information necessary for accessing the submission queue ring buffer and the submission queue entry array. The submission queue can be mapped with a call like:ptr = mmap(0, sq_off.array + sq_entries * sizeof(__u32), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, ring_fd, IORING_OFF_SQ_RING);
where
sq_off
is theio_sqring_offsets
structure, andring_fd
is the file descriptor returned fromsetup
. The addition ofsq_off.array
to the length of the region accounts for the fact that the ring located at the end of the data structure. As an example, the ring buffer head pointer can be accessed by addingsq_off.head
to the address returned frommmap(2)
:head = ptr + sq_off.head;
The array of submission queue entries is mapped with:
sqentries = mmap(0, sq_entries * sizeof(struct io_uring_sqe), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, ring_fd, IORING_OFF_SQES);
The completion queue is described by
cq_entries
andcq_off
. The completion queue is simpler, since the entries are not separated from the queue itself, and can be mapped with:ptr = mmap(0, cq_off.cqes + cq_entries * sizeof(struct io_uring_cqe), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_POPULATE, ring_fd, IORING_OFF_CQ_RING);
Layout
struct io_uring_params { __u32
sq_entries()
; __u32 cq_entries; __u32flags()
; __u32 sq_thread_cpu; __u32 sq_thread_idle; __u32features()
; __u32 wq_fd; __u32 resv[3];struct io_sqring_offsets
sq_off()
;struct io_cqring_offsets
cq_off; }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
IOURingParams.Buffer
An array ofIOURingParams
structs.
-
Field Summary
Fields Modifier and Type Field Description static int
ALIGNOF
The struct alignment in bytes.static int
CQ_ENTRIES
CQ_OFF
FEATURES
FLAGS
RESVThe struct member offsets.static int
SIZEOF
The struct size in bytes.static int
SQ_ENTRIES
SQ_OFF
SQ_THREAD_CPU
SQ_THREAD_IDLE
WQ_FDThe struct member offsets.
-
Constructor Summary
Constructors Constructor Description IOURingParams(java.nio.ByteBuffer container)
Creates aIOURingParams
instance at the current position of the specifiedByteBuffer
container.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static IOURingParams
calloc()
Returns a newIOURingParams
instance allocated withmemCalloc
.static IOURingParams.Buffer
calloc(int capacity)
Returns a newIOURingParams.Buffer
instance allocated withmemCalloc
.static IOURingParams.Buffer
calloc(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.static IOURingParams
calloc(org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.int
cq_entries()
IOURingParams
cq_entries(int value)
Sets the specified value to thecq_entries
field.IOCQRingOffsets
cq_off()
IOURingParams
cq_off(java.util.function.Consumer<IOCQRingOffsets> consumer)
Passes thecq_off
field to the specifiedConsumer
.IOURingParams
cq_off(IOCQRingOffsets value)
Copies the specifiedIOCQRingOffsets
to thecq_off
field.static IOURingParams
create()
Returns a newIOURingParams
instance allocated withBufferUtils
.static IOURingParams.Buffer
create(int capacity)
Returns a newIOURingParams.Buffer
instance allocated withBufferUtils
.static IOURingParams
create(long address)
Returns a newIOURingParams
instance for the specified memory address.static IOURingParams.Buffer
create(long address, int capacity)
Create aIOURingParams.Buffer
instance at the specified memory.static IOURingParams
createSafe(long address)
static IOURingParams.Buffer
createSafe(long address, int capacity)
int
features()
filled in by the kernel, which specifies various features supported by current kernel version.IOURingParams
features(int value)
Sets the specified value to thefeatures()
field.int
flags()
IOURingParams
flags(int value)
Sets the specified value to theflags()
field.static IOURingParams
malloc()
Returns a newIOURingParams
instance allocated withmemAlloc
.static IOURingParams.Buffer
malloc(int capacity)
Returns a newIOURingParams.Buffer
instance allocated withmemAlloc
.static IOURingParams.Buffer
malloc(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams.Buffer
instance allocated on the specifiedMemoryStack
.static IOURingParams
malloc(org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams
instance allocated on the specifiedMemoryStack
.static int
ncq_entries(long struct)
Unsafe version ofcq_entries()
.static void
ncq_entries(long struct, int value)
Unsafe version ofcq_entries
.static IOCQRingOffsets
ncq_off(long struct)
Unsafe version ofcq_off()
.static void
ncq_off(long struct, IOCQRingOffsets value)
Unsafe version ofcq_off
.static int
nfeatures(long struct)
Unsafe version offeatures()
.static void
nfeatures(long struct, int value)
Unsafe version offeatures
.static int
nflags(long struct)
Unsafe version offlags()
.static void
nflags(long struct, int value)
Unsafe version offlags
.static java.nio.IntBuffer
nresv(long struct)
Unsafe version ofresv()
.static int
nresv(long struct, int index)
Unsafe version ofresv
.static void
nresv(long struct, int index, int value)
Unsafe version ofresv
.static void
nresv(long struct, java.nio.IntBuffer value)
Unsafe version ofresv
.static int
nsq_entries(long struct)
Unsafe version ofsq_entries()
.static void
nsq_entries(long struct, int value)
Unsafe version ofsq_entries
.static IOSQRingOffsets
nsq_off(long struct)
Unsafe version ofsq_off()
.static void
nsq_off(long struct, IOSQRingOffsets value)
Unsafe version ofsq_off
.static int
nsq_thread_cpu(long struct)
Unsafe version ofsq_thread_cpu()
.static void
nsq_thread_cpu(long struct, int value)
Unsafe version ofsq_thread_cpu
.static int
nsq_thread_idle(long struct)
Unsafe version ofsq_thread_idle()
.static void
nsq_thread_idle(long struct, int value)
Unsafe version ofsq_thread_idle
.static int
nwq_fd(long struct)
Unsafe version ofwq_fd()
.static void
nwq_fd(long struct, int value)
Unsafe version ofwq_fd
.java.nio.IntBuffer
resv()
int
resv(int index)
IOURingParams
resv(int index, int value)
Sets the specified value at the specified index of theresv
field.IOURingParams
resv(java.nio.IntBuffer value)
Copies the specifiedIntBuffer
to theresv
field.IOURingParams
set(int sq_entries, int cq_entries, int flags, int sq_thread_cpu, int sq_thread_idle, int features, int wq_fd, java.nio.IntBuffer resv, IOSQRingOffsets sq_off, IOCQRingOffsets cq_off)
Initializes this struct with the specified values.IOURingParams
set(IOURingParams src)
Copies the specified struct data to this struct.int
sizeof()
int
sq_entries()
the number of submission queue entries allocatedIOURingParams
sq_entries(int value)
Sets the specified value to thesq_entries()
field.IOSQRingOffsets
sq_off()
Theflags
field is used by the kernel to communicate state information to the application.IOURingParams
sq_off(java.util.function.Consumer<IOSQRingOffsets> consumer)
Passes thesq_off()
field to the specifiedConsumer
.IOURingParams
sq_off(IOSQRingOffsets value)
Copies the specifiedIOSQRingOffsets
to thesq_off()
field.int
sq_thread_cpu()
IOURingParams
sq_thread_cpu(int value)
Sets the specified value to thesq_thread_cpu
field.int
sq_thread_idle()
IOURingParams
sq_thread_idle(int value)
Sets the specified value to thesq_thread_idle
field.int
wq_fd()
IOURingParams
wq_fd(int value)
Sets the specified value to thewq_fd
field.
-
-
-
Constructor Detail
-
IOURingParams
public IOURingParams(java.nio.ByteBuffer container)
Creates aIOURingParams
instance at the current position of the specifiedByteBuffer
container. Changes to the buffer's content will be visible to the struct instance and vice versa.The created instance holds a strong reference to the container object.
-
-
Method Detail
-
sizeof
public int sizeof()
- Specified by:
sizeof
in classorg.lwjgl.system.Struct
-
sq_entries
public int sq_entries()
the number of submission queue entries allocated
-
cq_entries
public int cq_entries()
- Returns:
- the value of the
cq_entries
field.
-
flags
public int flags()
-
sq_thread_cpu
public int sq_thread_cpu()
- Returns:
- the value of the
sq_thread_cpu
field.
-
sq_thread_idle
public int sq_thread_idle()
- Returns:
- the value of the
sq_thread_idle
field.
-
features
public int features()
filled in by the kernel, which specifies various features supported by current kernel version. One or more of:FEAT_SINGLE_MMAP
FEAT_NODROP
FEAT_SUBMIT_STABLE
FEAT_RW_CUR_POS
FEAT_CUR_PERSONALITY
FEAT_FAST_POLL
FEAT_POLL_32BITS
FEAT_SQPOLL_NONFIXED
FEAT_EXT_ARG
FEAT_NATIVE_WORKERS
FEAT_RSRC_TAGS
FEAT_CQE_SKIP
-
wq_fd
public int wq_fd()
- Returns:
- the value of the
wq_fd
field.
-
resv
public java.nio.IntBuffer resv()
- Returns:
- a
IntBuffer
view of theresv
field.
-
resv
public int resv(int index)
- Returns:
- the value at the specified index of the
resv
field.
-
sq_off
public IOSQRingOffsets sq_off()
Theflags
field is used by the kernel to communicate state information to the application. Currently, it is used to inform the application when a call toenter
is necessary.The
dropped
member is incremented for each invalid submission queue entry encountered in the ring buffer.The
head
andtail
track the ring buffer state. Thetail
is incremented by the application when submitting new I/O, and thehead
is incremented by the kernel when the I/O has been successfully submitted. Determining the index of thehead
ortail
into the ring is accomplished by applying a mask:index = tail & ring_mask;
-
cq_off
public IOCQRingOffsets cq_off()
- Returns:
- a
IOCQRingOffsets
view of thecq_off
field.
-
sq_entries
public IOURingParams sq_entries(int value)
Sets the specified value to thesq_entries()
field.
-
cq_entries
public IOURingParams cq_entries(int value)
Sets the specified value to thecq_entries
field.
-
flags
public IOURingParams flags(int value)
Sets the specified value to theflags()
field.
-
sq_thread_cpu
public IOURingParams sq_thread_cpu(int value)
Sets the specified value to thesq_thread_cpu
field.
-
sq_thread_idle
public IOURingParams sq_thread_idle(int value)
Sets the specified value to thesq_thread_idle
field.
-
features
public IOURingParams features(int value)
Sets the specified value to thefeatures()
field.
-
wq_fd
public IOURingParams wq_fd(int value)
Sets the specified value to thewq_fd
field.
-
resv
public IOURingParams resv(java.nio.IntBuffer value)
Copies the specifiedIntBuffer
to theresv
field.
-
resv
public IOURingParams resv(int index, int value)
Sets the specified value at the specified index of theresv
field.
-
sq_off
public IOURingParams sq_off(IOSQRingOffsets value)
Copies the specifiedIOSQRingOffsets
to thesq_off()
field.
-
sq_off
public IOURingParams sq_off(java.util.function.Consumer<IOSQRingOffsets> consumer)
Passes thesq_off()
field to the specifiedConsumer
.
-
cq_off
public IOURingParams cq_off(IOCQRingOffsets value)
Copies the specifiedIOCQRingOffsets
to thecq_off
field.
-
cq_off
public IOURingParams cq_off(java.util.function.Consumer<IOCQRingOffsets> consumer)
Passes thecq_off
field to the specifiedConsumer
.
-
set
public IOURingParams set(int sq_entries, int cq_entries, int flags, int sq_thread_cpu, int sq_thread_idle, int features, int wq_fd, java.nio.IntBuffer resv, IOSQRingOffsets sq_off, IOCQRingOffsets cq_off)
Initializes this struct with the specified values.
-
set
public IOURingParams set(IOURingParams src)
Copies the specified struct data to this struct.- Parameters:
src
- the source struct- Returns:
- this struct
-
malloc
public static IOURingParams malloc()
Returns a newIOURingParams
instance allocated withmemAlloc
. The instance must be explicitly freed.
-
calloc
public static IOURingParams calloc()
Returns a newIOURingParams
instance allocated withmemCalloc
. The instance must be explicitly freed.
-
create
public static IOURingParams create()
Returns a newIOURingParams
instance allocated withBufferUtils
.
-
create
public static IOURingParams create(long address)
Returns a newIOURingParams
instance for the specified memory address.
-
createSafe
@Nullable public static IOURingParams createSafe(long address)
-
malloc
public static IOURingParams.Buffer malloc(int capacity)
Returns a newIOURingParams.Buffer
instance allocated withmemAlloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
calloc
public static IOURingParams.Buffer calloc(int capacity)
Returns a newIOURingParams.Buffer
instance allocated withmemCalloc
. The instance must be explicitly freed.- Parameters:
capacity
- the buffer capacity
-
create
public static IOURingParams.Buffer create(int capacity)
Returns a newIOURingParams.Buffer
instance allocated withBufferUtils
.- Parameters:
capacity
- the buffer capacity
-
create
public static IOURingParams.Buffer create(long address, int capacity)
Create aIOURingParams.Buffer
instance at the specified memory.- Parameters:
address
- the memory addresscapacity
- the buffer capacity
-
createSafe
@Nullable public static IOURingParams.Buffer createSafe(long address, int capacity)
-
malloc
public static IOURingParams malloc(org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocate
-
calloc
public static IOURingParams calloc(org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocate
-
malloc
public static IOURingParams.Buffer malloc(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams.Buffer
instance allocated on the specifiedMemoryStack
.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
calloc
public static IOURingParams.Buffer calloc(int capacity, org.lwjgl.system.MemoryStack stack)
Returns a newIOURingParams.Buffer
instance allocated on the specifiedMemoryStack
and initializes all its bits to zero.- Parameters:
stack
- the stack from which to allocatecapacity
- the buffer capacity
-
nsq_entries
public static int nsq_entries(long struct)
Unsafe version ofsq_entries()
.
-
ncq_entries
public static int ncq_entries(long struct)
Unsafe version ofcq_entries()
.
-
nflags
public static int nflags(long struct)
Unsafe version offlags()
.
-
nsq_thread_cpu
public static int nsq_thread_cpu(long struct)
Unsafe version ofsq_thread_cpu()
.
-
nsq_thread_idle
public static int nsq_thread_idle(long struct)
Unsafe version ofsq_thread_idle()
.
-
nfeatures
public static int nfeatures(long struct)
Unsafe version offeatures()
.
-
nwq_fd
public static int nwq_fd(long struct)
Unsafe version ofwq_fd()
.
-
nresv
public static java.nio.IntBuffer nresv(long struct)
Unsafe version ofresv()
.
-
nresv
public static int nresv(long struct, int index)
Unsafe version ofresv
.
-
nsq_off
public static IOSQRingOffsets nsq_off(long struct)
Unsafe version ofsq_off()
.
-
ncq_off
public static IOCQRingOffsets ncq_off(long struct)
Unsafe version ofcq_off()
.
-
nsq_entries
public static void nsq_entries(long struct, int value)
Unsafe version ofsq_entries
.
-
ncq_entries
public static void ncq_entries(long struct, int value)
Unsafe version ofcq_entries
.
-
nflags
public static void nflags(long struct, int value)
Unsafe version offlags
.
-
nsq_thread_cpu
public static void nsq_thread_cpu(long struct, int value)
Unsafe version ofsq_thread_cpu
.
-
nsq_thread_idle
public static void nsq_thread_idle(long struct, int value)
Unsafe version ofsq_thread_idle
.
-
nfeatures
public static void nfeatures(long struct, int value)
Unsafe version offeatures
.
-
nwq_fd
public static void nwq_fd(long struct, int value)
Unsafe version ofwq_fd
.
-
nresv
public static void nresv(long struct, java.nio.IntBuffer value)
Unsafe version ofresv
.
-
nresv
public static void nresv(long struct, int index, int value)
Unsafe version ofresv
.
-
nsq_off
public static void nsq_off(long struct, IOSQRingOffsets value)
Unsafe version ofsq_off
.
-
ncq_off
public static void ncq_off(long struct, IOCQRingOffsets value)
Unsafe version ofcq_off
.
-
-