<feed xmlns='http://www.w3.org/2005/Atom'>
<title>go/src/pkg/runtime/thread_linux.c, branch main</title>
<subtitle>Fork of Go programming language with my patches.</subtitle>
<id>http://git.kilabit.info/go/atom?h=main</id>
<link rel='self' href='http://git.kilabit.info/go/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/'/>
<updated>2013-03-14T18:35:13Z</updated>
<entry>
<title>runtime: refactor os-specific code</title>
<updated>2013-03-14T18:35:13Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-03-14T18:35:13Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=e9d62a6d81ee380acda593edec0d3a05295254ec'/>
<id>urn:sha1:e9d62a6d81ee380acda593edec0d3a05295254ec</id>
<content type='text'>
thread_GOOS.c becomes os_GOOS.c.

signal_GOOS_GOARCH.c becomes os_GOOS_GOARCH.c,
but with non-GOARCH-specific code moved into os_GOOS.c.

The actual arch-specific signal handler moves into signal_GOARCH.c
to avoid per-GOOS duplication.

New files signal_GOOS_GOARCH.h provide macros for
accessing fields of the very system-specific signal info structs.

Lots moving, but nothing changing.
This is a preliminarly cleanup so I can work on the signal
handling code to fix some open issues without having to
make each change 13 times.

Tested on Linux and OS X, 386 and amd64.
Will fix Plan 9, Windows, and ARM after the fact if necessary.
(Plan 9 and Windows should be fine; ARM will probably have some typos.)

Net effect: -1081 lines of code.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/7565048
</content>
</entry>
<entry>
<title>runtime: integrated network poller for linux</title>
<updated>2013-03-14T15:06:35Z</updated>
<author>
<name>Dmitriy Vyukov</name>
<email>dvyukov@google.com</email>
</author>
<published>2013-03-14T15:06:35Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=49e0300854dabc8d3c2e91d26897a998345f2447'/>
<id>urn:sha1:49e0300854dabc8d3c2e91d26897a998345f2447</id>
<content type='text'>
vs tip:
BenchmarkTCP4OneShot                    172994        40485  -76.60%
BenchmarkTCP4OneShot-2                   96581        30028  -68.91%
BenchmarkTCP4OneShot-4                   52615        18454  -64.93%
BenchmarkTCP4OneShot-8                   26351        12289  -53.36%
BenchmarkTCP4OneShot-16                  12258        16093  +31.29%
BenchmarkTCP4OneShot-32                  13200        17045  +29.13%

BenchmarkTCP4OneShotTimeout             124814        42932  -65.60%
BenchmarkTCP4OneShotTimeout-2            99090        29040  -70.69%
BenchmarkTCP4OneShotTimeout-4            51860        18455  -64.41%
BenchmarkTCP4OneShotTimeout-8            26100        12073  -53.74%
BenchmarkTCP4OneShotTimeout-16           12198        16654  +36.53%
BenchmarkTCP4OneShotTimeout-32           13438        17143  +27.57%

BenchmarkTCP4Persistent                 115647         7782  -93.27%
BenchmarkTCP4Persistent-2                58024         4808  -91.71%
BenchmarkTCP4Persistent-4                24715         3674  -85.13%
BenchmarkTCP4Persistent-8                16431         2407  -85.35%
BenchmarkTCP4Persistent-16                2336         1875  -19.73%
BenchmarkTCP4Persistent-32                1689         1637   -3.08%

BenchmarkTCP4PersistentTimeout           79754         7859  -90.15%
BenchmarkTCP4PersistentTimeout-2         57708         5952  -89.69%
BenchmarkTCP4PersistentTimeout-4         26907         3823  -85.79%
BenchmarkTCP4PersistentTimeout-8         15036         2567  -82.93%
BenchmarkTCP4PersistentTimeout-16         2507         1903  -24.09%
BenchmarkTCP4PersistentTimeout-32         1717         1627   -5.24%

vs old scheduler:
benchmark                           old ns/op    new ns/op    delta
BenchmarkTCPOneShot                    192244        40485  -78.94%
BenchmarkTCPOneShot-2                   63835        30028  -52.96%
BenchmarkTCPOneShot-4                   35443        18454  -47.93%
BenchmarkTCPOneShot-8                   22140        12289  -44.49%
BenchmarkTCPOneShot-16                  16930        16093   -4.94%
BenchmarkTCPOneShot-32                  16719        17045   +1.95%

BenchmarkTCPOneShotTimeout             190495        42932  -77.46%
BenchmarkTCPOneShotTimeout-2            64828        29040  -55.20%
BenchmarkTCPOneShotTimeout-4            34591        18455  -46.65%
BenchmarkTCPOneShotTimeout-8            21989        12073  -45.10%
BenchmarkTCPOneShotTimeout-16           16848        16654   -1.15%
BenchmarkTCPOneShotTimeout-32           16796        17143   +2.07%

BenchmarkTCPPersistent                  81670         7782  -90.47%
BenchmarkTCPPersistent-2                26598         4808  -81.92%
BenchmarkTCPPersistent-4                15633         3674  -76.50%
BenchmarkTCPPersistent-8                18093         2407  -86.70%
BenchmarkTCPPersistent-16               17472         1875  -89.27%
BenchmarkTCPPersistent-32                7679         1637  -78.68%

BenchmarkTCPPersistentTimeout           83186         7859  -90.55%
BenchmarkTCPPersistentTimeout-2         26883         5952  -77.86%
BenchmarkTCPPersistentTimeout-4         15776         3823  -75.77%
BenchmarkTCPPersistentTimeout-8         18180         2567  -85.88%
BenchmarkTCPPersistentTimeout-16        17454         1903  -89.10%
BenchmarkTCPPersistentTimeout-32         7798         1627  -79.14%

