iouring

package
v0.4.0-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CQEFBuffer uint32 = 1 << iota
	CQEFMore
	CQEFSockNonempty
	CQEFNotif
)
View Source
const (
	EnterGetEvents uint32 = 1 << iota
	EnterSQWakeup
	EnterSQWait
	EnterExtArg
	EnterRegisteredRing
)
View Source
const (
	OpNop uint8 = iota
	OpReadv
	OpWritev
	OpFsync
	OpReadFixed
	OpWriteFixed
	OpPollAdd
	OpPollRemove
	OpSyncFileRange
	OpSendmsg
	OpRecvmsg
	OpTimeout
	OpTimeoutRemove
	OpAccept
	OpAsyncCancel
	OpLinkTimeout
	OpConnect
	OpFallocate
	OpOpenat
	OpClose
	OpFilesUpdate
	OpStatx
	OpRead
	OpWrite
	OpFadvise
	OpMadvise
	OpSend
	OpRecv
	OpOpenat2
	OpEpollCtl
	OpSplice
	OpProvideBuffers
	OpRemoveBuffers
	OpTee
	OpShutdown
	OpRenameat
	OpUnlinkat
	OpMkdirat
	OpSymlinkat
	OpLinkat
	OpMsgRing
	OpFsetxattr
	OpSetxattr
	OpFgetxattr
	OpGetxattr
	OpSocket
	OpUringCmd
	OpSendZC
	OpSendMsgZC

	OpLast
)
View Source
const (
	RestrictionRegisterOp uint32 = iota
	RestrictionSQEOp
	RestrictionSQEFlagsAllowed
	RestrictionSQEFlagsRequired

	RestrictionLast
)
View Source
const (
	RegisterBuffers uint = iota
	UnregisterBuffers

	RegisterFiles
	UnregisterFiles

	RegisterEventFD
	UnregisterEventFD

	RegisterFilesUpdate
	RegisterEventFDAsync
	RegisterProbe

	RegisterPersonality
	UnregisterPersonality

	RegisterRestrictions
	UnregisterEnableRings

	RegisterFiles2
	RegisterFilesUpdate2
	RegisterBuffers2
	RegisterBuffersUpdate

	RegisterIOWQAff
	UnregisterIOWQAff

	RegisterIOWQMaxWorkers

	RegisterRingFDs
	UnregisterRingFDs

	RegisterPbufRing
	UnregisterPbufRing

	RegisterSyncCancel

	RegisterFileAllocRange

	RegisterLast
)
View Source
const (
	IOWQBound uint = iota
	IOWQUnbound
)
View Source
const (
	SQNeedWakeup uint32 = 1 << iota
	SQCQOverflow
	SQTaskrun
)
View Source
const (
	SetupIOPoll uint32 = 1 << iota
	SetupSQPoll
	SetupSQAff
	SetupSQSize
	SetupClamp
	SetupAttachWQ
	SetupRDisabled
	SetupSubmitAll
	SetupCoopTaskrun
	SetupTaskrunFlag
	SetupSQE128
	SetupSQE32
	SetupSingleIssuer
	SetupDeferTaskrun
)
View Source
const (
	FeatSingleMMap uint32 = 1 << iota
	FeatNoDrop
	FeatSubmitStable
	FeatRWCurPos
	FeatCurPersonality
	FeatFastPoll
	FeatPoll32Bits
	FeatSQPollNonfixed
	FeatExtArg
	FeatNativeWorkers
	FeatRcrcTags
	FeatCQESkip
	FeatLinkedFile
)
View Source
const (
	SqeFixedFile uint8 = 1 << iota
	SqeIODrain
	SqeIOLink
	SqeIOHardlink
	SqeAsync
	SqeBufferSelect
	SqeCQESkipSuccess
)
View Source
const (
	TimeoutAbs uint32 = 1 << iota
	TimeoutUpdate
	TimeoutBoottime
	TimeoutRealtime
	LinkTimeoutUpdate
	TimeoutETimeSuccess
	TimeoutClockMask  = TimeoutBoottime | TimeoutRealtime
	TimeoutUpdateMask = TimeoutUpdate | LinkTimeoutUpdate
)
View Source
const (
	PollAddMulti uint32 = 1 << iota
	PollUpdateEvents
	PollUpdateUserData
	PollAddLevel
)
View Source
const (
	AsyncCancelAll uint32 = 1 << iota
	AsyncCancelFd
	AsyncCancelAny
	AsyncCancelFdFixed
)
View Source
const (
	RecvsendPollFirst uint16 = 1 << iota
	RecvMultishot
	RecvsendFixedBuf
)
View Source
const (
	MsgData uint32 = iota
	MsgSendFd
)
View Source
const (
	AcceptMultishot uint16 = 1 << iota
)
View Source
const CQEBufferShift uint32 = 16
View Source
const CQEventFdDisabled uint32 = 1 << 0
View Source
const FileIndexAlloc uint = 4294967295
View Source
const FsyncDatasync uint32 = 1 << 0
View Source
const (
	IntFlagRegRing uint8 = 1
)
View Source
const (
	MsgRingCQESkip uint32 = 1 << iota
)
View Source
const RegisterFilesSkip int = -2
View Source
const (
	RsrcRegisterSparse uint32 = 1 << iota
)
View Source
const SpliceFFdInFixed uint32 = 1 << 31

