diff options
author | lurchi <lurchi@strangeplace.net> | 2018-01-16 18:43:27 +0100 |
---|---|---|
committer | lurchi <lurchi@strangeplace.net> | 2018-01-16 18:43:27 +0100 |
commit | dcb1ec0a1da2760918b8316c0e9b3596bc1f4190 (patch) | |
tree | a2852a2c0bb7fd86f7bb77d460aab8faa1eba7bf /src | |
parent | 015ad2bb1d78985a255adc1260a8a3f210dcb869 (diff) | |
download | gnunet-dcb1ec0a1da2760918b8316c0e9b3596bc1f4190.tar.gz gnunet-dcb1ec0a1da2760918b8316c0e9b3596bc1f4190.zip |
only check fdsets when select selected something (optimization)
Diffstat (limited to 'src')
-rw-r--r-- | src/util/scheduler.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/util/scheduler.c b/src/util/scheduler.c index 6d4a8b354..a14d4f1d7 100644 --- a/src/util/scheduler.c +++ b/src/util/scheduler.c | |||
@@ -2272,24 +2272,27 @@ select_loop (void *cls, | |||
2272 | GNUNET_NETWORK_fdset_destroy (ws); | 2272 | GNUNET_NETWORK_fdset_destroy (ws); |
2273 | return GNUNET_SYSERR; | 2273 | return GNUNET_SYSERR; |
2274 | } | 2274 | } |
2275 | for (pos = context->scheduled_head; NULL != pos; pos = pos->next) | 2275 | if (select_result > 0) |
2276 | { | 2276 | { |
2277 | int is_ready = GNUNET_NO; | 2277 | for (pos = context->scheduled_head; NULL != pos; pos = pos->next) |
2278 | if (0 != (GNUNET_SCHEDULER_ET_IN & pos->et) && | ||
2279 | GNUNET_YES == GNUNET_NETWORK_fdset_test_native (rs, pos->fdi->sock)) | ||
2280 | { | ||
2281 | pos->fdi->et |= GNUNET_SCHEDULER_ET_IN; | ||
2282 | is_ready = GNUNET_YES; | ||
2283 | } | ||
2284 | if (0 != (GNUNET_SCHEDULER_ET_OUT & pos->et) && | ||
2285 | GNUNET_YES == GNUNET_NETWORK_fdset_test_native (ws, pos->fdi->sock)) | ||
2286 | { | 2278 | { |
2287 | pos->fdi->et |= GNUNET_SCHEDULER_ET_OUT; | 2279 | int is_ready = GNUNET_NO; |
2288 | is_ready = GNUNET_YES; | 2280 | if (0 != (GNUNET_SCHEDULER_ET_IN & pos->et) && |
2289 | } | 2281 | GNUNET_YES == GNUNET_NETWORK_fdset_test_native (rs, pos->fdi->sock)) |
2290 | if (GNUNET_YES == is_ready) | 2282 | { |
2291 | { | 2283 | pos->fdi->et |= GNUNET_SCHEDULER_ET_IN; |
2292 | GNUNET_SCHEDULER_task_ready (pos->task, pos->fdi); | 2284 | is_ready = GNUNET_YES; |
2285 | } | ||
2286 | if (0 != (GNUNET_SCHEDULER_ET_OUT & pos->et) && | ||
2287 | GNUNET_YES == GNUNET_NETWORK_fdset_test_native (ws, pos->fdi->sock)) | ||
2288 | { | ||
2289 | pos->fdi->et |= GNUNET_SCHEDULER_ET_OUT; | ||
2290 | is_ready = GNUNET_YES; | ||
2291 | } | ||
2292 | if (GNUNET_YES == is_ready) | ||
2293 | { | ||
2294 | GNUNET_SCHEDULER_task_ready (pos->task, pos->fdi); | ||
2295 | } | ||
2293 | } | 2296 | } |
2294 | } | 2297 | } |
2295 | tasks_ready = GNUNET_SCHEDULER_run_from_driver (sh); | 2298 | tasks_ready = GNUNET_SCHEDULER_run_from_driver (sh); |