]> Cypherpunks repositories - gostls13.git/commitdiff
net: consolidate fd_{free,net,open}bsd.go into fd_bsd.go
authorDave Cheney <dave@cheney.net>
Fri, 28 Dec 2012 10:01:52 +0000 (21:01 +1100)
committerDave Cheney <dave@cheney.net>
Fri, 28 Dec 2012 10:01:52 +0000 (21:01 +1100)
These files are identical, so probably pre date // +build.

With a little work, fd_darwin could be merged as well.

R=mikioh.mikioh, jsing, devon.odell, lucio.dere, minux.ma
CC=golang-dev
https://golang.org/cl/7004053

src/pkg/net/fd_bsd.go [moved from src/pkg/net/fd_freebsd.go with 98% similarity]
src/pkg/net/fd_netbsd.go [deleted file]
src/pkg/net/fd_openbsd.go [deleted file]

similarity index 98%
rename from src/pkg/net/fd_freebsd.go
rename to src/pkg/net/fd_bsd.go
index 35d84c30ef61122bffed2a81882a15d12a99f531..4f5dd6e524af8b0606e2372eee2bab657e027d6b 100644 (file)
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build freebsd netbsd openbsd
+
 // Waiting for FDs via kqueue/kevent.
 
 package net
diff --git a/src/pkg/net/fd_netbsd.go b/src/pkg/net/fd_netbsd.go
deleted file mode 100644 (file)
index 35d84c3..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Waiting for FDs via kqueue/kevent.
-
-package net
-
-import (
-       "os"
-       "syscall"
-)
-
-type pollster struct {
-       kq       int
-       eventbuf [10]syscall.Kevent_t
-       events   []syscall.Kevent_t
-
-       // An event buffer for AddFD/DelFD.
-       // Must hold pollServer lock.
-       kbuf [1]syscall.Kevent_t
-}
-
-func newpollster() (p *pollster, err error) {
-       p = new(pollster)
-       if p.kq, err = syscall.Kqueue(); err != nil {
-               return nil, os.NewSyscallError("kqueue", err)
-       }
-       syscall.CloseOnExec(p.kq)
-       p.events = p.eventbuf[0:0]
-       return p, nil
-}
-
-func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
-       // pollServer is locked.
-
-       var kmode int
-       if mode == 'r' {
-               kmode = syscall.EVFILT_READ
-       } else {
-               kmode = syscall.EVFILT_WRITE
-       }
-       ev := &p.kbuf[0]
-       // EV_ADD - add event to kqueue list
-       // EV_ONESHOT - delete the event the first time it triggers
-       flags := syscall.EV_ADD
-       if !repeat {
-               flags |= syscall.EV_ONESHOT
-       }
-       syscall.SetKevent(ev, fd, kmode, flags)
-
-       n, err := syscall.Kevent(p.kq, p.kbuf[:], nil, nil)
-       if err != nil {
-               return false, os.NewSyscallError("kevent", err)
-       }
-       if n != 1 || (ev.Flags&syscall.EV_ERROR) == 0 || int(ev.Ident) != fd || int(ev.Filter) != kmode {
-               return false, os.NewSyscallError("kqueue phase error", err)
-       }
-       if ev.Data != 0 {
-               return false, syscall.Errno(int(ev.Data))
-       }
-       return false, nil
-}
-
-func (p *pollster) DelFD(fd int, mode int) {
-       // pollServer is locked.
-
-       var kmode int
-       if mode == 'r' {
-               kmode = syscall.EVFILT_READ
-       } else {
-               kmode = syscall.EVFILT_WRITE
-       }
-       ev := &p.kbuf[0]
-       // EV_DELETE - delete event from kqueue list
-       syscall.SetKevent(ev, fd, kmode, syscall.EV_DELETE)
-       syscall.Kevent(p.kq, p.kbuf[:], nil, nil)
-}
-
-func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err error) {
-       var t *syscall.Timespec
-       for len(p.events) == 0 {
-               if nsec > 0 {
-                       if t == nil {
-                               t = new(syscall.Timespec)
-                       }
-                       *t = syscall.NsecToTimespec(nsec)
-               }
-
-               s.Unlock()
-               n, err := syscall.Kevent(p.kq, nil, p.eventbuf[:], t)
-               s.Lock()
-
-               if err != nil {
-                       if err == syscall.EINTR {
-                               continue
-                       }
-                       return -1, 0, os.NewSyscallError("kevent", err)
-               }
-               if n == 0 {
-                       return -1, 0, nil
-               }
-               p.events = p.eventbuf[:n]
-       }
-       ev := &p.events[0]
-       p.events = p.events[1:]
-       fd = int(ev.Ident)
-       if ev.Filter == syscall.EVFILT_READ {
-               mode = 'r'
-       } else {
-               mode = 'w'
-       }
-       return fd, mode, nil
-}
-
-func (p *pollster) Close() error { return os.NewSyscallError("close", syscall.Close(p.kq)) }
diff --git a/src/pkg/net/fd_openbsd.go b/src/pkg/net/fd_openbsd.go
deleted file mode 100644 (file)
index 35d84c3..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Waiting for FDs via kqueue/kevent.
-
-package net
-
-import (
-       "os"
-       "syscall"
-)
-
-type pollster struct {
-       kq       int
-       eventbuf [10]syscall.Kevent_t
-       events   []syscall.Kevent_t
-
-       // An event buffer for AddFD/DelFD.
-       // Must hold pollServer lock.
-       kbuf [1]syscall.Kevent_t
-}
-
-func newpollster() (p *pollster, err error) {
-       p = new(pollster)
-       if p.kq, err = syscall.Kqueue(); err != nil {
-               return nil, os.NewSyscallError("kqueue", err)
-       }
-       syscall.CloseOnExec(p.kq)
-       p.events = p.eventbuf[0:0]
-       return p, nil
-}
-
-func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
-       // pollServer is locked.
-
-       var kmode int
-       if mode == 'r' {
-               kmode = syscall.EVFILT_READ
-       } else {
-               kmode = syscall.EVFILT_WRITE
-       }
-       ev := &p.kbuf[0]
-       // EV_ADD - add event to kqueue list
-       // EV_ONESHOT - delete the event the first time it triggers
-       flags := syscall.EV_ADD
-       if !repeat {
-               flags |= syscall.EV_ONESHOT
-       }
-       syscall.SetKevent(ev, fd, kmode, flags)
-
-       n, err := syscall.Kevent(p.kq, p.kbuf[:], nil, nil)
-       if err != nil {
-               return false, os.NewSyscallError("kevent", err)
-       }
-       if n != 1 || (ev.Flags&syscall.EV_ERROR) == 0 || int(ev.Ident) != fd || int(ev.Filter) != kmode {
-               return false, os.NewSyscallError("kqueue phase error", err)
-       }
-       if ev.Data != 0 {
-               return false, syscall.Errno(int(ev.Data))
-       }
-       return false, nil
-}
-
-func (p *pollster) DelFD(fd int, mode int) {
-       // pollServer is locked.
-
-       var kmode int
-       if mode == 'r' {
-               kmode = syscall.EVFILT_READ
-       } else {
-               kmode = syscall.EVFILT_WRITE
-       }
-       ev := &p.kbuf[0]
-       // EV_DELETE - delete event from kqueue list
-       syscall.SetKevent(ev, fd, kmode, syscall.EV_DELETE)
-       syscall.Kevent(p.kq, p.kbuf[:], nil, nil)
-}
-
-func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err error) {
-       var t *syscall.Timespec
-       for len(p.events) == 0 {
-               if nsec > 0 {
-                       if t == nil {
-                               t = new(syscall.Timespec)
-                       }
-                       *t = syscall.NsecToTimespec(nsec)
-               }
-
-               s.Unlock()
-               n, err := syscall.Kevent(p.kq, nil, p.eventbuf[:], t)
-               s.Lock()
-
-               if err != nil {
-                       if err == syscall.EINTR {
-                               continue
-                       }
-                       return -1, 0, os.NewSyscallError("kevent", err)
-               }
-               if n == 0 {
-                       return -1, 0, nil
-               }
-               p.events = p.eventbuf[:n]
-       }
-       ev := &p.events[0]
-       p.events = p.events[1:]
-       fd = int(ev.Ident)
-       if ev.Filter == syscall.EVFILT_READ {
-               mode = 'r'
-       } else {
-               mode = 'w'
-       }
-       return fd, mode, nil
-}
-
-func (p *pollster) Close() error { return os.NewSyscallError("close", syscall.Close(p.kq)) }