Variables

View Source
var (
	ErrNotSupported       = errors.New("not supported")
	ErrTimerExpired       = errors.New("timer expired")
	ErrInterrupredSyscall = errors.New("interrupred system call")
	ErrAgain              = errors.New("try again")
	ErrSQEOverflow        = errors.New("SQE overflow")
)

Functions

func CheckAvailableFeatures

func CheckAvailableFeatures() (string, error)

func ErrorSQEOverflow

func ErrorSQEOverflow(overflowValue uint32) error

func IsOpSupported

func IsOpSupported(opCode uint8) (bool, error)

Types

type CQRingOffsets

type CQRingOffsets struct {
	// contains filtered or unexported fields
}

type CompletionQueue

type CompletionQueue struct {
	// contains filtered or unexported fields
}

type CompletionQueueEvent

type CompletionQueueEvent struct {
	// contains filtered or unexported fields
}

func (*CompletionQueueEvent) Flags

func (c *CompletionQueueEvent) Flags() uint32

func (*CompletionQueueEvent) FlagsString

func (c *CompletionQueueEvent) FlagsString() string

func (*CompletionQueueEvent) Res

func (c *CompletionQueueEvent) Res() int32

func (*CompletionQueueEvent) UserData

func (c *CompletionQueueEvent) UserData() uint64

type FilesUpdate

type FilesUpdate struct {
	Offset uint32
	Resv   uint32
	Fds    uint64
}

type Params

type Params struct {
	// contains filtered or unexported fields
}

type Probe

type Probe struct {
	LastOp uint8
	OpsLen uint8
	Res    uint16
	Res2   [3]uint32
	Ops    [probeOpsSize]probeOp
}

func (Probe) IsSupported

func (p Probe) IsSupported(op uint8) bool

type Ring

type Ring struct {
	// contains filtered or unexported fields
}

func CreateRing

func CreateRing(sqeSize uint) (*Ring, error)

func (*Ring) CQAdvance

func (ring *Ring) CQAdvance(numberOfCQEs uint32)

func (*Ring) CQESeen

func (ring *Ring) CQESeen(event *CompletionQueueEvent)

func (*Ring) Fd

func (ring *Ring) Fd() int

func (*Ring) FlushSQ

func (ring *Ring) FlushSQ() uint32

func (*Ring) GetSQE

func (ring *Ring) GetSQE() (*SubmissionQueueEntry, error)

func (*Ring) PeekBatchCQE

func (ring *Ring) PeekBatchCQE(cqes []*CompletionQueueEvent) int

func (*Ring) QueueExit

func (ring *Ring) QueueExit() error

func (*Ring) QueueInit

func (ring *Ring) QueueInit(entries uint, flags uint32) error

func (*Ring) QueueInitParams

func (ring *Ring) QueueInitParams(entries uint) error

func (*Ring) Register

func (ring *Ring) Register(op uint, arg unsafe.Pointer, nrArgs int) (uintptr, uintptr, error)

func (*Ring) RegisterProbe

func (ring *Ring) RegisterProbe() (*Probe, error)

func (*Ring) Submit

func (ring *Ring) Submit() (uint, error)

func (*Ring) SubmitAndWaitInternal

func (ring *Ring) SubmitAndWaitInternal(waitNr uint64) (uint, error)

func (*Ring) SubmitAndWaitTimeout

func (ring *Ring) SubmitAndWaitTimeout(waitNr uint32, timeSpec *syscall.Timespec) (*CompletionQueueEvent, error)

func (*Ring) SubmitInternal

func (ring *Ring) SubmitInternal(submitted uint32, waitNr uint64) (uint, error)

func (*Ring) UnmapRings

func (ring *Ring) UnmapRings()

func (*Ring) WaitCQE

func (ring *Ring) WaitCQE() (*CompletionQueueEvent, error)

func (*Ring) WaitCQENr

func (ring *Ring) WaitCQENr(waitNr uint32) (*CompletionQueueEvent, error)

type RsrcRegister

type RsrcRegister struct {
	Nr    uint32
	Resv  uint32
	Resv2 uint32
	Data  uint64
	Tags  uint64
}

type RsrcUpdate

type RsrcUpdate struct {
	Offset uint32
	Resv   uint32
	Data   uint64
}

type RsrcUpdate2

type RsrcUpdate2 struct {
	Offset uint32
	Resv   uint32
	Data   uint64
	Tags   uint64
	Nr     uint32
	Resv2  uint32
}

type SQRingOffsets

