This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
libgo patch committed: Rename fd_rtems.go to fd_select.go
- From: Ian Lance Taylor <iant at google dot com>
- To: gcc-patches at gcc dot gnu dot org, gofrontend-dev at googlegroups dot com
- Date: Mon, 28 Mar 2011 11:30:24 -0700
- Subject: libgo patch committed: Rename fd_rtems.go to fd_select.go
I renamed fd_rtems.go to fd_select.go in libgo, since the file is used
for operating systems other than RTEMS. Bootstrapped on
x86_64-unknown-linux-gnu. Committed to mainline.
Ian
diff -r 381b9fce29e2 libgo/Makefile.am
--- a/libgo/Makefile.am Mon Mar 28 11:07:46 2011 -0700
+++ b/libgo/Makefile.am Mon Mar 28 11:26:53 2011 -0700
@@ -642,7 +642,7 @@
go/mime/type.go
if LIBGO_IS_RTEMS
-go_net_fd_os_file = go/net/fd_rtems.go
+go_net_fd_os_file = go/net/fd_select.go
go_net_newpollserver_file = go/net/newpollserver_rtems.go
else # !LIBGO_IS_RTEMS
if LIBGO_IS_LINUX
@@ -651,7 +651,7 @@
else # !LIBGO_IS_LINUX && !LIBGO_IS_RTEMS
# By default use select with pipes. Most systems should have
# something better.
-go_net_fd_os_file = go/net/fd_rtems.go
+go_net_fd_os_file = go/net/fd_select.go
go_net_newpollserver_file = go/net/newpollserver.go
endif # !LIBGO_IS_LINUX
endif # !LIBGO_IS_RTEMS
diff -r 381b9fce29e2 libgo/go/net/fd_rtems.go
--- a/libgo/go/net/fd_rtems.go Mon Mar 28 11:07:46 2011 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-// Copyright 2010 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 select(2).
-
-package net
-
-import (
- "os"
- "syscall"
-)
-
-type pollster struct {
- readFds, writeFds, repeatFds *syscall.FdSet_t
- maxFd int
- readyReadFds, readyWriteFds *syscall.FdSet_t
- nReady int
- lastFd int
-}
-
-func newpollster() (p *pollster, err os.Error) {
- p = new(pollster)
- p.readFds = new(syscall.FdSet_t)
- p.writeFds = new(syscall.FdSet_t)
- p.repeatFds = new(syscall.FdSet_t)
- p.readyReadFds = new(syscall.FdSet_t)
- p.readyWriteFds = new(syscall.FdSet_t)
- p.maxFd = -1
- p.nReady = 0
- p.lastFd = 0
- return p, nil
-}
-
-func (p *pollster) AddFD(fd int, mode int, repeat bool) os.Error {
- if mode == 'r' {
- syscall.FDSet(fd, p.readFds)
- } else {
- syscall.FDSet(fd, p.writeFds)
- }
-
- if repeat {
- syscall.FDSet(fd, p.repeatFds)
- }
-
- if fd > p.maxFd {
- p.maxFd = fd
- }
-
- return nil
-}
-
-func (p *pollster) DelFD(fd int, mode int) {
- if mode == 'r' {
- if !syscall.FDIsSet(fd, p.readFds) {
- print("Select unexpected fd=", fd, " for read\n")
- return
- }
- syscall.FDClr(fd, p.readFds)
- } else {
- if !syscall.FDIsSet(fd, p.writeFds) {
- print("Select unexpected fd=", fd, " for write\n")
- return
- }
- syscall.FDClr(fd, p.writeFds)
- }
-
- // Doesn't matter if not already present.
- syscall.FDClr(fd, p.repeatFds)
-
- // We don't worry about maxFd here.
-}
-
-func (p *pollster) WaitFD(nsec int64) (fd int, mode int, err os.Error) {
- if p.nReady == 0 {
- var timeout *syscall.Timeval
- var tv syscall.Timeval
- timeout = nil
- if nsec > 0 {
- tv = syscall.NsecToTimeval(nsec)
- timeout = &tv
- }
-
- var n, e int
- var tmpReadFds, tmpWriteFds syscall.FdSet_t
- for {
- // Temporary syscall.FdSet_ts into which the values are copied
- // because select mutates the values.
- tmpReadFds = *p.readFds
- tmpWriteFds = *p.writeFds
-
- n, e = syscall.Select(p.maxFd + 1, &tmpReadFds, &tmpWriteFds, nil, timeout)
- if e != syscall.EINTR {
- break
- }
- }
- if e != 0 {
- return -1, 0, os.NewSyscallError("select", e)
- }
- if n == 0 {
- return -1, 0, nil
- }
-
- p.nReady = n
- *p.readyReadFds = tmpReadFds
- *p.readyWriteFds = tmpWriteFds
- p.lastFd = 0
- }
-
- flag := false
- for i := p.lastFd; i < p.maxFd + 1; i++ {
- if syscall.FDIsSet(i, p.readyReadFds) {
- flag = true
- mode = 'r'
- syscall.FDClr(i, p.readyReadFds)
- } else if syscall.FDIsSet(i, p.readyWriteFds) {
- flag = true
- mode = 'w'
- syscall.FDClr(i, p.readyWriteFds)
- }
- if flag {
- if !syscall.FDIsSet(i, p.repeatFds) {
- p.DelFD(i, mode)
- }
- p.nReady--
- p.lastFd = i
- return i, mode, nil
- }
- }
-
- // Will not reach here. Just to shut up the compiler.
- return -1, 0, nil
-}
-
-func (p *pollster) Close() os.Error {
- return nil
-}
diff -r 381b9fce29e2 libgo/go/net/fd_select.go
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libgo/go/net/fd_select.go Mon Mar 28 11:26:53 2011 -0700
@@ -0,0 +1,137 @@
+// Copyright 2010 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 select(2).
+
+package net
+
+import (
+ "os"
+ "syscall"
+)
+
+type pollster struct {
+ readFds, writeFds, repeatFds *syscall.FdSet_t
+ maxFd int
+ readyReadFds, readyWriteFds *syscall.FdSet_t
+ nReady int
+ lastFd int
+}
+
+func newpollster() (p *pollster, err os.Error) {
+ p = new(pollster)
+ p.readFds = new(syscall.FdSet_t)
+ p.writeFds = new(syscall.FdSet_t)
+ p.repeatFds = new(syscall.FdSet_t)
+ p.readyReadFds = new(syscall.FdSet_t)
+ p.readyWriteFds = new(syscall.FdSet_t)
+ p.maxFd = -1
+ p.nReady = 0
+ p.lastFd = 0
+ return p, nil
+}
+
+func (p *pollster) AddFD(fd int, mode int, repeat bool) os.Error {
+ if mode == 'r' {
+ syscall.FDSet(fd, p.readFds)
+ } else {
+ syscall.FDSet(fd, p.writeFds)
+ }
+
+ if repeat {
+ syscall.FDSet(fd, p.repeatFds)
+ }
+
+ if fd > p.maxFd {
+ p.maxFd = fd
+ }
+
+ return nil
+}
+
+func (p *pollster) DelFD(fd int, mode int) {
+ if mode == 'r' {
+ if !syscall.FDIsSet(fd, p.readFds) {
+ print("Select unexpected fd=", fd, " for read\n")
+ return
+ }
+ syscall.FDClr(fd, p.readFds)
+ } else {
+ if !syscall.FDIsSet(fd, p.writeFds) {
+ print("Select unexpected fd=", fd, " for write\n")
+ return
+ }
+ syscall.FDClr(fd, p.writeFds)
+ }
+
+ // Doesn't matter if not already present.
+ syscall.FDClr(fd, p.repeatFds)
+
+ // We don't worry about maxFd here.
+}
+
+func (p *pollster) WaitFD(nsec int64) (fd int, mode int, err os.Error) {
+ if p.nReady == 0 {
+ var timeout *syscall.Timeval
+ var tv syscall.Timeval
+ timeout = nil
+ if nsec > 0 {
+ tv = syscall.NsecToTimeval(nsec)
+ timeout = &tv
+ }
+
+ var n, e int
+ var tmpReadFds, tmpWriteFds syscall.FdSet_t
+ for {
+ // Temporary syscall.FdSet_ts into which the values are copied
+ // because select mutates the values.
+ tmpReadFds = *p.readFds
+ tmpWriteFds = *p.writeFds
+
+ n, e = syscall.Select(p.maxFd + 1, &tmpReadFds, &tmpWriteFds, nil, timeout)
+ if e != syscall.EINTR {
+ break
+ }
+ }
+ if e != 0 {
+ return -1, 0, os.NewSyscallError("select", e)
+ }
+ if n == 0 {
+ return -1, 0, nil
+ }
+
+ p.nReady = n
+ *p.readyReadFds = tmpReadFds
+ *p.readyWriteFds = tmpWriteFds
+ p.lastFd = 0
+ }
+
+ flag := false
+ for i := p.lastFd; i < p.maxFd + 1; i++ {
+ if syscall.FDIsSet(i, p.readyReadFds) {
+ flag = true
+ mode = 'r'
+ syscall.FDClr(i, p.readyReadFds)
+ } else if syscall.FDIsSet(i, p.readyWriteFds) {
+ flag = true
+ mode = 'w'
+ syscall.FDClr(i, p.readyWriteFds)
+ }
+ if flag {
+ if !syscall.FDIsSet(i, p.repeatFds) {
+ p.DelFD(i, mode)
+ }
+ p.nReady--
+ p.lastFd = i
+ return i, mode, nil
+ }
+ }
+
+ // Will not reach here. Just to shut up the compiler.
+ return -1, 0, nil
+}
+
+func (p *pollster) Close() os.Error {
+ return nil
+}