mirror of
https://github.com/golang/go
synced 2024-11-24 19:00:13 -07:00
6de014b9e2
Some tests cannot build for Android; use build tags and stubs to skip them. For #15919 Change-Id: Ieedcb73d4cabe23c3775cfb1d44c1276982dccd9 Reviewed-on: https://go-review.googlesource.com/23634 Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
40 lines
694 B
Go
40 lines
694 B
Go
// +build !android
|
|
|
|
package cgotest
|
|
|
|
/*
|
|
void lockOSThreadCallback(void);
|
|
inline static void lockOSThreadC(void)
|
|
{
|
|
lockOSThreadCallback();
|
|
}
|
|
int usleep(unsigned usec);
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
func init() {
|
|
// Same as test3775 but run during init so that
|
|
// there are two levels of internal runtime lock
|
|
// (1 for init, 1 for cgo).
|
|
// This would have been broken by CL 11663043.
|
|
C.lockOSThreadC()
|
|
}
|
|
|
|
func test3775(t *testing.T) {
|
|
// Used to panic because of the UnlockOSThread below.
|
|
C.lockOSThreadC()
|
|
}
|
|
|
|
//export lockOSThreadCallback
|
|
func lockOSThreadCallback() {
|
|
runtime.LockOSThread()
|
|
runtime.UnlockOSThread()
|
|
go C.usleep(10000)
|
|
runtime.Gosched()
|
|
}
|