summaryrefslogtreecommitdiff
path: root/software/vendor/github.com/creack/goselect/fdset.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2024-05-30 16:00:32 +0200
committerxengineering <me@xengineering.eu>2024-05-30 16:00:32 +0200
commitb8ef4d11fe0d00ce0884ccf982675845b20c3ce9 (patch)
tree3beb57ff849ed74569ce325225bc819791c25a6a /software/vendor/github.com/creack/goselect/fdset.go
parenteab833271eeaa8d54991c11eccec9445f662a191 (diff)
downloadiot-core-b8ef4d11fe0d00ce0884ccf982675845b20c3ce9.tar
iot-core-b8ef4d11fe0d00ce0884ccf982675845b20c3ce9.tar.zst
iot-core-b8ef4d11fe0d00ce0884ccf982675845b20c3ce9.zip
software: Implement serial port detection
Diffstat (limited to 'software/vendor/github.com/creack/goselect/fdset.go')
-rw-r--r--software/vendor/github.com/creack/goselect/fdset.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/software/vendor/github.com/creack/goselect/fdset.go b/software/vendor/github.com/creack/goselect/fdset.go
new file mode 100644
index 0000000..2ff3f6c
--- /dev/null
+++ b/software/vendor/github.com/creack/goselect/fdset.go
@@ -0,0 +1,33 @@
+// +build !freebsd,!windows,!plan9
+
+package goselect
+
+import "syscall"
+
+const FD_SETSIZE = syscall.FD_SETSIZE
+
+// FDSet wraps syscall.FdSet with convenience methods
+type FDSet syscall.FdSet
+
+// Set adds the fd to the set
+func (fds *FDSet) Set(fd uintptr) {
+ fds.Bits[fd/NFDBITS] |= (1 << (fd % NFDBITS))
+}
+
+// Clear remove the fd from the set
+func (fds *FDSet) Clear(fd uintptr) {
+ fds.Bits[fd/NFDBITS] &^= (1 << (fd % NFDBITS))
+}
+
+// IsSet check if the given fd is set
+func (fds *FDSet) IsSet(fd uintptr) bool {
+ return fds.Bits[fd/NFDBITS]&(1<<(fd%NFDBITS)) != 0
+}
+
+// Keep a null set to avoid reinstatiation
+var nullFdSet = &FDSet{}
+
+// Zero empties the Set
+func (fds *FDSet) Zero() {
+ copy(fds.Bits[:], (nullFdSet).Bits[:])
+}