#include "gnunet_signal_lib.h"
#include "gnunet_time_lib.h"
#include "disk.h"
+#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
+
+#define LOG_STRERROR(kind,syscall) GNUNET_log_from_strerror (kind, "util", syscall)
#ifdef LINUX
#include "execinfo.h"
+
/**
* Use lsof to generate file descriptor reports on select error?
* (turn off for stable releases).
/**
* Check each file descriptor before adding
*/
-#define DEBUG_FDS GNUNET_NO
+#define DEBUG_FDS GNUNET_EXTRA_LOGGING
/**
* Depth of the traces collected via EXECINFO.
#define MAX_TRACE_DEPTH 50
#endif
-#define DEBUG_TASKS GNUNET_NO
+#define DEBUG_TASKS GNUNET_EXTRA_LOGGING
/**
* Should we figure out which tasks are delayed for a while
* Sets the select function to use in the scheduler (scheduler_select).
*
* @param new_select new select function to use
+ * @param new_select_cls closure for 'new_select'
* @return previously used select function, NULL for default
*/
void
while (pos != NULL)
{
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Checking readiness of task: %llu / %p\n", pos->id,
- pos->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Checking readiness of task: %llu / %p\n",
+ pos->id, pos->callback_cls);
#endif
next = pos->next;
if (GNUNET_YES == is_ready (pos, now, rs, ws))
if (GNUNET_TIME_absolute_get_duration (pos->start_time).rel_value >
DELAY_THRESHOLD.rel_value)
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Task %llu took %llums to be scheduled\n", pos->id,
- (unsigned long long)
- GNUNET_TIME_absolute_get_duration
- (pos->start_time).rel_value);
+ LOG (GNUNET_ERROR_TYPE_ERROR, "Task %llu took %llums to be scheduled\n",
+ pos->id,
+ (unsigned long long)
+ GNUNET_TIME_absolute_get_duration (pos->start_time).rel_value);
}
#endif
tc.reason = pos->reason;
if (((tc.reason & GNUNET_SCHEDULER_REASON_WRITE_READY) != 0) &&
(pos->write_fd != -1) &&
(!GNUNET_NETWORK_fdset_test_native (ws, pos->write_fd)))
- abort (); // added to ready in previous select loop!
+ GNUNET_abort (); // added to ready in previous select loop!
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Running task: %llu / %p\n", pos->id,
- pos->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Running task: %llu / %p\n", pos->id,
+ pos->callback_cls);
#endif
pos->callback (pos->callback_cls, &tc);
#if EXECINFO
int i;
for (i = 0; i < pos->num_backtrace_strings; i++)
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Task %llu trace %d: %s\n", pos->id,
- i, pos->backtrace_strings[i]);
+ LOG (GNUNET_ERROR_TYPE_ERROR, "Task %llu trace %d: %s\n", pos->id, i,
+ pos->backtrace_strings[i]);
#endif
active_task = NULL;
destroy_task (pos);
if (errno == EINTR)
continue;
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "select");
+ LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "select");
#ifndef MINGW
#if USE_LSOF
char lsof[512];
(void) close (1);
(void) dup2 (2, 1);
if (0 != system (lsof))
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "system");
+ LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "system");
#endif
#endif
- abort ();
+ GNUNET_abort ();
break;
}
if ((ret == 0) && (timeout.rel_value == 0) && (busy_wait_warning > 16))
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _("Looks like we're busy waiting...\n"));
+ LOG (GNUNET_ERROR_TYPE_WARNING, _("Looks like we're busy waiting...\n"));
sleep (1); /* mitigate */
}
check_ready (rs, ws);
p++;
if (p >= GNUNET_SCHEDULER_PRIORITY_COUNT)
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("Attempt to cancel dead task %llu!\n"),
- (unsigned long long) task);
+ LOG (GNUNET_ERROR_TYPE_ERROR, _("Attempt to cancel dead task %llu!\n"),
+ (unsigned long long) task);
GNUNET_assert (0);
}
prev = NULL;
}
ret = t->callback_cls;
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Canceling task: %llu / %p\n", task,
- t->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Canceling task: %llu / %p\n", task,
+ t->callback_cls);
#endif
destroy_task (t);
return ret;
t->priority = current_priority;
t->lifeness = current_lifeness;
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding continuation task: %llu / %p\n",
- t->id, t->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Adding continuation task: %llu / %p\n", t->id,
+ t->callback_cls);
#endif
queue_ready_task (t);
}
pending_timeout_last = t;
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding task: %llu / %p\n", t->id,
- t->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Adding task: %llu / %p\n", t->id,
+ t->callback_cls);
#endif
#if EXECINFO
int i;
for (i = 0; i < t->num_backtrace_strings; i++)
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Task %llu trace %d: %s\n", t->id, i,
- t->backtrace_strings[i]);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Task %llu trace %d: %s\n", t->id, i,
+ t->backtrace_strings[i]);
#endif
return t->id;
* only valid until "task" is started!
*/
#ifndef MINGW
-GNUNET_SCHEDULER_TaskIdentifier
+static GNUNET_SCHEDULER_TaskIdentifier
add_without_sets (struct GNUNET_TIME_Relative delay, int rfd, int wfd,
GNUNET_SCHEDULER_Task task, void *task_cls)
{
{
int flags = fcntl (rfd, F_GETFD);
- if (flags == -1 && errno == EBADF)
+ if ((flags == -1) && (errno == EBADF))
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Got invalid file descriptor %d!\n",
- rfd);
+ LOG (GNUNET_ERROR_TYPE_ERROR, "Got invalid file descriptor %d!\n", rfd);
#if EXECINFO
int i;
for (i = 0; i < t->num_backtrace_strings; i++)
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Trace: %s\n",
- t->backtrace_strings[i]);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Trace: %s\n", t->backtrace_strings[i]);
#endif
GNUNET_assert (0);
}
if (flags == -1 && errno == EBADF)
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Got invalid file descriptor %d!\n",
- wfd);
+ LOG (GNUNET_ERROR_TYPE_ERROR, "Got invalid file descriptor %d!\n", wfd);
#if EXECINFO
int i;
for (i = 0; i < t->num_backtrace_strings; i++)
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Trace: %s\n",
- t->backtrace_strings[i]);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Trace: %s\n", t->backtrace_strings[i]);
#endif
GNUNET_assert (0);
}
pending = t;
max_priority_added = GNUNET_MAX (max_priority_added, t->priority);
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding task: %llu / %p\n", t->id,
- t->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Adding task: %llu / %p\n", t->id,
+ t->callback_cls);
#endif
#if EXECINFO
int i;
for (i = 0; i < t->num_backtrace_strings; i++)
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Task %llu trace %d: %s\n", t->id, i,
- t->backtrace_strings[i]);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Task %llu trace %d: %s\n", t->id, i,
+ t->backtrace_strings[i]);
#endif
return t->id;
}
pending = t;
max_priority_added = GNUNET_MAX (max_priority_added, t->priority);
#if DEBUG_TASKS
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding task: %llu / %p\n", t->id,
- t->callback_cls);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Adding task: %llu / %p\n", t->id,
+ t->callback_cls);
#endif
#if EXECINFO
int i;
for (i = 0; i < t->num_backtrace_strings; i++)
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Task %llu trace %d: %s\n", t->id, i,
- t->backtrace_strings[i]);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Task %llu trace %d: %s\n", t->id, i,
+ t->backtrace_strings[i]);
#endif
return t->id;
}