Use sched_yield instead of pthread_yield

pthread_yield is not a standard POSIX function, and is not available
in musl libc. The man page says to "Use the standardized sched_yield(2)
instead"[0].

On glibc, pthread_yield is exactly equivalent to sched_yield[1].

On bionic, pthread_yield is also not available, so on Android, the
tests define a wrapper that just calls sched_yield. This wrapper
is no longer necessary if we just use sched_yield in the first
place.

[0] http://man7.org/linux/man-pages/man3/pthread_yield.3.html
[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_yield.c

Bug: google-breakpad:631
Change-Id: Ie4c6be8c17cdc2f5396a7fe972fa51a97573b049
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2097340
Reviewed-by: Mike Frysinger <vapier@chromium.org>
This commit is contained in:
Michael Forney 2020-03-10 15:18:51 -07:00 committed by Mike Frysinger
parent 4f3f0acd6f
commit 3f6f16b059
2 changed files with 2 additions and 6 deletions

View file

@ -89,11 +89,6 @@ int pthread_barrier_destroy(pthread_barrier_t *barrier) {
#endif // defined(PTHREAD_BARRIER_SERIAL_THREAD)
int pthread_yield(void) {
sched_yield();
return 0;
}
} // namespace
#endif // GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_PTHREAD_FIXES_H

View file

@ -33,6 +33,7 @@
#include "common/linux/tests/crash_generator.h"
#include <pthread.h>
#include <sched.h>
#include <signal.h>
#include <stdio.h>
#include <sys/mman.h>
@ -88,7 +89,7 @@ void *thread_function(void *data) {
exit(1);
}
while (true) {
pthread_yield();
sched_yield();
}
}