From f1f603c7d0b3f03dca46a4f313472288eb080eb1 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 24 Dec 2014 01:10:47 +0000 Subject: making GNUNET_SCHEDULER_cancel() perform in O(1) instead of O(n) to help or even fully address #3247 --- src/ats-tests/ats-testing-experiment.c | 20 ++++++++++---------- src/ats-tests/ats-testing-log.c | 8 ++++---- src/ats-tests/ats-testing-preferences.c | 6 +++--- src/ats-tests/ats-testing-traffic.c | 6 +++--- src/ats-tests/ats-testing.c | 14 +++++++------- src/ats-tests/ats-testing.h | 14 +++++++------- src/ats-tests/gnunet-ats-sim.c | 6 +++--- src/ats-tests/gnunet-solver-eval.c | 20 ++++++++++---------- src/ats-tests/perf_ats.c | 16 ++++++++-------- src/ats-tests/perf_ats.h | 2 +- src/ats-tests/perf_ats_logging.c | 8 ++++---- 11 files changed, 60 insertions(+), 60 deletions(-) (limited to 'src/ats-tests') diff --git a/src/ats-tests/ats-testing-experiment.c b/src/ats-tests/ats-testing-experiment.c index b07d8fdcd..05c27cbc4 100644 --- a/src/ats-tests/ats-testing-experiment.c +++ b/src/ats-tests/ats-testing-experiment.c @@ -420,13 +420,13 @@ static void timeout_experiment (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { struct Experiment *e = cls; - e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->experiment_timeout_task = NULL; fprintf (stderr, "Experiment timeout!\n"); - if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task) + if (NULL != e->episode_timeout_task) { GNUNET_SCHEDULER_cancel (e->episode_timeout_task); - e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->episode_timeout_task = NULL; } e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), @@ -578,7 +578,7 @@ static void timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { struct Experiment *e = cls; - e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->episode_timeout_task = NULL; if (NULL != e->ep_done_cb) e->ep_done_cb (e->cur); @@ -588,10 +588,10 @@ timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { /* done */ fprintf (stderr, "Last episode done!\n"); - if (GNUNET_SCHEDULER_NO_TASK != e->experiment_timeout_task) + if (NULL != e->experiment_timeout_task) { GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); - e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->experiment_timeout_task = NULL; } e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), GNUNET_OK); return; @@ -728,15 +728,15 @@ GNUNET_ATS_TEST_experimentation_load (char *filename) void GNUNET_ATS_TEST_experimentation_stop (struct Experiment *e) { - if (GNUNET_SCHEDULER_NO_TASK != e->experiment_timeout_task) + if (NULL != e->experiment_timeout_task) { GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); - e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->experiment_timeout_task = NULL; } - if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task) + if (NULL != e->episode_timeout_task) { GNUNET_SCHEDULER_cancel (e->episode_timeout_task); - e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->episode_timeout_task = NULL; } free_experiment (e); } diff --git a/src/ats-tests/ats-testing-log.c b/src/ats-tests/ats-testing-log.c index e2367cc78..5b7a206b9 100644 --- a/src/ats-tests/ats-testing-log.c +++ b/src/ats-tests/ats-testing-log.c @@ -233,7 +233,7 @@ struct LoggingHandle /** * Logging task */ - GNUNET_SCHEDULER_TaskIdentifier log_task; + struct GNUNET_SCHEDULER_Task * log_task; /** * Reference to perf_ats' masters @@ -815,7 +815,7 @@ static void collect_log_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct LoggingHandle *l = cls; - l->log_task = GNUNET_SCHEDULER_NO_TASK; + l->log_task = NULL; GNUNET_ATS_TEST_logging_now (l); @@ -837,9 +837,9 @@ GNUNET_ATS_TEST_logging_stop (struct LoggingHandle *l) if (GNUNET_YES!= l->running) return; - if (GNUNET_SCHEDULER_NO_TASK != l->log_task) + if (NULL != l->log_task) GNUNET_SCHEDULER_cancel (l->log_task); - l->log_task = GNUNET_SCHEDULER_NO_TASK; + l->log_task = NULL; l->running = GNUNET_NO; GNUNET_log(GNUNET_ERROR_TYPE_INFO, diff --git a/src/ats-tests/ats-testing-preferences.c b/src/ats-tests/ats-testing-preferences.c index 1b11bd924..ba69ae8c5 100644 --- a/src/ats-tests/ats-testing-preferences.c +++ b/src/ats-tests/ats-testing-preferences.c @@ -96,7 +96,7 @@ set_pref_task (void *cls, { struct BenchmarkPartner *p = cls; double pref_value; - p->pg->set_task = GNUNET_SCHEDULER_NO_TASK; + p->pg->set_task = NULL; pref_value = get_preference (p->pg); @@ -214,10 +214,10 @@ GNUNET_ATS_TEST_generate_preferences_stop (struct PreferenceGenerator *pg) GNUNET_CONTAINER_DLL_remove (pg_head, pg_tail, pg); pg->dest->pg = NULL; - if (GNUNET_SCHEDULER_NO_TASK != pg->set_task) + if (NULL != pg->set_task) { GNUNET_SCHEDULER_cancel (pg->set_task); - pg->set_task = GNUNET_SCHEDULER_NO_TASK; + pg->set_task = NULL; } GNUNET_free (pg); diff --git a/src/ats-tests/ats-testing-traffic.c b/src/ats-tests/ats-testing-traffic.c index fca65b900..ffeaad126 100644 --- a/src/ats-tests/ats-testing-traffic.c +++ b/src/ats-tests/ats-testing-traffic.c @@ -171,7 +171,7 @@ comm_schedule_send (void *cls, { struct BenchmarkPartner *p = cls; - p->tg->send_task = GNUNET_SCHEDULER_NO_TASK; + p->tg->send_task = NULL; p->last_message_sent = GNUNET_TIME_absolute_get(); if (GNUNET_YES == top->test_core) { @@ -389,10 +389,10 @@ GNUNET_ATS_TEST_generate_traffic_stop (struct TrafficGenerator *tg) GNUNET_CONTAINER_DLL_remove (tg_head, tg_tail, tg); tg->dest->tg = NULL; - if (GNUNET_SCHEDULER_NO_TASK != tg->send_task) + if (NULL != tg->send_task) { GNUNET_SCHEDULER_cancel (tg->send_task); - tg->send_task = GNUNET_SCHEDULER_NO_TASK; + tg->send_task = NULL; } if (top->test_core) { diff --git a/src/ats-tests/ats-testing.c b/src/ats-tests/ats-testing.c index 23634974b..f64fa1822 100644 --- a/src/ats-tests/ats-testing.c +++ b/src/ats-tests/ats-testing.c @@ -66,7 +66,7 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) int c_op; struct BenchmarkPeer *p; - top->shutdown_task = GNUNET_SCHEDULER_NO_TASK; + top->shutdown_task = NULL; top->state.benchmarking = GNUNET_NO; GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Benchmarking done\n")); @@ -82,9 +82,9 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) p->peer_id_op = NULL; } - if (GNUNET_SCHEDULER_NO_TASK != p->ats_task) + if (NULL != p->ats_task) GNUNET_SCHEDULER_cancel (p->ats_task); - p->ats_task = GNUNET_SCHEDULER_NO_TASK; + p->ats_task = NULL; for (c_op = 0; c_op < p->num_partners; c_op++) { @@ -419,7 +419,7 @@ connect_completion_callback (void *cls, struct GNUNET_TESTBED_Operation *op, _("Failed to connect master peer [%u] with slave [%u]\n"), cop->master->no, cop->slave->no); GNUNET_break(0); - if (GNUNET_SCHEDULER_NO_TASK != top->shutdown_task) + if (NULL != top->shutdown_task) GNUNET_SCHEDULER_cancel (top->shutdown_task); top->shutdown_task = GNUNET_SCHEDULER_add_now (do_shutdown, NULL ); } @@ -470,7 +470,7 @@ do_connect_peers (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) _("Could not connect master [%u] and slave [%u]\n"), p->no, top->sps[c_s].no); GNUNET_break(0); - if (GNUNET_SCHEDULER_NO_TASK != top->shutdown_task) + if (NULL != top->shutdown_task) GNUNET_SCHEDULER_cancel (top->shutdown_task); top->shutdown_task = GNUNET_SCHEDULER_add_now (do_shutdown, NULL ); return; @@ -489,7 +489,7 @@ comm_connect_completion_cb (void *cls, struct GNUNET_TESTBED_Operation *op, { GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Initialization failed, shutdown\n")); GNUNET_break(0); - if (GNUNET_SCHEDULER_NO_TASK != top->shutdown_task) + if (NULL != top->shutdown_task) GNUNET_SCHEDULER_cancel (top->shutdown_task); top->shutdown_task = GNUNET_SCHEDULER_add_now (do_shutdown, NULL ); return; @@ -676,7 +676,7 @@ ats_connect_completion_cb (void *cls, struct GNUNET_TESTBED_Operation *op, { GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Initialization failed, shutdown\n")); GNUNET_break(0); - if (GNUNET_SCHEDULER_NO_TASK != top->shutdown_task) + if (NULL != top->shutdown_task) GNUNET_SCHEDULER_cancel (top->shutdown_task); top->shutdown_task = GNUNET_SCHEDULER_add_now (do_shutdown, NULL ); return; diff --git a/src/ats-tests/ats-testing.h b/src/ats-tests/ats-testing.h index c74a460f0..0be6aa914 100644 --- a/src/ats-tests/ats-testing.h +++ b/src/ats-tests/ats-testing.h @@ -167,7 +167,7 @@ struct BenchmarkPeer * Masters only * Progress task */ - GNUNET_SCHEDULER_TaskIdentifier ats_task; + struct GNUNET_SCHEDULER_Task * ats_task; /** * Masters only @@ -232,7 +232,7 @@ struct TrafficGenerator long int max_rate; struct GNUNET_TIME_Relative duration_period; - GNUNET_SCHEDULER_TaskIdentifier send_task; + struct GNUNET_SCHEDULER_Task * send_task; struct GNUNET_TIME_Absolute next_ping_transmission; struct GNUNET_TIME_Absolute time_start; }; @@ -255,7 +255,7 @@ struct PreferenceGenerator struct GNUNET_TIME_Relative duration_period; struct GNUNET_TIME_Relative frequency; - GNUNET_SCHEDULER_TaskIdentifier set_task; + struct GNUNET_SCHEDULER_Task * set_task; struct GNUNET_TIME_Absolute next_ping_transmission; struct GNUNET_TIME_Absolute time_start; }; @@ -381,12 +381,12 @@ struct GNUNET_ATS_TEST_Topology /** * Shutdown task */ - GNUNET_SCHEDULER_TaskIdentifier shutdown_task; + struct GNUNET_SCHEDULER_Task * shutdown_task; /** * Progress task */ - GNUNET_SCHEDULER_TaskIdentifier progress_task; + struct GNUNET_SCHEDULER_Task * progress_task; /** * Test result @@ -524,8 +524,8 @@ struct Experiment unsigned int num_episodes; struct Episode *start; - GNUNET_SCHEDULER_TaskIdentifier experiment_timeout_task; - GNUNET_SCHEDULER_TaskIdentifier episode_timeout_task; + struct GNUNET_SCHEDULER_Task * experiment_timeout_task; + struct GNUNET_SCHEDULER_Task * episode_timeout_task; struct Episode *cur; GNUNET_ATS_TESTING_EpisodeDoneCallback ep_done_cb; diff --git a/src/ats-tests/gnunet-ats-sim.c b/src/ats-tests/gnunet-ats-sim.c index 0659af05d..10a85702f 100644 --- a/src/ats-tests/gnunet-ats-sim.c +++ b/src/ats-tests/gnunet-ats-sim.c @@ -57,7 +57,7 @@ static int opt_plot; */ static int opt_verbose; -GNUNET_SCHEDULER_TaskIdentifier timeout_task; +struct GNUNET_SCHEDULER_Task * timeout_task; struct Experiment *e; struct LoggingHandle *l; @@ -183,10 +183,10 @@ experiment_done_cb (struct Experiment *e, struct GNUNET_TIME_Relative duration,i GNUNET_STRINGS_relative_time_to_string (duration, GNUNET_YES)); else GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment failed \n"); - if (GNUNET_SCHEDULER_NO_TASK != timeout_task) + if (NULL != timeout_task) { GNUNET_SCHEDULER_cancel (timeout_task); - timeout_task = GNUNET_SCHEDULER_NO_TASK; + timeout_task = NULL; } /* Stop logging */ GNUNET_ATS_TEST_logging_stop (l); diff --git a/src/ats-tests/gnunet-solver-eval.c b/src/ats-tests/gnunet-solver-eval.c index 9432f429d..91185f645 100644 --- a/src/ats-tests/gnunet-solver-eval.c +++ b/src/ats-tests/gnunet-solver-eval.c @@ -422,13 +422,13 @@ static void timeout_experiment (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { struct Experiment *e = cls; - e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->experiment_timeout_task = NULL; fprintf (stderr, "Experiment timeout!\n"); - if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task) + if (NULL != e->episode_timeout_task) { GNUNET_SCHEDULER_cancel (e->episode_timeout_task); - e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->episode_timeout_task = NULL; } e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), @@ -588,7 +588,7 @@ static void timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { struct Experiment *e = cls; - e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->episode_timeout_task = NULL; if (NULL != e->ep_done_cb) e->ep_done_cb (e->cur); @@ -598,10 +598,10 @@ timeout_episode (void *cls, const struct GNUNET_SCHEDULER_TaskContext* tc) { /* done */ fprintf (stderr, "Last episode done!\n"); - if (GNUNET_SCHEDULER_NO_TASK != e->experiment_timeout_task) + if (NULL != e->experiment_timeout_task) { GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); - e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->experiment_timeout_task = NULL; } e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time), GNUNET_OK); return; @@ -738,15 +738,15 @@ GNUNET_ATS_solvers_experimentation_load (char *filename) void GNUNET_ATS_solvers_experimentation_stop (struct Experiment *e) { - if (GNUNET_SCHEDULER_NO_TASK != e->experiment_timeout_task) + if (NULL != e->experiment_timeout_task) { GNUNET_SCHEDULER_cancel (e->experiment_timeout_task); - e->experiment_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->experiment_timeout_task = NULL; } - if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task) + if (NULL != e->episode_timeout_task) { GNUNET_SCHEDULER_cancel (e->episode_timeout_task); - e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK; + e->episode_timeout_task = NULL; } free_experiment (e); } diff --git a/src/ats-tests/perf_ats.c b/src/ats-tests/perf_ats.c index 7b5a903be..f57ac19f0 100644 --- a/src/ats-tests/perf_ats.c +++ b/src/ats-tests/perf_ats.c @@ -46,12 +46,12 @@ /** * Shutdown task */ -static GNUNET_SCHEDULER_TaskIdentifier shutdown_task; +static struct GNUNET_SCHEDULER_Task * shutdown_task; /** * Progress task */ -static GNUNET_SCHEDULER_TaskIdentifier progress_task; +static struct GNUNET_SCHEDULER_Task * progress_task; /** * Test result @@ -194,13 +194,13 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) if (GNUNET_YES == logging) GNUNET_ATS_TEST_logging_clean_up(l); - shutdown_task = GNUNET_SCHEDULER_NO_TASK; - if (GNUNET_SCHEDULER_NO_TASK != progress_task) + shutdown_task = NULL; + if (NULL != progress_task) { fprintf (stderr, "0\n"); GNUNET_SCHEDULER_cancel (progress_task); } - progress_task = GNUNET_SCHEDULER_NO_TASK; + progress_task = NULL; evaluate (); GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Benchmarking done\n")); @@ -213,7 +213,7 @@ static void print_progress () { static int calls; - progress_task = GNUNET_SCHEDULER_NO_TASK; + progress_task = NULL; fprintf (stderr, "%llu..", (long long unsigned) perf_duration.rel_value_us / (1000 * 1000) - calls); @@ -228,7 +228,7 @@ ats_pref_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct BenchmarkPeer *me = cls; - me->ats_task = GNUNET_SCHEDULER_NO_TASK; + me->ats_task = NULL; GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, " Master [%u] set preference for slave [%u] to %f\n", me->no, me->pref_partner->no, me->pref_value); @@ -248,7 +248,7 @@ start_benchmark() GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Benchmarking start\n")); - if (GNUNET_SCHEDULER_NO_TASK != shutdown_task) + if (NULL != shutdown_task) GNUNET_SCHEDULER_cancel(shutdown_task); shutdown_task = GNUNET_SCHEDULER_add_delayed(perf_duration, &do_shutdown, NULL ); diff --git a/src/ats-tests/perf_ats.h b/src/ats-tests/perf_ats.h index cad194313..4ea6af2cc 100644 --- a/src/ats-tests/perf_ats.h +++ b/src/ats-tests/perf_ats.h @@ -196,7 +196,7 @@ struct BenchmarkPeer * Masters only * Progress task */ - GNUNET_SCHEDULER_TaskIdentifier ats_task; + struct GNUNET_SCHEDULER_Task * ats_task; /** * Masters only diff --git a/src/ats-tests/perf_ats_logging.c b/src/ats-tests/perf_ats_logging.c index 823cfaf38..740a827fe 100644 --- a/src/ats-tests/perf_ats_logging.c +++ b/src/ats-tests/perf_ats_logging.c @@ -72,7 +72,7 @@ /** * Logging task */ -static GNUNET_SCHEDULER_TaskIdentifier log_task; +static struct GNUNET_SCHEDULER_Task * log_task; /** * Reference to perf_ats' masters @@ -639,7 +639,7 @@ collect_log_now (void) static void collect_log_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - log_task = GNUNET_SCHEDULER_NO_TASK; + log_task = NULL; collect_log_now(); @@ -661,9 +661,9 @@ perf_logging_stop () if (GNUNET_YES!= running) return; - if (GNUNET_SCHEDULER_NO_TASK != log_task) + if (NULL != log_task) GNUNET_SCHEDULER_cancel (log_task); - log_task = GNUNET_SCHEDULER_NO_TASK; + log_task = NULL; tc.reason = GNUNET_SCHEDULER_REASON_SHUTDOWN; collect_log_task (NULL, &tc); -- cgit v1.2.3