R=golang-dev, iant, bradfitz, dave, rsc
CC=golang-dev
https://golang.org/cl/7579044
</content>
</entry>
<entry>
<title>runtime: faster &amp; safer hash function</title>
<updated>2013-03-12T17:47:44Z</updated>
<author>
<name>Keith Randall</name>
<email>khr@golang.org</email>
</author>
<published>2013-03-12T17:47:44Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=a5d4024139231ca10b5347d17bbf702cfdf5fd5b'/>
<id>urn:sha1:a5d4024139231ca10b5347d17bbf702cfdf5fd5b</id>
<content type='text'>
Uses AES hardware instructions on 386/amd64 to implement
a fast hash function.  Incorporates a random key to
thwart hash collision DOS attacks.
Depends on CL#7548043 for new assembly instructions.

Update #3885
Helps some by making hashing faster.  Go time drops from
0.65s to 0.51s.

R=rsc, r, bradfitz, remyoudompheng, khr, dsymonds, minux.ma, elias.naur
CC=golang-dev
https://golang.org/cl/7543043
</content>
</entry>
<entry>
<title>runtime: start all threads with runtime.mstart</title>
<updated>2013-03-01T16:44:43Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-03-01T16:44:43Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=e6a3e22c7569f7581f9a3dea3229ff6d0eda15e8'/>
<id>urn:sha1:e6a3e22c7569f7581f9a3dea3229ff6d0eda15e8</id>
<content type='text'>
Putting the M initialization in multiple places will not scale.
Various code assumes mstart is the start already. Make it so.

R=golang-dev, devon.odell
CC=golang-dev
https://golang.org/cl/7420048
</content>
</entry>
<entry>
<title>runtime: fix new scheduler on freebsd, windows</title>
<updated>2013-03-01T13:30:11Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-03-01T13:30:11Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=c5f694a5c9d210b83b82f52931e1d46b3e25393d'/>
<id>urn:sha1:c5f694a5c9d210b83b82f52931e1d46b3e25393d</id>
<content type='text'>
R=devon.odell
CC=golang-dev
https://golang.org/cl/7443046
</content>
</entry>
<entry>
<title>runtime: split minit() to mpreinit() and minit()</title>
<updated>2013-02-21T12:24:38Z</updated>
<author>
<name>Dmitriy Vyukov</name>
<email>dvyukov@google.com</email>
</author>
<published>2013-02-21T12:24:38Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=a0955a2aa2a2fcd5352f7e517c3f965e24fd8584'/>
<id>urn:sha1:a0955a2aa2a2fcd5352f7e517c3f965e24fd8584</id>
<content type='text'>
mpreinit() is called on the parent thread and with mcache (can allocate memory),
minit() is called on the child thread and can not allocate memory.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7389043
</content>
</entry>
<entry>
<title>runtime: allow cgo callbacks on non-Go threads</title>
<updated>2013-02-20T22:48:23Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-02-20T22:48:23Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=6c976393aea607e67f4d31e3a2ae7b3c0dc15ade'/>
<id>urn:sha1:6c976393aea607e67f4d31e3a2ae7b3c0dc15ade</id>
<content type='text'>
Fixes #4435.

R=golang-dev, iant, alex.brainman, minux.ma, dvyukov
CC=golang-dev
https://golang.org/cl/7304104
</content>
</entry>
<entry>
<title>runtime: preparation for non-Go threads running Go code</title>
<updated>2013-02-18T18:43:12Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-02-18T18:43:12Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=86d509b463d92be4ea9f51d61760d8383b1f96e4'/>
<id>urn:sha1:86d509b463d92be4ea9f51d61760d8383b1f96e4</id>
<content type='text'>
* Handle p==nil in signalstack by setting SS_DISABLE flag.
* Make minit only allocate a signal g if there's not one already.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/7323072
</content>
</entry>
<entry>
<title>runtime: fix build on linux</title>
<updated>2013-02-15T17:18:33Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-02-15T17:18:33Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=c7f7bbbf03415e1805e503846627f2e08423c360'/>
<id>urn:sha1:c7f7bbbf03415e1805e503846627f2e08423c360</id>
<content type='text'>
In addition to the compile failure fixed in signal*.c,
preserving the signal mask led to very strange crashes.
Testing shows that looking for SIG_IGN is all that
matters to get along with nohup, so reintroduce
sigset_zero instead of trying to preserve the signal mask.

TBR=iant
CC=golang-dev
https://golang.org/cl/7323067
</content>
</entry>
<entry>
<title>runtime: fix running under nohup</title>
<updated>2013-02-15T16:18:55Z</updated>
<author>
<name>Russ Cox</name>
<email>rsc@golang.org</email>
</author>
<published>2013-02-15T16:18:55Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/go/commit/?id=f3407f445d51dac3b9415cb5025ac98ccbbc80eb'/>
<id>urn:sha1:f3407f445d51dac3b9415cb5025ac98ccbbc80eb</id>
<content type='text'>
There are two ways nohup(1) might be implemented:
it might mask away the signal, or it might set the handler
to SIG_IGN, both of which are inherited across fork+exec.
So two fixes:

* Make sure to preserve the inherited signal mask at
minit instead of clearing it.

* If the SIGHUP handler is SIG_IGN, leave it that way.

Fixes #4491.

R=golang-dev, mikioh.mikioh, iant
CC=golang-dev
https://golang.org/cl/7308102
</content>
</entry>
</feed>
