This patch is a rewrite of the syscall package in the Go library.  This
rewrite moves it from libgo/syscalls to libgo/go/syscall, to more
closely match the master Go library.  More importantly, it changes most
library calls to call new entersyscall and exitsyscall functions.  These
functions currently do nothing.  However, they are a step toward
multiplexing multiple goroutines onto a single thread, which will make
the implementation of goroutines more efficient.  When multiplexing
goroutines, it is of course essential to know when a goroutine is
calling a library function which may block.  This patch makes that
possible.

There are still some existing calls to possibly blocking library
functions in other parts of the library.  Those will also have to be
updated.

It's possible that this patch will once again break the Solaris and Irix
support.  I've tried to ensure that I didn't make any stupid errors, but
I haven't done any actual testing.  Sorry about any problems.

Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline.

Ian

Attachment: foo.patch.bz2
Description: patch

Reply via email to