@@ -1885,7 +1885,7 @@ func Getpgrp() (pid int) {
1885
1885
//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)
1886
1886
//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
1887
1887
//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
1888
- //sys pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *pselect6Sigset_t ) (n int, err error)
1888
+ //sys pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack ) (n int, err error)
1889
1889
//sys read(fd int, p []byte) (n int, err error)
1890
1890
//sys Removexattr(path string, attr string) (err error)
1891
1891
//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)
@@ -2450,16 +2450,17 @@ func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *
2450
2450
2451
2451
// The final argument of the pselect6() system call is not a
2452
2452
// sigset_t * pointer, but is instead a structure
2453
- var kernelMask * pselect6Sigset_t
2453
+ var kernelMask * sigset_argpack
2454
2454
if sigmask != nil {
2455
- wordBits := 32 << (^ uintptr (0 ) >> 63 )
2456
- sigsetWords := (_C__NSIG - 1 + wordBits - 1 ) / (wordBits )
2455
+ wordBits := 32 << (^ uintptr (0 ) >> 63 ) // see math.intSize
2457
2456
2458
2457
// A sigset stores one bit per signal,
2459
2458
// offset by 1 (because signal 0 does not exist).
2460
2459
// So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉.
2460
+ sigsetWords := (_C__NSIG - 1 + wordBits - 1 ) / (wordBits )
2461
+
2461
2462
sigsetBytes := sigsetWords * (wordBits / 8 )
2462
- kernelMask = & pselect6Sigset_t {
2463
+ kernelMask = & sigset_argpack {
2463
2464
ss : sigmask ,
2464
2465
ssLen : uintptr (sigsetBytes ),
2465
2466
}
0 commit comments