libgo/syscalls: Use _C_long as the type of the select bits array.

From-SVN: r171799
This commit is contained in:
Ian Lance Taylor 2011-03-31 20:37:31 +00:00
parent c454d74afc
commit 35ca26acc6
1 changed files with 7 additions and 5 deletions

View File

@ -181,20 +181,22 @@ func Gettimeofday(tv *Timeval) (errno int) {
return;
}
const nfdbits = unsafe.Sizeof(_C_long) * 8
type FdSet_t struct {
Fds_bits [(FD_SETSIZE + 63) / 64]int64;
Fds_bits [(FD_SETSIZE + nfdbits - 1) / nfdbits]_C_long
}
func FDSet(fd int, set *FdSet_t) {
set.Fds_bits[fd / 64] |= (1 << (uint)(fd % 64))
set.Fds_bits[fd / nfdbits] |= (1 << (uint)(fd % nfdbits))
}
func FDClr(fd int, set *FdSet_t) {
set.Fds_bits[fd / 64] &= ^(1 << (uint)(fd % 64))
set.Fds_bits[fd / nfdbits] &^= (1 << (uint)(fd % nfdbits))
}
func FDIsSet(fd int, set *FdSet_t) bool {
if set.Fds_bits[fd / 64] & (1 << (uint)(fd % 64)) != 0 {
if set.Fds_bits[fd / nfdbits] & (1 << (uint)(fd % nfdbits)) != 0 {
return true
} else {
return false
@ -202,7 +204,7 @@ func FDIsSet(fd int, set *FdSet_t) bool {
}
func FDZero(set *FdSet_t) {
for i := 0; i < ((FD_SETSIZE + 63) / 64); i++ {
for i := range set.Fds_bits {
set.Fds_bits[i] = 0
}
}