ii64 / gouring

Go io uring syscall implementation without CGO, rewrite on branch v0.4

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gouring

License: MIT Go Reference

go get github.com/ii64/gouring

Example

// setup
h, err := gouring.New(256, 0)
if err != nil { /*...*/ }
defer h.Close() 

sqe := h.GetSQE()
b := []byte("io_uring!\n")
PrepWrite(sqe, 1, &b[0], len(b), 0)

submitted, err := h.SubmitAndWait(1)
if err != nil { /*...*/ }
println(submitted) // 1

var cqe *gouring.IoUringCqe
err = h.WaitCqe(&cqe) 
if err != nil { /*...*/ } // check also EINTR

_ = cqe.UserData
_ = cqe.Res
_ = cqe.Flags

Graph

SQPOLL non-SQPOLL
sqpoll_fig nonsqpoll_fig

Reference

https://github.com/axboe/liburing

About

Go io uring syscall implementation without CGO, rewrite on branch v0.4

License:MIT License


Languages

Language:Go 96.9%Language:Python 2.5%Language:Makefile 0.6%