[BUG] event pollers must not wait if a task exists in the run queue

Under some circumstances, a task may already lie in the run queue
(eg: inter-task wakeup). It is disastrous to wait for an event in
this case because some processing gets delayed.
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index 773db74..f34cdc3 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -106,7 +106,11 @@
 	struct timespec timeout, *to_ptr;
 
 	to_ptr = NULL;	// no timeout
-	if (tv_isset(exp)) {
+	if (run_queue) {
+		timeout.tv_sec = timeout.tv_nsec = 0;
+		to_ptr = &timeout;
+	}
+	else if (tv_isset(exp)) {
 		struct timeval delta;
 
 		if (tv_isge(&now, exp))