aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/os_linux.c
AgeCommit message (Collapse)Author
2014-09-08build: move package sources from src/pkg to srcRuss Cox
Preparation was in CL 134570043. This CL contains only the effect of 'hg mv src/pkg/* src'. For more about the move, see golang.org/s/go14nopkg.
2014-09-04runtime: use new #include "textflag.h"Russ Cox
I did this just to clean things up, but it will be important when we drop the pkg directory later. LGTM=bradfitz R=r, bradfitz CC=golang-codereviews https://golang.org/cl/132600043
2014-09-04runtime: make more functions safe for GoRuss Cox
Convert no-op race functions. Everything else is tiny and gets NOSPLITs. After this, all that is left on darwin is sysAlloc, panic, and gothrow (all pending). There may be system-specific calls in other builds. LGTM=iant R=golang-codereviews, iant CC=dvyukov, golang-codereviews, khr, r https://golang.org/cl/140240044
2014-08-29runtime: rename Sigaltstack to SigaltstackTIan Lance Taylor
Avoids a conflict between the type and function sigaltstack. LGTM=crawshaw R=rsc, crawshaw CC=golang-codereviews https://golang.org/cl/138920043
2014-08-29runtime: include constants and defs_*_*.h types in generated Go defsRuss Cox
I had to rename Kevent and Sigaction to avoid the functions of the same (lowercase) name. LGTM=iant, r R=golang-codereviews, r, iant, aram.h CC=dvyukov, golang-codereviews, khr https://golang.org/cl/140740043
2014-08-27cmd/{ld,link,objdump}, runtime, debug/gosym: move linker-defined symbols ↵Matthew Dempsky
into runtime package Fixes #8092. LGTM=rsc R=iant, rsc CC=golang-codereviews https://golang.org/cl/126790043
2014-08-06runtime: get rid of SA_RESTORER on ARM.Shenghou Ma
The manpages says SA_RESTORER is obsolete, and indeed, not every architecture support it. However, sadly it's required on x86_64, see http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/kernel/signal.c?id=26bcd8b72563b4c54892c4c2a409f6656fb8ae8b#n430, so only use it on x86. LGTM=rsc R=rsc, iant CC=golang-codereviews https://golang.org/cl/115450043
2014-06-26all: remove 'extern register M *m' from runtimeRuss Cox
The runtime has historically held two dedicated values g (current goroutine) and m (current thread) in 'extern register' slots (TLS on x86, real registers backed by TLS on ARM). This CL removes the extern register m; code now uses g->m. On ARM, this frees up the register that formerly held m (R9). This is important for NaCl, because NaCl ARM code cannot use R9 at all. The Go 1 macrobenchmarks (those with per-op times >= 10 µs) are unaffected: BenchmarkBinaryTree17 5491374955 5471024381 -0.37% BenchmarkFannkuch11 4357101311 4275174828 -1.88% BenchmarkGobDecode 11029957 11364184 +3.03% BenchmarkGobEncode 6852205 6784822 -0.98% BenchmarkGzip 650795967 650152275 -0.10% BenchmarkGunzip 140962363 141041670 +0.06% BenchmarkHTTPClientServer 71581 73081 +2.10% BenchmarkJSONEncode 31928079 31913356 -0.05% BenchmarkJSONDecode 117470065 113689916 -3.22% BenchmarkMandelbrot200 6008923 5998712 -0.17% BenchmarkGoParse 6310917 6327487 +0.26% BenchmarkRegexpMatchMedium_1K 114568 114763 +0.17% BenchmarkRegexpMatchHard_1K 168977 169244 +0.16% BenchmarkRevcomp 935294971 914060918 -2.27% BenchmarkTemplate 145917123 148186096 +1.55% Minux previous reported larger variations, but these were caused by run-to-run noise, not repeatable slowdowns. Actual code changes by Minux. I only did the docs and the benchmarking. LGTM=dvyukov, iant, minux R=minux, josharian, iant, dave, bradfitz, dvyukov CC=golang-codereviews https://golang.org/cl/109050043
2014-04-03runtime: handle fault during runtime more like unexpected fault addressRuss Cox
Delaying the runtime.throw until here will print more information. In particular it will print the signal and code values, which means it will show the fault address. The canpanic checks were added recently, in CL 75320043. They were just not added in exactly the right place. LGTM=iant R=dvyukov, iant CC=golang-codereviews https://golang.org/cl/83980043
2014-02-20runtime/debug: add SetPanicOnFaultRuss Cox
SetPanicOnFault allows recovery from unexpected memory faults. This can be useful if you are using a memory-mapped file or probing the address space of the current program. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/66590044
2013-12-19runtime: unblock signals when we try to core dumpShenghou Ma
Fixes #6988. R=golang-dev, iant CC=golang-dev https://golang.org/cl/44070046
2013-08-29cmd/cc,runtime: change preprocessor to expand macros inside ofKeith Randall
#pragma textflag and #pragma dataflag directives. Update dataflag directives to use symbols instead of integer constants. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/13310043
2013-08-12runtime: change textflags from numbers to symbolsKeith Randall
R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/12798043
2013-08-05runtime/pprof: test multithreaded profile, remove OS X workaroundsRuss Cox
This means that pprof will no longer report profiles on OS X. That's unfortunate, but the profiles were often wrong and, worse, it was difficult to tell whether the profile was wrong or not. The workarounds were making the scheduler more complex, possibly caused a deadlock (see issue 5519), and did not actually deliver reliable results. It may be possible for adventurous users to apply a patch to their kernels to get working results, or perhaps having no results will encourage someone to do the work of creating a profiling thread like on Windows. Issue 6047 has details. Fixes #5519. Fixes #6047. R=golang-dev, bradfitz, r CC=golang-dev https://golang.org/cl/12429045
2013-07-29runtime: fix timediv calls on NetBSD, OpenBSDRuss Cox
Document endian-ness assumption. R=dvyukov CC=golang-dev https://golang.org/cl/12056044
2013-07-29runtime: do not split stacks in syscall statusDmitriy Vyukov
Split stack checks (morestack) corrupt g->sched, but g->sched must be preserved consistent for GC/traceback. The change implements runtime.notetsleepg function, which does entersyscall/exitsyscall and is carefully arranged to not call any split functions in between. R=rsc CC=golang-dev https://golang.org/cl/11575044
2013-07-12runtime: correctly handle signals received on foreign threadsShenghou Ma
Fixes #3250. R=rsc CC=golang-dev https://golang.org/cl/10757044
2013-05-29runtime: remove all badcallback() functionsJan Ziak
R=iant CC=golang-dev https://golang.org/cl/9738046
2013-05-27runtime: flag static variables as no-pointersJan Ziak
Variables in data sections of 32-bit executables interfere with garbage collector's ability to free objects and/or unnecessarily slow down the garbage collector. This changeset moves some static variables to .noptr sections. 'files' in symtab.c is now allocated dynamically. R=golang-dev, dvyukov, minux.ma CC=golang-dev https://golang.org/cl/9786044
2013-05-06runtime: fix crash in badsignal()Dmitriy Vyukov
The linker can generate split stack prolog when a textflag 7 function makes an indirect function call. If it happens, badsignal() crashes trying to dereference g. Fixes #5337. R=bradfitz, dave, adg, iant, r, minux.ma CC=adonovan, golang-dev https://golang.org/cl/9226043
2013-03-22runtime: correct misplaced right brace in Linux SIGBUS handlingIan Lance Taylor
I'm not sure how to write a test for this. The change in behaviour is that if you somehow get a SIGBUS signal for an address >= 0x1000, the program will now crash rather than calling panic. As far as I know, on x86 GNU/Linux, the only way to get a SIGBUS (rather than a SIGSEGV) is to set the stack pointer to an invalid value. R=golang-dev, r CC=golang-dev https://golang.org/cl/7906045
2013-03-18runtime: fix tv_sec 32-bit overflows in sleep routines.Rémy Oudompheng
Fixes #5063. R=golang-dev, minux.ma, rsc CC=golang-dev https://golang.org/cl/7876043
2013-03-14runtime: refactor os-specific codeRuss Cox
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