aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/support/cpu_linux.cc
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2017-11-14 17:09:48 -0800
committerGravatar ncteisen <ncteisen@gmail.com>2017-11-14 17:09:48 -0800
commitb60615895512e2e969d31dbaf7f9eed584b453e0 (patch)
tree69079043b19931d89d8ea275af2af81e0a7a426b /src/core/lib/support/cpu_linux.cc
parent88a7a9f82e3a78f28b3e6eb1fba474051d72173b (diff)
parent070f0c4b677c89052fa92bd24e9541ac1c0ef827 (diff)
Merge branch 'master' of https://github.com/grpc/grpc into inheritance-in-core
Diffstat (limited to 'src/core/lib/support/cpu_linux.cc')
-rw-r--r--src/core/lib/support/cpu_linux.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/lib/support/cpu_linux.cc b/src/core/lib/support/cpu_linux.cc
index 2280668442..21b1a71dc9 100644
--- a/src/core/lib/support/cpu_linux.cc
+++ b/src/core/lib/support/cpu_linux.cc
@@ -36,6 +36,13 @@
static int ncpus = 0;
static void init_num_cpus() {
+#ifndef GPR_MUSL_LIBC_COMPAT
+ if (sched_getcpu() < 0) {
+ gpr_log(GPR_ERROR, "Error determining current CPU: %s\n", strerror(errno));
+ ncpus = 1;
+ return;
+ }
+#endif
/* This must be signed. sysconf returns -1 when the number cannot be
determined */
ncpus = (int)sysconf(_SC_NPROCESSORS_ONLN);
@@ -56,6 +63,9 @@ unsigned gpr_cpu_current_cpu(void) {
// sched_getcpu() is undefined on musl
return 0;
#else
+ if (gpr_cpu_num_cores() == 1) {
+ return 0;
+ }
int cpu = sched_getcpu();
if (cpu < 0) {
gpr_log(GPR_ERROR, "Error determining current CPU: %s\n", strerror(errno));