You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
686 B
C
42 lines
686 B
C
#include "io.h"
|
|
#include "array.h"
|
|
#include "haveepoll.h"
|
|
#include "havekqueue.h"
|
|
|
|
typedef struct {
|
|
unsigned int wantread:1;
|
|
unsigned int wantwrite:1;
|
|
unsigned int canread:1;
|
|
unsigned int canwrite:1;
|
|
unsigned int nonblock:1;
|
|
unsigned int inuse:1;
|
|
tai6464 timeout;
|
|
long next_read;
|
|
long next_write;
|
|
void* cookie;
|
|
} io_entry;
|
|
|
|
array io_fds;
|
|
uint64 io_wanted_fds;
|
|
array io_pollfds;
|
|
|
|
unsigned long first_readable;
|
|
unsigned long first_writeable;
|
|
|
|
enum {
|
|
UNDECIDED,
|
|
POLL
|
|
#ifdef HAVE_KQUEUE
|
|
,KQUEUE
|
|
#endif
|
|
#ifdef HAVE_EPOLL
|
|
,EPOLL
|
|
#endif
|
|
} io_waitmode;
|
|
|
|
#if defined(HAVE_KQUEUE) || defined(HAVE_EPOLL)
|
|
int io_master;
|
|
#endif
|
|
|
|
int64 io_waituntil2(int64 milliseconds);
|