diff --git a/unix/mkerrors.sh b/unix/mkerrors.sh index 02e5cca0..67b84828 100755 --- a/unix/mkerrors.sh +++ b/unix/mkerrors.sh @@ -182,6 +182,7 @@ struct ltchars { #include #include #include +#include #include #include #include diff --git a/unix/syscall_linux_test.go b/unix/syscall_linux_test.go index 634e27db..27531914 100644 --- a/unix/syscall_linux_test.go +++ b/unix/syscall_linux_test.go @@ -238,23 +238,53 @@ func TestRlimitAs(t *testing.T) { } func TestSelect(t *testing.T) { - _, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) + n, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) if err != nil { t.Fatalf("Select: %v", err) } + if n != 0 { + t.Fatalf("Select: expected 0 ready file descriptors, got %v", n) + } dur := 150 * time.Millisecond tv := unix.NsecToTimeval(int64(dur)) start := time.Now() - _, err = unix.Select(0, nil, nil, nil, &tv) + n, err = unix.Select(0, nil, nil, nil, &tv) took := time.Since(start) if err != nil { t.Fatalf("Select: %v", err) } + if n != 0 { + t.Fatalf("Select: expected 0 ready file descriptors, got %v", n) + } if took < dur { t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) } + + rr, ww, err := os.Pipe() + if err != nil { + t.Fatal(err) + } + defer rr.Close() + defer ww.Close() + + if _, err := ww.Write([]byte("HELLO GOPHER")); err != nil { + t.Fatal(err) + } + + rFdSet := &unix.FdSet{} + fd := rr.Fd() + // FD_SET(fd, rFdSet) + rFdSet.Bits[fd/unix.NFDBITS] |= (1 << (fd % unix.NFDBITS)) + + n, err = unix.Select(int(fd+1), rFdSet, nil, nil, nil) + if err != nil { + t.Fatalf("Select: %v", err) + } + if n != 1 { + t.Fatalf("Select: expected 1 ready file descriptors, got %v", n) + } } func TestPselect(t *testing.T) { diff --git a/unix/zerrors_linux_386.go b/unix/zerrors_linux_386.go index 1875f459..fcf5796a 100644 --- a/unix/zerrors_linux_386.go +++ b/unix/zerrors_linux_386.go @@ -1361,6 +1361,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_amd64.go b/unix/zerrors_linux_amd64.go index 4af5477d..5bcf3dbd 100644 --- a/unix/zerrors_linux_amd64.go +++ b/unix/zerrors_linux_amd64.go @@ -1361,6 +1361,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_arm.go b/unix/zerrors_linux_arm.go index eb219199..3e02dcff 100644 --- a/unix/zerrors_linux_arm.go +++ b/unix/zerrors_linux_arm.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_arm64.go b/unix/zerrors_linux_arm64.go index fba8ad48..2293f8bb 100644 --- a/unix/zerrors_linux_arm64.go +++ b/unix/zerrors_linux_arm64.go @@ -1362,6 +1362,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_mips.go b/unix/zerrors_linux_mips.go index 995a7645..57742ea2 100644 --- a/unix/zerrors_linux_mips.go +++ b/unix/zerrors_linux_mips.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_mips64.go b/unix/zerrors_linux_mips64.go index 2a38e103..33bfa6cb 100644 --- a/unix/zerrors_linux_mips64.go +++ b/unix/zerrors_linux_mips64.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_mips64le.go b/unix/zerrors_linux_mips64le.go index d1df9383..89fd414e 100644 --- a/unix/zerrors_linux_mips64le.go +++ b/unix/zerrors_linux_mips64le.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_mipsle.go b/unix/zerrors_linux_mipsle.go index b92e3a58..aabe5e42 100644 --- a/unix/zerrors_linux_mipsle.go +++ b/unix/zerrors_linux_mipsle.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_ppc64.go b/unix/zerrors_linux_ppc64.go index 72fd7995..27227912 100644 --- a/unix/zerrors_linux_ppc64.go +++ b/unix/zerrors_linux_ppc64.go @@ -1358,6 +1358,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_ppc64le.go b/unix/zerrors_linux_ppc64le.go index d9d5837e..e33be416 100644 --- a/unix/zerrors_linux_ppc64le.go +++ b/unix/zerrors_linux_ppc64le.go @@ -1358,6 +1358,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_riscv64.go b/unix/zerrors_linux_riscv64.go index 11810c85..b9908d30 100644 --- a/unix/zerrors_linux_riscv64.go +++ b/unix/zerrors_linux_riscv64.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_s390x.go b/unix/zerrors_linux_s390x.go index 70090835..85647f4f 100644 --- a/unix/zerrors_linux_s390x.go +++ b/unix/zerrors_linux_s390x.go @@ -1359,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 diff --git a/unix/zerrors_linux_sparc64.go b/unix/zerrors_linux_sparc64.go index 99b5e165..c0095a54 100644 --- a/unix/zerrors_linux_sparc64.go +++ b/unix/zerrors_linux_sparc64.go @@ -1363,6 +1363,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3