--- libaitsched/src/hooks.c 2014/01/28 12:57:52 1.24.4.7 +++ libaitsched/src/hooks.c 2014/02/01 14:06:08 1.26.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: hooks.c,v 1.24.4.7 2014/01/28 12:57:52 misho Exp $ +* $Id: hooks.c,v 1.26.2.1 2014/02/01 14:06:08 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -270,7 +270,7 @@ sched_hook_cancel(void *task, void *arg __unused) pthread_cancel((pthread_t) TASK_VAL(t)); #endif return NULL; -#if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME) +#if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME) && defined(HAVE_TIMER_DELETE) case taskRTC: timer_delete((timer_t) TASK_FLAG(t)); schedCancel((sched_task_t*) TASK_RET(t)); @@ -638,7 +638,7 @@ 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; @@ -1142,16 +1142,15 @@ 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) continue; else { - printf("Suck the milk %d !!!\n", i); flg++; - TASK_RET(task) ^= TASK_RET(task); - TASK_FLAG(task) ^= TASK_FLAG(task); + TASK_FLAG(task) = ioctl(TASK_FD(task), + FIONREAD, &TASK_RET(task)); } /* remove read handle */ #ifdef HAVE_LIBPTHREAD @@ -1197,16 +1196,15 @@ 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) continue; else { - printf("HIT the pig %d !!!\n", i); flg++; - TASK_RET(task) ^= TASK_RET(task); - TASK_FLAG(task) ^= TASK_FLAG(task); + TASK_FLAG(task) = ioctl(TASK_FD(task), + FIONWRITE, &TASK_RET(task)); } /* remove write handle */ #ifdef HAVE_LIBPTHREAD @@ -1389,7 +1387,7 @@ sched_hook_condition(void *root, void *arg) * @arg = unused * return: <0 errors and 0 ok */ -#if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME) +#if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME) && defined(HAVE_TIMER_DELETE) void * sched_hook_rtc(void *task, void *arg __unused) {