From b6cd047a2870ccbd48f7ca36ba774dee43fec7a4 Mon Sep 17 00:00:00 2001 From: espoal Date: Tue, 11 Oct 2022 22:51:18 +0200 Subject: [PATCH] feat: addes examples folder --- examples/read.go | 43 +++++++++++++++++++++++++++++++++++++++++++ examples/write.go | 37 +++++++++++++++++++++++++++++++++++++ go.mod | 7 +++++-- go.sum | 2 ++ queue_test.go | 2 +- 5 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 examples/read.go create mode 100644 examples/write.go diff --git a/examples/read.go b/examples/read.go new file mode 100644 index 0000000..4af58b8 --- /dev/null +++ b/examples/read.go @@ -0,0 +1,43 @@ +package main + +import ( + "github.com/ii64/gouring" + "golang.org/x/sys/unix" + "log" +) + +func main() { + + h, err := gouring.New(256, 0) + if err != nil { + log.Fatal(err) + } + defer h.Close() + + fd, err := unix.Open("/tmp/test", unix.O_RDWR, 0677) + + sqe := h.GetSqe() + b := make([]byte, 20) + gouring.PrepRead(sqe, fd, &b[0], len(b), 0) + log.Println("Buffer: ", b) + + submitted, err := h.SubmitAndWait(1) + if err != nil { + log.Fatal(err) + } + println(submitted) // 1 + + var cqe *gouring.IoUringCqe + err = h.WaitCqe(&cqe) + if err != nil { + log.Fatal(err) + } // check also EINTR + + log.Println("CQE: ", cqe) + log.Println("Buffer: ", b) + log.Println("Buffer: ", string(b)) + + _ = cqe.UserData + _ = cqe.Res + _ = cqe.Flags +} diff --git a/examples/write.go b/examples/write.go new file mode 100644 index 0000000..c589127 --- /dev/null +++ b/examples/write.go @@ -0,0 +1,37 @@ +package main + +import ( + "github.com/ii64/gouring" + "golang.org/x/sys/unix" + "log" +) + +func main() { + + h, err := gouring.New(256, 0) + if err != nil { + log.Fatal(err) + } + defer h.Close() + + fd, err := unix.Open("/tmp/test", unix.O_RDWR, 0677) + + sqe := h.GetSqe() + b := []byte("hello from io_uring!\n") + gouring.PrepWrite(sqe, fd, &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 { + log.Fatal(err) + } // check also EINTR + + _ = cqe.UserData + _ = cqe.Res + _ = cqe.Flags +} diff --git a/go.mod b/go.mod index 546250a..227886f 100644 --- a/go.mod +++ b/go.mod @@ -2,10 +2,13 @@ module github.com/ii64/gouring go 1.18 -require github.com/stretchr/testify v1.7.0 +require ( + github.com/davecgh/go-spew v1.1.0 + github.com/stretchr/testify v1.7.0 + golang.org/x/sys v0.0.0-20221010170243-090e33056c14 +) require ( - github.com/davecgh/go-spew v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/go.sum b/go.sum index acb88a4..9daff57 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14 h1:k5II8e6QD8mITdi+okbbmR/cIyEbeXLBhy5Ha4nevyc= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= diff --git a/queue_test.go b/queue_test.go index bb9bb1c..dbe5053 100644 --- a/queue_test.go +++ b/queue_test.go @@ -151,7 +151,7 @@ func TestRingQueueSubmitSingleConsumer(t *testing.T) { } submit := func(t *testing.T, opt *IoUringParams, h *IoUring, expectedSubmitCount int) { - submitted, err := h.io_uringn_submit() + submitted, err := h.io_uring_submit() assert.NoError(t, err) if opt.Flags&IORING_SETUP_SQPOLL == 0 { assert.Equal(t, expectedSubmitCount, submitted)