type SQRingOffsets struct {
	// contains filtered or unexported fields
}

type SubmissionQueue

type SubmissionQueue struct {
	// contains filtered or unexported fields
}

type SubmissionQueueEntry

type SubmissionQueueEntry struct {
	OpCode      uint8
	Flags       uint8
	IoPrio      uint16
	Fd          int32
	Off         uint64
	Addr        uint64
	Len         uint32
	OpcodeFlags uint32
	UserData    uint64

	BufIG       uint16
	Personality uint16
	SpliceFdIn  int32
	// contains filtered or unexported fields
}

func (*SubmissionQueueEntry) PrepareAccept

func (entry *SubmissionQueueEntry) PrepareAccept(fd int, addr uintptr, addrLen uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareAcceptDirect

func (entry *SubmissionQueueEntry) PrepareAcceptDirect(
	fd int, addr uintptr, addrLen uint64, flags uint32, fileIndex uint,
)

func (*SubmissionQueueEntry) PrepareClose

func (entry *SubmissionQueueEntry) PrepareClose(fd int)

func (*SubmissionQueueEntry) PrepareCloseDirect

func (entry *SubmissionQueueEntry) PrepareCloseDirect(fileIndex uint)

func (*SubmissionQueueEntry) PrepareMsgRing

func (entry *SubmissionQueueEntry) PrepareMsgRing(fd int, length uint32, data uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareNop

func (entry *SubmissionQueueEntry) PrepareNop()

func (*SubmissionQueueEntry) PrepareProvideBuffers

func (entry *SubmissionQueueEntry) PrepareProvideBuffers(
	addr uintptr,
	length uint32,
	fileDescriptor int,
	bgid uint64,
	off uint64,
)

func (*SubmissionQueueEntry) PrepareReadFixed

func (entry *SubmissionQueueEntry) PrepareReadFixed(
	fileDescriptor int,
	vectors uintptr,
	length uint32,
	offset uint64,
	index int,
)

func (*SubmissionQueueEntry) PrepareReadv

func (entry *SubmissionQueueEntry) PrepareReadv(fd int, iovecs uintptr, nrVecs uint32, offset uint64)

func (*SubmissionQueueEntry) PrepareReadv2

func (entry *SubmissionQueueEntry) PrepareReadv2(fd int, iovecs uintptr, nrVecs uint32, offset uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareRecv

func (entry *SubmissionQueueEntry) PrepareRecv(
	fileDescriptor int,
	addr uintptr,
	length uint32,
	flags uint32,
)

func (*SubmissionQueueEntry) PrepareRecvMsg

func (entry *SubmissionQueueEntry) PrepareRecvMsg(
	fileDescriptor int,
	msg *syscall.Msghdr,
	flags uint32,
)

func (*SubmissionQueueEntry) PrepareRecvMultishot

func (entry *SubmissionQueueEntry) PrepareRecvMultishot(
	fileDescriptor int,
	addr uintptr,
	length uint32,
	flags uint32,
)

func (*SubmissionQueueEntry) PrepareRemoveTimeout2

func (entry *SubmissionQueueEntry) PrepareRemoveTimeout2(ts *syscall.Timespec, count uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareSend

func (entry *SubmissionQueueEntry) PrepareSend(
	fileDescriptor int,
	addr uintptr,
	length uint32,
	flags uint32,
)

func (*SubmissionQueueEntry) PrepareSendMsg

func (entry *SubmissionQueueEntry) PrepareSendMsg(
	fileDescriptor int,
	msg *syscall.Msghdr,
	flags uint32,
)

func (*SubmissionQueueEntry) PrepareTimeout

func (entry *SubmissionQueueEntry) PrepareTimeout(duration time.Duration, count uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareTimeout2

func (entry *SubmissionQueueEntry) PrepareTimeout2(ts *syscall.Timespec, count uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareTimeoutRemove

func (entry *SubmissionQueueEntry) PrepareTimeoutRemove(duration time.Duration, count uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareTimeoutUpdate

func (entry *SubmissionQueueEntry) PrepareTimeoutUpdate(duration time.Duration, count uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareUpdateTimeout2

func (entry *SubmissionQueueEntry) PrepareUpdateTimeout2(ts *syscall.Timespec, count uint64, flags uint32)

func (*SubmissionQueueEntry) PrepareWriteFixed

func (entry *SubmissionQueueEntry) PrepareWriteFixed(
	fileDescriptor int,
	vectors uintptr,
	length uint32,
	offset uint64,
	index int,
)

func (*SubmissionQueueEntry) PrepareWritev

func (entry *SubmissionQueueEntry) PrepareWritev(
	fd int,
	iovecs uintptr,
	nrVecs uint32,
	offset uint64,
)

func (*SubmissionQueueEntry) PrepareWritev2

func (entry *SubmissionQueueEntry) PrepareWritev2(
	fd int,
	iovecs uintptr,
	nrVecs uint32,
	offset uint64,
	flags uint32,
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL