mirror of
https://github.com/ii64/gouring.git
synced 2025-04-26 05:42:48 +02:00
feat: ring with options
Signed-off-by: Nugraha <26342994+ii64@users.noreply.github.com>
This commit is contained in:
parent
b8dab73acf
commit
860871629c
2 changed files with 27 additions and 2 deletions
17
core.go
17
core.go
|
@ -6,11 +6,17 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func New(entries uint, params *IOUringParams) (*Ring, error) {
|
||||
func New(entries uint, params *IOUringParams, options ...Option) (*Ring, error) {
|
||||
r := &Ring{}
|
||||
if params != nil {
|
||||
r.params = *params
|
||||
r.params = *params // copy
|
||||
}
|
||||
|
||||
// option reconfiguring
|
||||
for _, opt := range options {
|
||||
opt(&r.params)
|
||||
}
|
||||
|
||||
var err error
|
||||
if r.fd, err = setup(r, entries, &r.params); err != nil {
|
||||
err = errors.Wrap(err, "setup")
|
||||
|
@ -19,6 +25,7 @@ func New(entries uint, params *IOUringParams) (*Ring, error) {
|
|||
return r, nil
|
||||
}
|
||||
|
||||
// Close ring
|
||||
func (r *Ring) Close() (err error) {
|
||||
if err = unsetup(r); err != nil {
|
||||
err = errors.Wrap(err, "close")
|
||||
|
@ -33,6 +40,7 @@ func (r *Ring) Close() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
// Register
|
||||
func (r *Ring) Register(opcode UringRegisterOpcode, arg uintptr, nrArg uint) (ret int, err error) {
|
||||
ret, err = register(r, opcode, arg, nrArg)
|
||||
if err != nil {
|
||||
|
@ -42,6 +50,7 @@ func (r *Ring) Register(opcode UringRegisterOpcode, arg uintptr, nrArg uint) (re
|
|||
return
|
||||
}
|
||||
|
||||
// Enter
|
||||
func (r *Ring) Enter(toSubmit, minComplete uint, flags UringEnterFlag, sig *Sigset_t) (ret int, err error) {
|
||||
ret, err = enter(r, toSubmit, minComplete, flags, sig)
|
||||
if err != nil {
|
||||
|
@ -53,18 +62,22 @@ func (r *Ring) Enter(toSubmit, minComplete uint, flags UringEnterFlag, sig *Sigs
|
|||
|
||||
//
|
||||
|
||||
// Params
|
||||
func (r *Ring) Params() *IOUringParams {
|
||||
return &r.params
|
||||
}
|
||||
|
||||
// Fd of io uring
|
||||
func (r *Ring) Fd() int {
|
||||
return r.fd
|
||||
}
|
||||
|
||||
// SQ Ring
|
||||
func (r *Ring) SQ() SQRing {
|
||||
return r.sq
|
||||
}
|
||||
|
||||
// CQ Ring
|
||||
func (r *Ring) CQ() CQRing {
|
||||
return r.cq
|
||||
}
|
||||
|
|
12
options.go
Normal file
12
options.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package gouring
|
||||
|
||||
// Option
|
||||
type Option func(p *IOUringParams)
|
||||
|
||||
// SQThread option
|
||||
func SQThread(cpu, idleMS uint32) Option {
|
||||
return func(p *IOUringParams) {
|
||||
p.SQThreadCPU = cpu
|
||||
p.SQThreadIdle = idleMS
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue