1 /* asynchio.h - Asynchronous I/O Author: Kees J. Bot
3 * Minix-vmd compatible asynchio(3) using BSD select(2).
5 #ifndef _SYS__ASYNCHIO_H
6 #define _SYS__ASYNCHIO_H
8 #include <sys/select.h> /* for FD_SETSIZE */
10 #define SEL_READ 0 /* Code for a read. */
11 #define SEL_WRITE 1 /* Code for a write. */
12 #define SEL_EXCEPT 2 /* Code for some exception. */
13 #define SEL_NR 3 /* Number of codes. */
16 int afd_seen
; /* Set if we manage this descriptor. */
17 int afd_flags
; /* File flags by fcntl(fd, F_GETFL). */
18 int afd_state
[SEL_NR
]; /* Operation state. */
22 int asyn_more
; /* Set if more to do before blocking. */
23 struct _asynfd asyn_afd
[FD_SETSIZE
];
24 fd_set asyn_fdset
[SEL_NR
]; /* Select() fd sets. */
27 #define ASYN_INPROGRESS EAGAIN /* Errno code telling "nothing yet." */
28 #define ASYN_NONBLOCK 0x01 /* If asyn_wait() mustn't block. */
32 void asyn_init(asynchio_t
*_asyn
);
33 ssize_t
asyn_read(asynchio_t
*_asyn
, int _fd
, void *_buf
, size_t _len
);
34 ssize_t
asyn_write(asynchio_t
*_asyn
, int _fd
, const void *_buf
, size_t _len
);
35 int asyn_special(asynchio_t
*_asyn
, int _fd
, int _op
);
36 int asyn_result(asynchio_t
*_asyn
, int _fd
, int _op
, int _result
);
37 int asyn_wait(asynchio_t
*_asyn
, int _flags
, struct timeval
*to
);
38 int asyn_cancel(asynchio_t
*_asyn
, int _fd
, int _op
);
39 int asyn_pending(asynchio_t
*_asyn
, int _fd
, int _op
);
40 int asyn_synch(asynchio_t
*_asyn
, int _fd
);
41 int asyn_close(asynchio_t
*_asyn
, int _fd
);
43 #endif /* _SYS__ASYNCHIO_H */