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/ats/gnunet-ats-solver-eval.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/ats/gnunet-ats-solver-eval.c')
-rw-r--r-- | src/ats/gnunet-ats-solver-eval.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/ats/gnunet-ats-solver-eval.c b/src/ats/gnunet-ats-solver-eval.c index 86930d392..0fa83d741 100644 --- a/src/ats/gnunet-ats-solver-eval.c +++ b/src/ats/gnunet-ats-solver-eval.c | |||
@@ -244,7 +244,7 @@ static void | |||
244 | logging_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 244 | logging_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
245 | { | 245 | { |
246 | struct LoggingHandle *l = cls; | 246 | struct LoggingHandle *l = cls; |
247 | l->logging_task = GNUNET_SCHEDULER_NO_TASK; | 247 | l->logging_task = NULL; |
248 | 248 | ||
249 | GNUNET_ATS_solver_logging_now (l); | 249 | GNUNET_ATS_solver_logging_now (l); |
250 | 250 | ||
@@ -268,12 +268,12 @@ GNUNET_ATS_solver_logging_start (struct GNUNET_TIME_Relative freq) | |||
268 | void | 268 | void |
269 | GNUNET_ATS_solver_logging_stop (struct LoggingHandle *l) | 269 | GNUNET_ATS_solver_logging_stop (struct LoggingHandle *l) |
270 | { | 270 | { |
271 | if (GNUNET_SCHEDULER_NO_TASK != l->logging_task) | 271 | if (NULL != l->logging_task) |
272 | GNUNET_SCHEDULER_cancel (l->logging_task); | 272 | GNUNET_SCHEDULER_cancel (l->logging_task); |
273 | 273 | ||
274 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Stop logging\n"); | 274 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Stop logging\n"); |
275 | 275 | ||
276 | l->logging_task = GNUNET_SCHEDULER_NO_TASK; | 276 | l->logging_task = NULL; |
277 | } | 277 | } |
278 | 278 | ||
279 | static struct LoggingFileHandle * | 279 | static struct LoggingFileHandle * |
@@ -513,9 +513,9 @@ GNUNET_ATS_solver_logging_free (struct LoggingHandle *l) | |||
513 | struct LoggingAddress *log_a_cur; | 513 | struct LoggingAddress *log_a_cur; |
514 | struct LoggingAddress *log_a_next; | 514 | struct LoggingAddress *log_a_next; |
515 | 515 | ||
516 | if (GNUNET_SCHEDULER_NO_TASK != l->logging_task) | 516 | if (NULL != l->logging_task) |
517 | GNUNET_SCHEDULER_cancel (l->logging_task); | 517 | GNUNET_SCHEDULER_cancel (l->logging_task); |
518 | l->logging_task = GNUNET_SCHEDULER_NO_TASK; | 518 | l->logging_task = NULL; |
519 | 519 | ||
520 | lts_next = l->head; | 520 | lts_next = l->head; |
521 | while (NULL != (lts_cur = lts_next)) | 521 | while (NULL != (lts_cur = lts_next)) |
@@ -621,7 +621,7 @@ set_prop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
621 | double prop_value; | 621 | double prop_value; |
622 | struct GNUNET_ATS_Information atsi; | 622 | struct GNUNET_ATS_Information atsi; |
623 | 623 | ||
624 | pg->set_task = GNUNET_SCHEDULER_NO_TASK; | 624 | pg->set_task = NULL; |
625 | 625 | ||
626 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains_value (sh->addresses, | 626 | if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains_value (sh->addresses, |
627 | &pg->test_peer->peer_id, pg->test_address->ats_addr)) | 627 | &pg->test_peer->peer_id, pg->test_address->ats_addr)) |
@@ -702,10 +702,10 @@ GNUNET_ATS_solver_generate_property_stop (struct PropertyGenerator *pg) | |||
702 | { | 702 | { |
703 | GNUNET_CONTAINER_DLL_remove (prop_gen_head, prop_gen_tail, pg); | 703 | GNUNET_CONTAINER_DLL_remove (prop_gen_head, prop_gen_tail, pg); |
704 | 704 | ||
705 | if (GNUNET_SCHEDULER_NO_TASK != pg->set_task) | 705 | if (NULL != pg->set_task) |
706 | { | 706 | { |
707 | GNUNET_SCHEDULER_cancel (pg->set_task); | 707 | GNUNET_SCHEDULER_cancel (pg->set_task); |
708 | pg->set_task = GNUNET_SCHEDULER_NO_TASK; | 708 | pg->set_task = NULL; |
709 | } | 709 | } |
710 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 710 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
711 | "Removing old up preference generator peer [%u] address [%u] `%s'\n", | 711 | "Removing old up preference generator peer [%u] address [%u] `%s'\n", |
@@ -897,7 +897,7 @@ set_feedback_task (void *cls, | |||
897 | struct GNUNET_TIME_Relative dur; | 897 | struct GNUNET_TIME_Relative dur; |
898 | double p_new; | 898 | double p_new; |
899 | 899 | ||
900 | pg->feedback_task = GNUNET_SCHEDULER_NO_TASK; | 900 | pg->feedback_task = NULL; |
901 | 901 | ||
902 | if (NULL == (p = find_peer_by_id (pg->peer))) | 902 | if (NULL == (p = find_peer_by_id (pg->peer))) |
903 | { | 903 | { |
@@ -966,7 +966,7 @@ set_pref_task (void *cls, | |||
966 | struct PreferenceGenerator *pg = cls; | 966 | struct PreferenceGenerator *pg = cls; |
967 | struct TestPeer *p; | 967 | struct TestPeer *p; |
968 | double pref_value; | 968 | double pref_value; |
969 | pg->set_task = GNUNET_SCHEDULER_NO_TASK; | 969 | pg->set_task = NULL; |
970 | 970 | ||
971 | if (NULL == (p = find_peer_by_id (pg->peer))) | 971 | if (NULL == (p = find_peer_by_id (pg->peer))) |
972 | { | 972 | { |
@@ -1030,16 +1030,16 @@ GNUNET_ATS_solver_generate_preferences_stop (struct PreferenceGenerator *pg) | |||
1030 | { | 1030 | { |
1031 | GNUNET_CONTAINER_DLL_remove (pref_gen_head, pref_gen_tail, pg); | 1031 | GNUNET_CONTAINER_DLL_remove (pref_gen_head, pref_gen_tail, pg); |
1032 | 1032 | ||
1033 | if (GNUNET_SCHEDULER_NO_TASK != pg->feedback_task) | 1033 | if (NULL != pg->feedback_task) |
1034 | { | 1034 | { |
1035 | GNUNET_SCHEDULER_cancel (pg->feedback_task); | 1035 | GNUNET_SCHEDULER_cancel (pg->feedback_task); |
1036 | pg->feedback_task = GNUNET_SCHEDULER_NO_TASK; | 1036 | pg->feedback_task = NULL; |
1037 | } | 1037 | } |
1038 | 1038 | ||
1039 | if (GNUNET_SCHEDULER_NO_TASK != pg->set_task) | 1039 | if (NULL != pg->set_task) |
1040 | { | 1040 | { |
1041 | GNUNET_SCHEDULER_cancel (pg->set_task); | 1041 | GNUNET_SCHEDULER_cancel (pg->set_task); |
1042 | pg->set_task = GNUNET_SCHEDULER_NO_TASK; | 1042 | pg->set_task = NULL; |
1043 | } | 1043 | } |
1044 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 1044 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
1045 | "Removing old up preference generator peer [%u] `%s'\n", | 1045 | "Removing old up preference generator peer [%u] `%s'\n", |
@@ -2146,13 +2146,13 @@ static void | |||
2146 | timeout_experiment (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) | 2146 | timeout_experiment (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) |
2147 | { | 2147 | { |
2148 | struct Experiment *e = cls; | 2148 | struct Experiment *e = cls; |
2149 | e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2149 | e->experiment_timeout_task = NULL; |
2150 | fprintf (stderr, "Experiment timeout!\n"); | 2150 | fprintf (stderr, "Experiment timeout!\n"); |
2151 | 2151 | ||
2152 | if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task) | 2152 | if (NULL != e->episode_timeout_task) |
2153 | { | 2153 | { |
2154 | GNUNET_SCHEDULER_cancel (e->episode_timeout_task); | 2154 | GNUNET_SCHEDULER_cancel (e->episode_timeout_task); |
2155 | e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2155 | e->episode_timeout_task = NULL; |
2156 | } | 2156 | } |
2157 | 2157 | ||
2158 | e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), | 2158 | e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), |
@@ -2524,7 +2524,7 @@ static void | |||
2524 | timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) | 2524 | timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) |
2525 | { | 2525 | { |
2526 | struct Experiment *e = cls; | 2526 | struct Experiment *e = cls; |
2527 | e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2527 | e->episode_timeout_task = NULL; |
2528 | if (NULL != e->ep_done_cb) | 2528 | if (NULL != e->ep_done_cb) |
2529 | e->ep_done_cb (e->cur); | 2529 | e->ep_done_cb (e->cur); |
2530 | 2530 | ||
@@ -2534,10 +2534,10 @@ timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) | |||
2534 | { | 2534 | { |
2535 | /* done */ | 2535 | /* done */ |
2536 | fprintf (stderr, "Last episode done!\n"); | 2536 | fprintf (stderr, "Last episode done!\n"); |
2537 | if (GNUNET_SCHEDULER_NO_TASK != e->experiment_timeout_task) | 2537 | if (NULL != e->experiment_timeout_task) |
2538 | { | 2538 | { |
2539 | GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); | 2539 | GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); |
2540 | e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2540 | e->experiment_timeout_task = NULL; |
2541 | } | 2541 | } |
2542 | e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), GNUNET_OK); | 2542 | e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), GNUNET_OK); |
2543 | return; | 2543 | return; |
@@ -2589,15 +2589,15 @@ GNUNET_ATS_solvers_experimentation_run (struct Experiment *e, | |||
2589 | void | 2589 | void |
2590 | GNUNET_ATS_solvers_experimentation_stop (struct Experiment *e) | 2590 | GNUNET_ATS_solvers_experimentation_stop (struct Experiment *e) |
2591 | { | 2591 | { |
2592 | if (GNUNET_SCHEDULER_NO_TASK != e->experiment_timeout_task) | 2592 | if (NULL != e->experiment_timeout_task) |
2593 | { | 2593 | { |
2594 | GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); | 2594 | GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); |
2595 | e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2595 | e->experiment_timeout_task = NULL; |
2596 | } | 2596 | } |
2597 | if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task) | 2597 | if (NULL != e->episode_timeout_task) |
2598 | { | 2598 | { |
2599 | GNUNET_SCHEDULER_cancel (e->episode_timeout_task); | 2599 | GNUNET_SCHEDULER_cancel (e->episode_timeout_task); |
2600 | e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2600 | e->episode_timeout_task = NULL; |
2601 | } | 2601 | } |
2602 | if (NULL != e->cfg) | 2602 | if (NULL != e->cfg) |
2603 | { | 2603 | { |