mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 13:53:31 +01:00
Merge branch 'maint-0.4.7'
This commit is contained in:
commit
04d8753676
3
changes/ticket40719
Normal file
3
changes/ticket40719
Normal file
@ -0,0 +1,3 @@
|
||||
o Minor bugfixes (cpuworker, relay):
|
||||
- Fix an off by one overload calculation on the number of CPUs being used by
|
||||
our thread pool. Fixes bug 40719; bugfix on 0.3.5.1-alpha.
|
@ -144,6 +144,16 @@ cpu_init(void)
|
||||
set_max_pending_tasks(NULL);
|
||||
}
|
||||
|
||||
/** Return the number of threads configured for our CPU worker. */
|
||||
unsigned int
|
||||
cpuworker_get_n_threads(void)
|
||||
{
|
||||
if (!threadpool) {
|
||||
return 0;
|
||||
}
|
||||
return threadpool_get_n_threads(threadpool);
|
||||
}
|
||||
|
||||
/** Magic numbers to make sure our cpuworker_requests don't grow any
|
||||
* mis-framing bugs. */
|
||||
#define CPUWORKER_REQUEST_MAGIC 0xda4afeed
|
||||
|
@ -38,5 +38,7 @@ void cpuworker_log_onionskin_overhead(int severity, int onionskin_type,
|
||||
const char *onionskin_type_name);
|
||||
void cpuworker_cancel_circ_handshake(or_circuit_t *circ);
|
||||
|
||||
unsigned int cpuworker_get_n_threads(void);
|
||||
|
||||
#endif /* !defined(TOR_CPUWORKER_H) */
|
||||
|
||||
|
@ -152,7 +152,13 @@ have_room_for_onionskin(uint16_t type)
|
||||
/* If we've got fewer than 50 entries, we always have room for one more. */
|
||||
if (ol_entries[type] < 50)
|
||||
return 1;
|
||||
num_cpus = get_num_cpus(options);
|
||||
|
||||
/* If zero, this means our thread pool was never initialized meaning we can't
|
||||
* really get here but make sure we don't have such value because we are
|
||||
* using as a divisor. */
|
||||
num_cpus = cpuworker_get_n_threads();
|
||||
tor_assert(num_cpus > 0);
|
||||
|
||||
max_onion_queue_delay = get_onion_queue_max_delay(options);
|
||||
|
||||
/* Compute how many microseconds we'd expect to need to clear all
|
||||
|
@ -672,3 +672,11 @@ replyqueue_process(replyqueue_t *queue)
|
||||
|
||||
tor_mutex_release(&queue->lock);
|
||||
}
|
||||
|
||||
/** Return the number of threads configured for the given pool. */
|
||||
unsigned int
|
||||
threadpool_get_n_threads(threadpool_t *tp)
|
||||
{
|
||||
tor_assert(tp);
|
||||
return tp->n_threads;
|
||||
}
|
||||
|
@ -65,5 +65,6 @@ void replyqueue_process(replyqueue_t *queue);
|
||||
|
||||
int threadpool_register_reply_event(threadpool_t *tp,
|
||||
void (*cb)(threadpool_t *tp));
|
||||
unsigned int threadpool_get_n_threads(threadpool_t *tp);
|
||||
|
||||
#endif /* !defined(TOR_WORKQUEUE_H) */
|
||||
|
Loading…
Reference in New Issue
Block a user