Feature #16597 » 0001-io-move-poll-defines-to-internal-io.h.patch
| internal/io.h | ||
|---|---|---|
|
#include "ruby/ruby.h" /* for VALUE */
|
||
|
#include "ruby/io.h" /* for rb_io_t */
|
||
|
/* non-Linux poll may not work on all FDs */
|
||
|
#if defined(HAVE_POLL)
|
||
|
# if defined(__linux__)
|
||
|
# define USE_POLL 1
|
||
|
# endif
|
||
|
# if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
|
||
|
# define USE_POLL 1
|
||
|
# endif
|
||
|
#endif
|
||
|
#ifndef USE_POLL
|
||
|
# define USE_POLL 0
|
||
|
#endif
|
||
|
#if USE_POLL
|
||
|
#define POLLIN_SET (POLLRDNORM | POLLRDBAND | POLLIN)
|
||
|
#define POLLOUT_SET (POLLWRBAND | POLLWRNORM | POLLOUT)
|
||
|
#define POLLEX_SET (POLLPRI)
|
||
|
#define POLLERR_SET (POLLHUP | POLLERR)
|
||
|
#endif
|
||
|
/* io.c */
|
||
|
void ruby_set_inplace_mode(const char *);
|
||
|
void rb_stdio_set_default_encoding(void);
|
||
| io.c | ||
|---|---|---|
|
#include <errno.h>
|
||
|
#include <stddef.h>
|
||
|
/* non-Linux poll may not work on all FDs */
|
||
|
#if defined(HAVE_POLL)
|
||
|
# if defined(__linux__)
|
||
|
# define USE_POLL 1
|
||
|
# endif
|
||
|
# if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
|
||
|
# define USE_POLL 1
|
||
|
# endif
|
||
|
#endif
|
||
|
#ifndef USE_POLL
|
||
|
# define USE_POLL 0
|
||
|
#endif
|
||
|
#undef free
|
||
|
#define free(x) xfree(x)
|
||
| thread.c | ||
|---|---|---|
|
return vm->living_thread_num;
|
||
|
}
|
||
|
/*
|
||
|
* poll() is supported by many OSes, but so far Linux is the only
|
||
|
* one we know of that supports using poll() in all places select()
|
||
|
* would work.
|
||
|
*/
|
||
|
#if defined(HAVE_POLL)
|
||
|
# if defined(__linux__)
|
||
|
# define USE_POLL
|
||
|
# endif
|
||
|
# if defined(__FreeBSD_version) && __FreeBSD_version >= 1100000
|
||
|
# define USE_POLL
|
||
|
/* FreeBSD does not set POLLOUT when POLLHUP happens */
|
||
|
# define POLLERR_SET (POLLHUP | POLLERR)
|
||
|
# endif
|
||
|
#endif
|
||
|
static void
|
||
|
timeout_prepare(rb_hrtime_t **to, rb_hrtime_t *rel, rb_hrtime_t *end,
|
||
|
const struct timeval *timeout)
|
||
| ... | ... | |
|
return Qnil;
|
||
|
}
|
||
|
#ifdef USE_POLL
|
||
|
/* The same with linux kernel. TODO: make platform independent definition. */
|
||
|
#define POLLIN_SET (POLLRDNORM | POLLRDBAND | POLLIN | POLLHUP | POLLERR)
|
||
|
#define POLLOUT_SET (POLLWRBAND | POLLWRNORM | POLLOUT | POLLERR)
|
||
|
#define POLLEX_SET (POLLPRI)
|
||
|
#ifndef POLLERR_SET /* defined for FreeBSD for now */
|
||
|
# define POLLERR_SET (0)
|
||
|
#endif
|
||
|
#if USE_POLL
|
||
|
/*
|
||
|
* returns a mask of events
|
||
|
*/
|
||