diff options
Diffstat (limited to 'net/uring/io_uring_linux.go')
| -rw-r--r-- | net/uring/io_uring_linux.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/uring/io_uring_linux.go b/net/uring/io_uring_linux.go index 1e72ad6c4..2c34f4a00 100644 --- a/net/uring/io_uring_linux.go +++ b/net/uring/io_uring_linux.go @@ -71,6 +71,24 @@ type UDPConn struct { reads int32 } +var ( + mu sync.Mutex + // checks capabilities available on this system + capabilities map[IORingOp]bool +) + +func checkCapability(op IORingOp) bool { + mu.Lock() + defer mu.Unlock() + if v, ok := capabilities[op]; ok { + return v + } + + has_op := C.has_capability(C.int(op)) == 1 + capabilities[op] = has_op + return has_op +} + func NewUDPConn(pconn net.PacketConn) (*UDPConn, error) { if !*useIOURing { return nil, DisabledError |
