unix: add Poll function on Solaris

Tested with TestPoll extracted from syscall_linux_test.go.

Now that Poll is supported on all unix flavors, TestPoll can be moved
to syscall_unix_test.go in a successive CL.

Change-Id: Ibd5ff3f45198008464522c3b165f2af7865ce81e
Reviewed-on: https://go-review.googlesource.com/73881
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Tobias Klauser
2017-10-28 10:13:51 +00:00
committed by Tobias Klauser
parent b98136db33
commit 661970f62f
4 changed files with 58 additions and 0 deletions
+12
View File
@@ -29,6 +29,7 @@ import (
//go:cgo_import_dynamic libc___major __major "libc.so"
//go:cgo_import_dynamic libc___minor __minor "libc.so"
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
//go:cgo_import_dynamic libc_poll poll "libc.so"
//go:cgo_import_dynamic libc_access access "libc.so"
//go:cgo_import_dynamic libc_adjtime adjtime "libc.so"
//go:cgo_import_dynamic libc_chdir chdir "libc.so"
@@ -153,6 +154,7 @@ import (
//go:linkname proc__major libc___major
//go:linkname proc__minor libc___minor
//go:linkname procioctl libc_ioctl
//go:linkname procpoll libc_poll
//go:linkname procAccess libc_access
//go:linkname procAdjtime libc_adjtime
//go:linkname procChdir libc_chdir
@@ -278,6 +280,7 @@ var (
proc__major,
proc__minor,
procioctl,
procpoll,
procAccess,
procAdjtime,
procChdir,
@@ -557,6 +560,15 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
return
}
func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)
n = int(r0)
if e1 != 0 {
err = e1
}
return
}
func Access(path string, mode uint32) (err error) {
var _p0 *byte
_p0, err = BytePtrFromString(path)