This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
the scheduler needs to be wakenup when tasks are added or removed from
the task queues. Returns context to the platform specific scheduler. */
the scheduler needs to be wakenup when tasks are added or removed from
the task queues. Returns context to the platform specific scheduler. */
silc_schedule_task_add(schedule, internal->wakeup_pipe[0],
silc_schedule_wakeup_cb, internal,
silc_schedule_task_add(schedule, internal->wakeup_pipe[0],
silc_schedule_wakeup_cb, internal,
/* Uninitializes the platform specific scheduler context. */
void silc_schedule_internal_uninit(void *context)
/* Uninitializes the platform specific scheduler context. */
void silc_schedule_internal_uninit(void *context)
for (i = 0; i < SIGNAL_COUNT; i++) {
if (!internal->signal_call[i].signal) {
internal->signal_call[i].signal = signal;
internal->signal_call[i].callback = callback;
internal->signal_call[i].context = callback_context;
internal->signal_call[i].call = FALSE;
for (i = 0; i < SIGNAL_COUNT; i++) {
if (!internal->signal_call[i].signal) {
internal->signal_call[i].signal = signal;
internal->signal_call[i].callback = callback;
internal->signal_call[i].context = callback_context;
internal->signal_call[i].call = FALSE;
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].signal == signal &&
internal->signal_call[i].callback == callback &&
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].signal == signal &&
internal->signal_call[i].callback == callback &&
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].call &&
internal->signal_call[i].callback) {
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].call &&
internal->signal_call[i].callback) {
- internal->signal_call[i].callback(schedule, SILC_TASK_INTERRUPT,
+ SILC_LOG_DEBUG(("Calling signal %d callback",
+ internal->signal_call[i].signal));
+ internal->signal_call[i].callback(schedule, internal->app_context,
+ SILC_TASK_INTERRUPT,
internal->signal_call[i].signal,
internal->signal_call[i].context);
internal->signal_call[i].call = FALSE;
}
}
internal->signal_call[i].signal,
internal->signal_call[i].context);
internal->signal_call[i].call = FALSE;
}
}
void silc_schedule_internal_signals_block(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
void silc_schedule_internal_signals_block(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
void silc_schedule_internal_signals_unblock(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
void silc_schedule_internal_signals_unblock(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;