2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-05 09:05:40 +00:00

Document isc_task_sendto properly, make sure that cpu we're sending to is always sane

This commit is contained in:
Witold Kręcicki
2018-10-25 06:31:53 +00:00
parent 025c74adee
commit f166cabcae
2 changed files with 17 additions and 15 deletions

View File

@@ -481,15 +481,14 @@ isc_task_sendto(isc_task_t *task0, isc_event_t **eventp, int c) {
*/
REQUIRE(VALID_TASK(task));
if (c == -1) {
c = atomic_fetch_add_explicit(&task->manager->curq, 1,
memory_order_relaxed)
% task->manager->workers;
}
XTRACE("isc_task_send");
if (c < 0) {
c = atomic_fetch_add_explicit(&task->manager->curq, 1,
memory_order_relaxed);
}
c %= task->manager->workers;
/*
* We're trying hard to hold locks for as short a time as possible.
* We're also trying to hold as few locks as possible. This is why
@@ -532,13 +531,14 @@ isc_task_sendtoanddetach(isc_task_t **taskp, isc_event_t **eventp, int c) {
REQUIRE(taskp != NULL);
task = (isc__task_t *)*taskp;
REQUIRE(VALID_TASK(task));
if (c == -1) {
c = atomic_fetch_add_explicit(&task->manager->curq, 1,
memory_order_relaxed)
% task->manager->workers;
}
XTRACE("isc_task_sendanddetach");
if (c < 0) {
c = atomic_fetch_add_explicit(&task->manager->curq, 1,
memory_order_relaxed);
}
c %= task->manager->workers;
LOCK(&task->lock);
idle1 = task_send(task, eventp, c);
idle2 = task_detach(task);