X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixschedule.c;h=846cfa4bf68e2aac91751e0e83253dbeeca5e556;hb=4a0081751a282b29d525b5f9a3312628aed24a2f;hp=2bdff338251bc68f921f797b9f1973e0b5938a62;hpb=6a164e529cda00a6ebb5b34dd108aa8e67108442;p=silc.git diff --git a/lib/silcutil/unix/silcunixschedule.c b/lib/silcutil/unix/silcunixschedule.c index 2bdff338..846cfa4b 100644 --- a/lib/silcutil/unix/silcunixschedule.c +++ b/lib/silcutil/unix/silcunixschedule.c @@ -76,6 +76,7 @@ typedef struct { /* Internal context. */ typedef struct { + void *app_context; int wakeup_pipe[2]; SilcTask wakeup_task; sigset_t signals; @@ -100,7 +101,8 @@ SILC_TASK_CALLBACK(silc_schedule_wakeup_cb) the scheduler needs to be wakenup when tasks are added or removed from the task queues. Returns context to the platform specific scheduler. */ -void *silc_schedule_internal_init(SilcSchedule schedule) +void *silc_schedule_internal_init(SilcSchedule schedule, + void *app_context) { SilcUnixScheduler internal; @@ -131,6 +133,8 @@ void *silc_schedule_internal_init(SilcSchedule schedule) } #endif + internal->app_context = app_context; + return (void *)internal; } @@ -256,7 +260,8 @@ void silc_schedule_internal_signals_call(void *context, 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, + 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;