diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-12-11 18:33:13 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-12-11 18:33:13 +0100 |
commit | 05cc0c829821d43cb45dc777e8dbde296304cbeb (patch) | |
tree | cdf14b694e48724d7b55e394fe5d919552af5d2a /rwcancel/fdset.go | |
parent | c967f15e443a5953429000e50fad2e117992b72d (diff) |
Freebsd is finally normal in sys/unix
Diffstat (limited to 'rwcancel/fdset.go')
-rw-r--r-- | rwcancel/fdset.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/rwcancel/fdset.go b/rwcancel/fdset.go new file mode 100644 index 0000000..b393b18 --- /dev/null +++ b/rwcancel/fdset.go @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0 + * + * Copyright (C) 2017-2018 WireGuard LLC. All Rights Reserved. + */ + +package rwcancel + +import "golang.org/x/sys/unix" + +type fdSet struct { + fdset unix.FdSet +} + +func (fdset *fdSet) set(i int) { + bits := 32 << (^uint(0) >> 63) + fdset.fdset.Bits[i/bits] |= 1 << uint(i%bits) +} + +func (fdset *fdSet) check(i int) bool { + bits := 32 << (^uint(0) >> 63) + return (fdset.fdset.Bits[i/bits] & (1 << uint(i%bits))) != 0 +} |