aboutsummaryrefslogtreecommitdiff
path: root/src/util/scheduler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/scheduler.c')
-rw-r--r--src/util/scheduler.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/util/scheduler.c b/src/util/scheduler.c
index b96e4e6c4..fecbc0de5 100644
--- a/src/util/scheduler.c
+++ b/src/util/scheduler.c
@@ -513,14 +513,14 @@ static void
513dump_backtrace (struct GNUNET_SCHEDULER_Task *t) 513dump_backtrace (struct GNUNET_SCHEDULER_Task *t)
514{ 514{
515#if EXECINFO 515#if EXECINFO
516 unsigned int i; 516 for (unsigned int i = 0; i < t->num_backtrace_strings; i++)
517
518 for (i = 0; i < t->num_backtrace_strings; i++)
519 LOG (GNUNET_ERROR_TYPE_WARNING, 517 LOG (GNUNET_ERROR_TYPE_WARNING,
520 "Task %p trace %u: %s\n", 518 "Task %p trace %u: %s\n",
521 t, 519 t,
522 i, 520 i,
523 t->backtrace_strings[i]); 521 t->backtrace_strings[i]);
522#else
523 (void) t;
524#endif 524#endif
525} 525}
526 526
@@ -847,20 +847,19 @@ init_fd_info (struct GNUNET_SCHEDULER_Task *t,
847 * @param et the event type to be set in each FdInfo after calling 847 * @param et the event type to be set in each FdInfo after calling
848 * @a driver_func on it, or -1 if no updating not desired. 848 * @a driver_func on it, or -1 if no updating not desired.
849 */ 849 */
850void driver_add_multiple (struct GNUNET_SCHEDULER_Task *t, 850static void
851 enum GNUNET_SCHEDULER_EventType et) 851driver_add_multiple (struct GNUNET_SCHEDULER_Task *t)
852{ 852{
853 struct GNUNET_SCHEDULER_FdInfo *fdi; 853 struct GNUNET_SCHEDULER_FdInfo *fdi;
854 int success = GNUNET_YES; 854 int success = GNUNET_YES;
855 855
856 for (int i = 0; i != t->fds_len; ++i) 856 for (unsigned int i = 0; i != t->fds_len; ++i)
857 { 857 {
858 fdi = &t->fds[i]; 858 fdi = &t->fds[i];
859 success = scheduler_driver->add (scheduler_driver->cls, t, fdi) && success; 859 success = scheduler_driver->add (scheduler_driver->cls,
860 if (et != -1) 860 t,
861 { 861 fdi) && success;
862 fdi->et = et; 862 fdi->et = GNUNET_SCHEDULER_ET_NONE;
863 }
864 } 863 }
865 if (GNUNET_YES != success) 864 if (GNUNET_YES != success)
866 { 865 {
@@ -870,12 +869,13 @@ void driver_add_multiple (struct GNUNET_SCHEDULER_Task *t,
870} 869}
871 870
872 871
873void 872static void
874shutdown_cb (void *cls) 873shutdown_cb (void *cls)
875{ 874{
876 char c; 875 char c;
877 const struct GNUNET_DISK_FileHandle *pr; 876 const struct GNUNET_DISK_FileHandle *pr;
878 877
878 (void) cls;
879 pr = GNUNET_DISK_pipe_handle (shutdown_pipe_handle, 879 pr = GNUNET_DISK_pipe_handle (shutdown_pipe_handle,
880 GNUNET_DISK_PIPE_END_READ); 880 GNUNET_DISK_PIPE_END_READ);
881 GNUNET_assert (! GNUNET_DISK_handle_invalid (pr)); 881 GNUNET_assert (! GNUNET_DISK_handle_invalid (pr));
@@ -975,6 +975,8 @@ init_backtrace (struct GNUNET_SCHEDULER_Task *t)
975 backtrace_symbols (backtrace_array, 975 backtrace_symbols (backtrace_array,
976 t->num_backtrace_strings); 976 t->num_backtrace_strings);
977 dump_backtrace (t); 977 dump_backtrace (t);
978#else
979 (void) t;
978#endif 980#endif
979} 981}
980 982
@@ -1375,7 +1377,7 @@ add_without_sets (struct GNUNET_TIME_Relative delay,
1375 GNUNET_CONTAINER_DLL_insert (pending_head, 1377 GNUNET_CONTAINER_DLL_insert (pending_head,
1376 pending_tail, 1378 pending_tail,
1377 t); 1379 t);
1378 driver_add_multiple (t, GNUNET_SCHEDULER_ET_NONE); 1380 driver_add_multiple (t);
1379 max_priority_added = GNUNET_MAX (max_priority_added, 1381 max_priority_added = GNUNET_MAX (max_priority_added,
1380 t->priority); 1382 t->priority);
1381 init_backtrace (t); 1383 init_backtrace (t);
@@ -1664,14 +1666,15 @@ extract_handles (struct GNUNET_SCHEDULER_Task *t,
1664 // in fdset must be handled separately 1666 // in fdset must be handled separately
1665 const struct GNUNET_NETWORK_Handle **nhandles; 1667 const struct GNUNET_NETWORK_Handle **nhandles;
1666 const struct GNUNET_DISK_FileHandle **fhandles; 1668 const struct GNUNET_DISK_FileHandle **fhandles;
1667 unsigned int nhandles_len, fhandles_len; 1669 unsigned int nhandles_len;
1668 int sock; 1670 unsigned int fhandles_len;
1669 1671
1672 (void) t;
1670 nhandles = NULL; 1673 nhandles = NULL;
1671 fhandles = NULL; 1674 fhandles = NULL;
1672 nhandles_len = 0; 1675 nhandles_len = 0;
1673 fhandles_len = 0; 1676 fhandles_len = 0;
1674 for (sock = 0; sock != fdset->nsds; ++sock) 1677 for (int sock = 0; sock != fdset->nsds; ++sock)
1675 { 1678 {
1676 if (GNUNET_YES == GNUNET_NETWORK_fdset_test_native (fdset, sock)) 1679 if (GNUNET_YES == GNUNET_NETWORK_fdset_test_native (fdset, sock))
1677 { 1680 {
@@ -1816,7 +1819,7 @@ GNUNET_SCHEDULER_add_select (enum GNUNET_SCHEDULER_Priority prio,
1816 GNUNET_CONTAINER_DLL_insert (pending_head, 1819 GNUNET_CONTAINER_DLL_insert (pending_head,
1817 pending_tail, 1820 pending_tail,
1818 t); 1821 t);
1819 driver_add_multiple (t, GNUNET_SCHEDULER_ET_NONE); 1822 driver_add_multiple (t);
1820 max_priority_added = GNUNET_MAX (max_priority_added, 1823 max_priority_added = GNUNET_MAX (max_priority_added,
1821 t->priority); 1824 t->priority);
1822 LOG (GNUNET_ERROR_TYPE_DEBUG, 1825 LOG (GNUNET_ERROR_TYPE_DEBUG,
@@ -1969,7 +1972,7 @@ GNUNET_SCHEDULER_run_from_driver (struct GNUNET_SCHEDULER_Handle *sh)
1969 // FIXME: do we have to remove FdInfos from fds if they are not ready? 1972 // FIXME: do we have to remove FdInfos from fds if they are not ready?
1970 tc.fds_len = pos->fds_len; 1973 tc.fds_len = pos->fds_len;
1971 tc.fds = pos->fds; 1974 tc.fds = pos->fds;
1972 for (int i = 0; i != pos->fds_len; ++i) 1975 for (unsigned int i = 0; i != pos->fds_len; ++i)
1973 { 1976 {
1974 struct GNUNET_SCHEDULER_FdInfo *fdi = &pos->fds[i]; 1977 struct GNUNET_SCHEDULER_FdInfo *fdi = &pos->fds[i];
1975 if (0 != (GNUNET_SCHEDULER_ET_IN & fdi->et)) 1978 if (0 != (GNUNET_SCHEDULER_ET_IN & fdi->et))