diff options
| author | kadmin <julianknodt@gmail.com> | 2021-07-07 18:15:52 +0000 |
|---|---|---|
| committer | kadmin <julianknodt@gmail.com> | 2021-07-08 20:15:38 +0000 |
| commit | 1f9021e2873e0b4950be4f2c90df4f268e97ff6b (patch) | |
| tree | 731894149ee2a6062e8a2549e5f6ca0030e49421 /net/uring/io_uring_linux.go | |
| parent | 9fd01334cfb0e4a881767cf3c1ddad584b1a3b79 (diff) | |
| download | tailscale-jknodt/io-uring.tar.xz tailscale-jknodt/io-uring.zip | |
add capability checkjknodt/io-uring
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 |
