diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-03-19 14:27:00 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-03-19 14:27:00 -0400 |
commit | 01af92fedead7589ac4272558d284e0e68de7ddd (patch) | |
tree | 1e0731dbc4af8a2c6dccd8d0a7afa2e38f5fb8bc /src/common | |
parent | 084c857704209572ca3dc9ffe8c1213189e35442 (diff) | |
parent | 8d29866bec821e188a411f78b8112d2097ed106c (diff) | |
download | tor-01af92fedead7589ac4272558d284e0e68de7ddd.tar.gz tor-01af92fedead7589ac4272558d284e0e68de7ddd.zip |
Merge remote-tracking branch 'origin/maint-0.2.4'
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/compat.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index 4fa9fee42e..c97a4545c9 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -2313,8 +2313,33 @@ compute_num_cpus_impl(void) return (int)info.dwNumberOfProcessors; else return -1; -#elif defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_CONF) - long cpus = sysconf(_SC_NPROCESSORS_CONF); +#elif defined(HAVE_SYSCONF) +#ifdef _SC_NPROCESSORS_CONF + long cpus_conf = sysconf(_SC_NPROCESSORS_CONF); +#else + long cpus_conf = -1; +#endif +#ifdef _SC_NPROCESSORS_ONLN + long cpus_onln = sysconf(_SC_NPROCESSORS_ONLN); +#else + long cpus_onln = -1; +#endif + long cpus = -1; + + if (cpus_conf > 0 && cpus_onln < 0) { + cpus = cpus_conf; + } else if (cpus_onln > 0 && cpus_conf < 0) { + cpus = cpus_onln; + } else if (cpus_onln > 0 && cpus_conf > 0) { + if (cpus_onln < cpus_conf) { + log_notice(LD_GENERAL, "I think we have %ld CPUS, but only %ld of them " + "are available. Telling Tor to only use %ld. You can over" + "ride this with the NumCPUs option", + cpus_conf, cpus_onln, cpus_onln); + } + cpus = cpus_onln; + } + if (cpus >= 1 && cpus < INT_MAX) return (int)cpus; else |