mirror of
https://github.com/ii64/gouring.git
synced 2025-03-29 01:27:20 +01:00
95 lines
2.6 KiB
Go
95 lines
2.6 KiB
Go
package gouring
|
|
|
|
import "unsafe"
|
|
|
|
const (
|
|
SizeofUnsigned = unsafe.Sizeof(uint32(0))
|
|
SizeofUint32 = unsafe.Sizeof(uint32(0))
|
|
SizeofIoUringSqe = unsafe.Sizeof(IoUringSqe{})
|
|
Align128IoUringSqe = 64
|
|
SizeofIoUringCqe = unsafe.Sizeof(IoUringCqe{})
|
|
Align32IoUringCqe = SizeofIoUringCqe
|
|
|
|
SizeofIoUringProbe = unsafe.Sizeof(IoUringProbe{})
|
|
SizeofIoUringProbeOp = unsafe.Sizeof(IoUringProbeOp{})
|
|
SizeofIoUringBufRing = unsafe.Sizeof(IoUringBufRing{})
|
|
SizeofIoUringBuf = unsafe.Sizeof(IoUringBuf{})
|
|
)
|
|
|
|
func _SizeChecker() {
|
|
var x [1]struct{}
|
|
_ = x[SizeofIoUringSqe-64]
|
|
_ = x[SizeofIoUringCqe-16]
|
|
_ = x[SizeofIoUringProbe-16]
|
|
_ = x[SizeofIoUringProbeOp-8]
|
|
_ = x[SizeofIoUringBufRing-16]
|
|
_ = x[SizeofIoUringBuf-16]
|
|
}
|
|
|
|
type IoUring struct {
|
|
Sq IoUringSq
|
|
Cq IoUringCq
|
|
Flags uint32
|
|
RingFd int
|
|
|
|
Features uint32
|
|
EnterRingFd int
|
|
IntFlags uint8
|
|
|
|
pad [3]uint8
|
|
pad2 uint32
|
|
}
|
|
|
|
type IoUringSq struct {
|
|
khead unsafe.Pointer // *uint32
|
|
ktail unsafe.Pointer // *uint32
|
|
kringMask unsafe.Pointer // *uint32
|
|
kringEntries unsafe.Pointer // *uint32
|
|
kflags unsafe.Pointer // *uint32
|
|
kdropped unsafe.Pointer // *uint32
|
|
|
|
Array uint32Array //ptr arith
|
|
Sqes ioUringSqeArray //ptr arith
|
|
|
|
SqeHead uint32
|
|
SqeTail uint32
|
|
|
|
RingSz uint32
|
|
RingPtr unsafe.Pointer
|
|
|
|
RingMask, RingEntries uint32
|
|
|
|
pad [2]uint32
|
|
}
|
|
|
|
func (sq *IoUringSq) _KHead() *uint32 { return (*uint32)(sq.khead) }
|
|
func (sq *IoUringSq) _KTail() *uint32 { return (*uint32)(sq.ktail) }
|
|
func (sq *IoUringSq) _KRingMask() *uint32 { return (*uint32)(sq.kringMask) }
|
|
func (sq *IoUringSq) _KRingEntries() *uint32 { return (*uint32)(sq.kringEntries) }
|
|
func (sq *IoUringSq) _KFlags() *uint32 { return (*uint32)(sq.kflags) }
|
|
func (sq *IoUringSq) _KDropped() *uint32 { return (*uint32)(sq.kdropped) }
|
|
|
|
type IoUringCq struct {
|
|
khead unsafe.Pointer // *uint32
|
|
ktail unsafe.Pointer // *uint32
|
|
kringMask unsafe.Pointer // *uint32
|
|
kringEntries unsafe.Pointer // *uint32
|
|
kflags unsafe.Pointer // *uint32
|
|
koverflow unsafe.Pointer // *uint32
|
|
|
|
Cqes ioUringCqeArray //ptr arith
|
|
|
|
RingSz uint32
|
|
RingPtr unsafe.Pointer
|
|
|
|
RingMask, RingEntries uint32
|
|
|
|
pad [2]uint32
|
|
}
|
|
|
|
func (cq *IoUringCq) _KHead() *uint32 { return (*uint32)(cq.khead) }
|
|
func (cq *IoUringCq) _KTail() *uint32 { return (*uint32)(cq.ktail) }
|
|
func (cq *IoUringCq) _KRingMask() *uint32 { return (*uint32)(cq.kringMask) }
|
|
func (cq *IoUringCq) _KRingEntries() *uint32 { return (*uint32)(cq.kringEntries) }
|
|
func (cq *IoUringCq) _KFlags() *uint32 { return (*uint32)(cq.kflags) }
|
|
func (cq *IoUringCq) _KOverflow() *uint32 { return (*uint32)(cq.koverflow) }
|