diff options
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 +} |