diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-12-24 01:10:47 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-12-24 01:10:47 +0000 |
commit | f1f603c7d0b3f03dca46a4f313472288eb080eb1 (patch) | |
tree | 3a29966b02dfb83e0a8a8d5c42b3116380209fb0 /src/testbed/testbed_api_operations.c | |
parent | 53cd5b8eda2fa8db86b0907a62a39598981d008a (diff) | |
download | gnunet-f1f603c7d0b3f03dca46a4f313472288eb080eb1.tar.gz gnunet-f1f603c7d0b3f03dca46a4f313472288eb080eb1.zip |
making GNUNET_SCHEDULER_cancel() perform in O(1) instead of O(n) to help or even fully address #3247
Diffstat (limited to 'src/testbed/testbed_api_operations.c')
-rw-r--r-- | src/testbed/testbed_api_operations.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/testbed/testbed_api_operations.c b/src/testbed/testbed_api_operations.c index 8bc38747c..469d44fe5 100644 --- a/src/testbed/testbed_api_operations.c +++ b/src/testbed/testbed_api_operations.c | |||
@@ -400,7 +400,7 @@ static unsigned int n_expired_opqs; | |||
400 | /** | 400 | /** |
401 | * The id of the task to process the ready queue | 401 | * The id of the task to process the ready queue |
402 | */ | 402 | */ |
403 | GNUNET_SCHEDULER_TaskIdentifier process_rq_task_id; | 403 | struct GNUNET_SCHEDULER_Task * process_rq_task_id; |
404 | 404 | ||
405 | 405 | ||
406 | /** | 406 | /** |
@@ -534,10 +534,10 @@ rq_remove (struct GNUNET_TESTBED_Operation *op) | |||
534 | GNUNET_CONTAINER_DLL_remove (rq_head, rq_tail, op->rq_entry); | 534 | GNUNET_CONTAINER_DLL_remove (rq_head, rq_tail, op->rq_entry); |
535 | GNUNET_free (op->rq_entry); | 535 | GNUNET_free (op->rq_entry); |
536 | op->rq_entry = NULL; | 536 | op->rq_entry = NULL; |
537 | if ( (NULL == rq_head) && (GNUNET_SCHEDULER_NO_TASK != process_rq_task_id) ) | 537 | if ( (NULL == rq_head) && (NULL != process_rq_task_id) ) |
538 | { | 538 | { |
539 | GNUNET_SCHEDULER_cancel (process_rq_task_id); | 539 | GNUNET_SCHEDULER_cancel (process_rq_task_id); |
540 | process_rq_task_id = GNUNET_SCHEDULER_NO_TASK; | 540 | process_rq_task_id = NULL; |
541 | } | 541 | } |
542 | } | 542 | } |
543 | 543 | ||
@@ -558,7 +558,7 @@ process_rq_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
558 | struct OperationQueue *queue; | 558 | struct OperationQueue *queue; |
559 | unsigned int cnt; | 559 | unsigned int cnt; |
560 | 560 | ||
561 | process_rq_task_id = GNUNET_SCHEDULER_NO_TASK; | 561 | process_rq_task_id = NULL; |
562 | GNUNET_assert (NULL != rq_head); | 562 | GNUNET_assert (NULL != rq_head); |
563 | GNUNET_assert (NULL != (op = rq_head->op)); | 563 | GNUNET_assert (NULL != (op = rq_head->op)); |
564 | rq_remove (op); | 564 | rq_remove (op); |
@@ -592,7 +592,7 @@ rq_add (struct GNUNET_TESTBED_Operation *op) | |||
592 | rq_entry->op = op; | 592 | rq_entry->op = op; |
593 | GNUNET_CONTAINER_DLL_insert_tail (rq_head, rq_tail, rq_entry); | 593 | GNUNET_CONTAINER_DLL_insert_tail (rq_head, rq_tail, rq_entry); |
594 | op->rq_entry = rq_entry; | 594 | op->rq_entry = rq_entry; |
595 | if (GNUNET_SCHEDULER_NO_TASK == process_rq_task_id) | 595 | if (NULL == process_rq_task_id) |
596 | process_rq_task_id = GNUNET_SCHEDULER_add_now (&process_rq_task, NULL); | 596 | process_rq_task_id = GNUNET_SCHEDULER_add_now (&process_rq_task, NULL); |
597 | } | 597 | } |
598 | 598 | ||