summaryrefslogtreecommitdiff
path: root/src/util/scheduler.c
diff options
context:
space:
mode:
authorlurchi <lurchi@strangeplace.net>2018-01-16 18:43:27 +0100
committerlurchi <lurchi@strangeplace.net>2018-01-16 18:43:27 +0100
commitdcb1ec0a1da2760918b8316c0e9b3596bc1f4190 (patch)
treea2852a2c0bb7fd86f7bb77d460aab8faa1eba7bf /src/util/scheduler.c
parent015ad2bb1d78985a255adc1260a8a3f210dcb869 (diff)
downloadgnunet-dcb1ec0a1da2760918b8316c0e9b3596bc1f4190.tar.gz
gnunet-dcb1ec0a1da2760918b8316c0e9b3596bc1f4190.zip
only check fdsets when select selected something (optimization)
Diffstat (limited to 'src/util/scheduler.c')
-rw-r--r--src/util/scheduler.c35
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);