aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/os3_solaris.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2015-07-27 10:41:41 -0700
committerIan Lance Taylor <iant@golang.org>2015-07-28 05:41:27 +0000
commitd7223c6cc162d89d56b3a23902033aaa93f052db (patch)
tree47c12189ed926a9df9c941cb6cdcc21a5fa45454 /src/runtime/os3_solaris.go
parentd1cf5b899d2c60c480955101ec37e0f70f128711 (diff)
downloadgo-d7223c6cc162d89d56b3a23902033aaa93f052db.tar.gz
go-d7223c6cc162d89d56b3a23902033aaa93f052db.zip
runtime: correct implementation of raiseproc on Solaris
I forgot that the libc raise function only sends the signal to the current thread. We need to actually use kill and getpid here, as we do on other systems. Change-Id: Iac34af822c93468bf68cab8879db3ee20891caaf Reviewed-on: https://go-review.googlesource.com/12704 Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/runtime/os3_solaris.go')
-rw-r--r--src/runtime/os3_solaris.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go
index 7caa72e3be..d766b7db6d 100644
--- a/src/runtime/os3_solaris.go
+++ b/src/runtime/os3_solaris.go
@@ -16,7 +16,9 @@ import "unsafe"
//go:cgo_import_dynamic libc_exit exit "libc.so"
//go:cgo_import_dynamic libc_fstat fstat "libc.so"
//go:cgo_import_dynamic libc_getcontext getcontext "libc.so"
+//go:cgo_import_dynamic libc_getpid getpid "libc.so"
//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so"
+//go:cgo_import_dynamic libc_kill kill "libc.so"
//go:cgo_import_dynamic libc_madvise madvise "libc.so"
//go:cgo_import_dynamic libc_malloc malloc "libc.so"
//go:cgo_import_dynamic libc_mmap mmap "libc.so"
@@ -449,7 +451,8 @@ func raise(sig int32) /* int32 */ {
}
func raiseproc(sig int32) /* int32 */ {
- sysvicall1(&libc_raise, uintptr(sig))
+ pid := sysvicall0(&libc_getpid)
+ sysvicall2(&libc_kill, pid, uintptr(sig))
}
//go:nosplit