/*
 * call-seq:
 *
 *      io.kgio_wait_readable           -> IO
 *      io.kgio_wait_readable(timeout)  -> IO or nil
 *
 * Blocks the running Thread indefinitely until the IO object is readable
 * or if +timeout+ expires.  If +timeout+ is specified and expires, +nil+
 * is returned.
 *
 * This method is automatically called (without timeout argument) by default
 * whenever kgio_read needs to block on input.
 *
 * Users of alternative threading/fiber libraries are
 * encouraged to override this method in their subclasses or modules to
 * work with their threading/blocking methods.
 */
static VALUE kgio_wait_readable(int argc, VALUE *argv, VALUE self)
{
        int r = kgio_wait(argc, argv, self, 0);

        if (r < 0) rb_sys_fail("kgio_wait_readable");
        return r == 0 ? Qnil : self;
}