mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 07:07:33 -04:00
unix: add Poll function on OpenBSD
Tested with TestPoll extracted from syscall_linux_test.go. Once Poll is supported on all OSes this test can be moved to syscall_unix_test.go. Change-Id: Ic7ad2e749039e2e81612c2085d6fab73581d59f9 Reviewed-on: https://go-review.googlesource.com/73872 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
52c393dd0c
commit
b98136db33
@@ -102,6 +102,15 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
|
||||||
|
|
||||||
|
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
|
if len(fds) == 0 {
|
||||||
|
return poll(nil, 0, timeout)
|
||||||
|
}
|
||||||
|
return poll(&fds[0], len(fds), timeout)
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exposed directly
|
* Exposed directly
|
||||||
*/
|
*/
|
||||||
@@ -243,7 +252,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
|
|||||||
// nfssvc
|
// nfssvc
|
||||||
// nnpfspioctl
|
// nnpfspioctl
|
||||||
// openat
|
// openat
|
||||||
// poll
|
|
||||||
// preadv
|
// preadv
|
||||||
// profil
|
// profil
|
||||||
// pwritev
|
// pwritev
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ package unix
|
|||||||
#define KERNEL
|
#define KERNEL
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <poll.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -249,3 +250,20 @@ const (
|
|||||||
AT_FDCWD = C.AT_FDCWD
|
AT_FDCWD = C.AT_FDCWD
|
||||||
AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
|
AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// poll
|
||||||
|
|
||||||
|
type PollFd C.struct_pollfd
|
||||||
|
|
||||||
|
const (
|
||||||
|
POLLERR = C.POLLERR
|
||||||
|
POLLHUP = C.POLLHUP
|
||||||
|
POLLIN = C.POLLIN
|
||||||
|
POLLNVAL = C.POLLNVAL
|
||||||
|
POLLOUT = C.POLLOUT
|
||||||
|
POLLPRI = C.POLLPRI
|
||||||
|
POLLRDBAND = C.POLLRDBAND
|
||||||
|
POLLRDNORM = C.POLLRDNORM
|
||||||
|
POLLWRBAND = C.POLLWRBAND
|
||||||
|
POLLWRNORM = C.POLLWRNORM
|
||||||
|
)
|
||||||
|
|||||||
@@ -393,6 +393,17 @@ func getdents(fd int, buf []byte) (n int, err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
|
||||||
|
r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|||||||
@@ -393,6 +393,17 @@ func getdents(fd int, buf []byte) (n int, err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
|
||||||
|
r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|||||||
@@ -393,6 +393,17 @@ func getdents(fd int, buf []byte) (n int, err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
|
||||||
|
r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Created by cgo -godefs - DO NOT EDIT
|
// cgo -godefs types_openbsd.go | go run mkpost.go
|
||||||
// cgo -godefs types_openbsd.go
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build 386,openbsd
|
// +build 386,openbsd
|
||||||
|
|
||||||
@@ -444,3 +444,22 @@ const (
|
|||||||
AT_FDCWD = -0x64
|
AT_FDCWD = -0x64
|
||||||
AT_SYMLINK_NOFOLLOW = 0x2
|
AT_SYMLINK_NOFOLLOW = 0x2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PollFd struct {
|
||||||
|
Fd int32
|
||||||
|
Events int16
|
||||||
|
Revents int16
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
POLLERR = 0x8
|
||||||
|
POLLHUP = 0x10
|
||||||
|
POLLIN = 0x1
|
||||||
|
POLLNVAL = 0x20
|
||||||
|
POLLOUT = 0x4
|
||||||
|
POLLPRI = 0x2
|
||||||
|
POLLRDBAND = 0x80
|
||||||
|
POLLRDNORM = 0x40
|
||||||
|
POLLWRBAND = 0x100
|
||||||
|
POLLWRNORM = 0x4
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Created by cgo -godefs - DO NOT EDIT
|
// cgo -godefs types_openbsd.go | go run mkpost.go
|
||||||
// cgo -godefs types_openbsd.go
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build amd64,openbsd
|
// +build amd64,openbsd
|
||||||
|
|
||||||
@@ -451,3 +451,22 @@ const (
|
|||||||
AT_FDCWD = -0x64
|
AT_FDCWD = -0x64
|
||||||
AT_SYMLINK_NOFOLLOW = 0x2
|
AT_SYMLINK_NOFOLLOW = 0x2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PollFd struct {
|
||||||
|
Fd int32
|
||||||
|
Events int16
|
||||||
|
Revents int16
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
POLLERR = 0x8
|
||||||
|
POLLHUP = 0x10
|
||||||
|
POLLIN = 0x1
|
||||||
|
POLLNVAL = 0x20
|
||||||
|
POLLOUT = 0x4
|
||||||
|
POLLPRI = 0x2
|
||||||
|
POLLRDBAND = 0x80
|
||||||
|
POLLRDNORM = 0x40
|
||||||
|
POLLWRBAND = 0x100
|
||||||
|
POLLWRNORM = 0x4
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Created by cgo -godefs - DO NOT EDIT
|
// cgo -godefs types_openbsd.go | go run mkpost.go
|
||||||
// cgo -godefs types_openbsd.go
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build arm,openbsd
|
// +build arm,openbsd
|
||||||
|
|
||||||
@@ -437,3 +437,22 @@ const (
|
|||||||
AT_FDCWD = -0x64
|
AT_FDCWD = -0x64
|
||||||
AT_SYMLINK_NOFOLLOW = 0x2
|
AT_SYMLINK_NOFOLLOW = 0x2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PollFd struct {
|
||||||
|
Fd int32
|
||||||
|
Events int16
|
||||||
|
Revents int16
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
POLLERR = 0x8
|
||||||
|
POLLHUP = 0x10
|
||||||
|
POLLIN = 0x1
|
||||||
|
POLLNVAL = 0x20
|
||||||
|
POLLOUT = 0x4
|
||||||
|
POLLPRI = 0x2
|
||||||
|
POLLRDBAND = 0x80
|
||||||
|
POLLRDNORM = 0x40
|
||||||
|
POLLWRBAND = 0x100
|
||||||
|
POLLWRNORM = 0x4
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user