fdset.go raw

   1  // Copyright 2019 The Go Authors. All rights reserved.
   2  // Use of this source code is governed by a BSD-style
   3  // license that can be found in the LICENSE file.
   4  
   5  //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
   6  
   7  package unix
   8  
   9  // Set adds fd to the set fds.
  10  func (fds *FdSet) Set(fd int) {
  11  	fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))
  12  }
  13  
  14  // Clear removes fd from the set fds.
  15  func (fds *FdSet) Clear(fd int) {
  16  	fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))
  17  }
  18  
  19  // IsSet returns whether fd is in the set fds.
  20  func (fds *FdSet) IsSet(fd int) bool {
  21  	return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0
  22  }
  23  
  24  // Zero clears the set fds.
  25  func (fds *FdSet) Zero() {
  26  	clear(fds.Bits[:])
  27  }
  28