mirror of
https://github.com/golang/go
synced 2024-11-18 15:54:42 -07:00
runtime: use sched_yield instead of pthread_yield
Attempt to fix the linux-amd64-clang builder, which broke with CL 29472. Turns out pthread_yield is a non-portable Linux function, and should have #define _GNU_SOURCE before #include <pthread.h>. GCC doesn't complain about this, but Clang does: ./raceprof.go:44:3: warning: implicit declaration of function 'pthread_yield' is invalid in C99 [-Wimplicit-function-declaration] (Though the error, while explicable, certainly could be clearer.) There is a portable POSIX equivalent, sched_yield, so this CL uses it instead. Change-Id: I58ca7a3f73a2b3697712fdb02e72a8027c391169 Reviewed-on: https://go-review.googlesource.com/29675 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
b444d438c0
commit
ed915ad421
3
src/runtime/testdata/testprogcgo/raceprof.go
vendored
3
src/runtime/testdata/testprogcgo/raceprof.go
vendored
@ -15,6 +15,7 @@ package main
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include <sched.h>
|
||||||
|
|
||||||
struct cgoTracebackArg {
|
struct cgoTracebackArg {
|
||||||
uintptr_t context;
|
uintptr_t context;
|
||||||
@ -41,7 +42,7 @@ static void* raceprofThread(void* p) {
|
|||||||
|
|
||||||
for (i = 0; i < 100; i++) {
|
for (i = 0; i < 100; i++) {
|
||||||
pthread_kill(pthread_self(), SIGPROF);
|
pthread_kill(pthread_self(), SIGPROF);
|
||||||
pthread_yield();
|
sched_yield();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user