diff --git a/src/core/support/cpu_linux.c b/src/core/support/cpu_linux.c index a748d43cf05187870837b65600c978d2c5891cf2..b59d013e92c76926ee0cb669b24706e45a2c5311 100644 --- a/src/core/support/cpu_linux.c +++ b/src/core/support/cpu_linux.c @@ -48,10 +48,11 @@ #include <grpc/support/log.h> #include <grpc/support/sync.h> -static unsigned ncpus = 0; +static int ncpus = 0; static void init_num_cpus() { - ncpus = (unsigned)sysconf(_SC_NPROCESSORS_ONLN); + // This must be signed. sysconf returns -1 when the number can't be determined + ncpus = (int)sysconf(_SC_NPROCESSORS_ONLN); if (ncpus < 1) { gpr_log(GPR_ERROR, "Cannot determine number of CPUs: assuming 1"); ncpus = 1; @@ -61,7 +62,7 @@ static void init_num_cpus() { unsigned gpr_cpu_num_cores(void) { static gpr_once once = GPR_ONCE_INIT; gpr_once_init(&once, init_num_cpus); - return ncpus; + return (unsigned)ncpus; } unsigned gpr_cpu_current_cpu(void) {