diff options
Diffstat (limited to 'src/util/speedup.c')
-rw-r--r-- | src/util/speedup.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/util/speedup.c b/src/util/speedup.c index 6dce6a490..97df65c8e 100644 --- a/src/util/speedup.c +++ b/src/util/speedup.c | |||
@@ -41,18 +41,16 @@ static void | |||
41 | do_speedup (void *cls) | 41 | do_speedup (void *cls) |
42 | { | 42 | { |
43 | static long long current_offset; | 43 | static long long current_offset; |
44 | const struct GNUNET_SCHEDULER_TaskContext *tc; | ||
45 | 44 | ||
46 | speedup_task = NULL; | 45 | speedup_task = NULL; |
47 | tc = GNUNET_SCHEDULER_get_task_context (); | ||
48 | if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) | ||
49 | return; | ||
50 | current_offset += delta.rel_value_us; | 46 | current_offset += delta.rel_value_us; |
51 | GNUNET_TIME_set_offset (current_offset); | 47 | GNUNET_TIME_set_offset (current_offset); |
52 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 48 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
53 | "Speeding up execution time by %s\n", | 49 | "Speeding up execution time by %s\n", |
54 | GNUNET_STRINGS_relative_time_to_string (delta, GNUNET_NO)); | 50 | GNUNET_STRINGS_relative_time_to_string (delta, GNUNET_NO)); |
55 | speedup_task = GNUNET_SCHEDULER_add_delayed (interval, &do_speedup, NULL); | 51 | speedup_task = GNUNET_SCHEDULER_add_delayed (interval, |
52 | &do_speedup, | ||
53 | NULL); | ||
56 | } | 54 | } |
57 | 55 | ||
58 | 56 | ||
@@ -65,16 +63,22 @@ do_speedup (void *cls) | |||
65 | int | 63 | int |
66 | GNUNET_SPEEDUP_start_ (const struct GNUNET_CONFIGURATION_Handle *cfg) | 64 | GNUNET_SPEEDUP_start_ (const struct GNUNET_CONFIGURATION_Handle *cfg) |
67 | { | 65 | { |
66 | GNUNET_assert (NULL == speedup_task); | ||
68 | if (GNUNET_OK != | 67 | if (GNUNET_OK != |
69 | GNUNET_CONFIGURATION_get_value_time (cfg, "testing", | 68 | GNUNET_CONFIGURATION_get_value_time (cfg, |
70 | "SPEEDUP_INTERVAL", &interval)) | 69 | "testing", |
70 | "SPEEDUP_INTERVAL", | ||
71 | &interval)) | ||
71 | return GNUNET_SYSERR; | 72 | return GNUNET_SYSERR; |
72 | if (GNUNET_OK != | 73 | if (GNUNET_OK != |
73 | GNUNET_CONFIGURATION_get_value_time (cfg, "testing", | 74 | GNUNET_CONFIGURATION_get_value_time (cfg, |
74 | "SPEEDUP_DELTA", &delta)) | 75 | "testing", |
76 | "SPEEDUP_DELTA", | ||
77 | &delta)) | ||
75 | return GNUNET_SYSERR; | 78 | return GNUNET_SYSERR; |
76 | 79 | ||
77 | if ((0 == interval.rel_value_us) || (0 == delta.rel_value_us)) | 80 | if ( (0 == interval.rel_value_us) || |
81 | (0 == delta.rel_value_us) ) | ||
78 | { | 82 | { |
79 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 83 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
80 | "Speed up disabled\n"); | 84 | "Speed up disabled\n"); |
@@ -87,7 +91,8 @@ GNUNET_SPEEDUP_start_ (const struct GNUNET_CONFIGURATION_Handle *cfg) | |||
87 | "Speed up executed every %s\n", | 91 | "Speed up executed every %s\n", |
88 | GNUNET_STRINGS_relative_time_to_string (interval, GNUNET_NO)); | 92 | GNUNET_STRINGS_relative_time_to_string (interval, GNUNET_NO)); |
89 | speedup_task = GNUNET_SCHEDULER_add_now_with_lifeness (GNUNET_NO, | 93 | speedup_task = GNUNET_SCHEDULER_add_now_with_lifeness (GNUNET_NO, |
90 | &do_speedup, NULL); | 94 | &do_speedup, |
95 | NULL); | ||
91 | return GNUNET_OK; | 96 | return GNUNET_OK; |
92 | } | 97 | } |
93 | 98 | ||
@@ -109,6 +114,4 @@ GNUNET_SPEEDUP_stop_ () | |||
109 | "Stopped execution speed up\n"); | 114 | "Stopped execution speed up\n"); |
110 | } | 115 | } |
111 | 116 | ||
112 | |||
113 | |||
114 | /* end of speedup.c */ | 117 | /* end of speedup.c */ |