--- libaitsched/src/hooks.c 2014/01/28 10:37:19 1.24.4.5 +++ libaitsched/src/hooks.c 2014/01/28 13:11:33 1.24.4.9 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: hooks.c,v 1.24.4.5 2014/01/28 10:37:19 misho Exp $ +* $Id: hooks.c,v 1.24.4.9 2014/01/28 13:11:33 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 +Copyright 2004 - 2014 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -529,13 +529,6 @@ sched_hook_proc(void *task, void *arg __unused) return NULL; } -#ifdef KQ_DISABLE -static void -_sched_sigHandler(int sig) -{ -} -#endif /* KQ_DISABLE */ - /* * sched_hook_signal() - Default SIGNAL hook * @@ -546,8 +539,8 @@ _sched_sigHandler(int sig) void * sched_hook_signal(void *task, void *arg __unused) { - sched_task_t *t = task; #ifndef KQ_DISABLE + sched_task_t *t = task; struct kevent chg[1]; struct timespec timeout = { 0, 0 }; @@ -570,6 +563,8 @@ sched_hook_signal(void *task, void *arg __unused) return (void*) -1; } #else +#if 0 + sched_task_t *t = task; struct sigaction sa; memset(&sa, 0, sizeof sa); @@ -584,6 +579,7 @@ sched_hook_signal(void *task, void *arg __unused) LOGERR; return (void*) -1; } +#endif /* 0 */ #endif return NULL; } @@ -642,9 +638,10 @@ sched_hook_fetch(void *root, void *arg __unused) struct timespec now, m, mtmp; #ifndef KQ_DISABLE struct kevent evt[1], res[KQ_EVENTS]; - struct timespec *timeout, m, mtmp; + struct timespec *timeout; #else struct timeval *timeout, tv; + fd_set rfd, wfd, xfd; #endif register int i, flg; int en; @@ -757,8 +754,9 @@ sched_hook_fetch(void *root, void *arg __unused) #ifndef KQ_DISABLE if ((en = kevent(r->root_kq, NULL, 0, res, KQ_EVENTS, timeout)) == -1) { #else - if ((en = select(r->root_kq, &r->root_fds[0], &r->root_fds[1], - &r->root_fds[0], timeout)) == -1) { + rfd = xfd = r->root_fds[0]; + wfd = r->root_fds[1]; + if ((en = select(r->root_kq, &rfd, &wfd, &xfd, timeout)) == -1) { #endif /* KQ_DISABLE */ if (r->root_hooks.hook_exec.exception) { if (r->root_hooks.hook_exec.exception(r, NULL)) @@ -1144,7 +1142,7 @@ sched_hook_fetch(void *root, void *arg __unused) } #else /* end of kevent dispatcher */ for (i = 0; i < r->root_kq; i++) { - if (FD_ISSET(i, &r->root_fds[0])) { + if (FD_ISSET(i, &rfd) || FD_ISSET(i, &xfd)) { flg = 0; TAILQ_FOREACH_SAFE(task, &r->root_read, task_node, tmp) { if (TASK_FD(task) != i) @@ -1198,7 +1196,7 @@ sched_hook_fetch(void *root, void *arg __unused) FD_CLR(i, &r->root_fds[0]); } - if (FD_ISSET(i, &r->root_fds[1])) { + if (FD_ISSET(i, &wfd)) { flg = 0; TAILQ_FOREACH_SAFE(task, &r->root_write, task_node, tmp) { if (TASK_FD(task) != i)