|
@@ -307,7 +307,7 @@ static config_var_t _option_vars[] = {
|
|
|
V(WarnUnsafeSocks, BOOL, "1"),
|
|
|
V(NoPublish, BOOL, "0"),
|
|
|
VAR("NodeFamily", LINELIST, NodeFamilies, NULL),
|
|
|
- V(NumCpus, UINT, "1"),
|
|
|
+ V(NumCpus, UINT, "0"),
|
|
|
V(NumEntryGuards, UINT, "3"),
|
|
|
V(ORListenAddress, LINELIST, NULL),
|
|
|
V(ORPort, UINT, "0"),
|
|
@@ -4892,6 +4892,19 @@ config_parse_interval(const char *s, int *ok)
|
|
|
return (int)r;
|
|
|
}
|
|
|
|
|
|
+/** Return the number of cpus configured in <b>options</b>. If we are
|
|
|
+ * told to auto-detect the number of cpus, return the auto-detected number. */
|
|
|
+int
|
|
|
+get_num_cpus(const or_options_t *options)
|
|
|
+{
|
|
|
+ if (options->NumCpus == 0) {
|
|
|
+ int n = compute_num_cpus();
|
|
|
+ return (n >= 1) ? n : 1;
|
|
|
+ } else {
|
|
|
+ return options->NumCpus;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Initialize the libevent library.
|
|
|
*/
|
|
@@ -4913,7 +4926,7 @@ init_libevent(const or_options_t *options)
|
|
|
|
|
|
memset(&cfg, 0, sizeof(cfg));
|
|
|
cfg.disable_iocp = options->DisableIOCP;
|
|
|
- cfg.num_cpus = options->NumCpus;
|
|
|
+ cfg.num_cpus = get_num_cpus(options);
|
|
|
|
|
|
tor_libevent_initialize(&cfg);
|
|
|
|