]> Zhao Yanbai Git Server - minix.git/commitdiff
Add libasyn, asynchio support for netbsd libc.
authorGianluca Guida <gianluca@minix3.org>
Wed, 23 Mar 2011 15:28:22 +0000 (15:28 +0000)
committerGianluca Guida <gianluca@minix3.org>
Wed, 23 Mar 2011 15:28:22 +0000 (15:28 +0000)
lib/nbsd_libasyn/Makefile [new file with mode: 0644]
lib/nbsd_libasyn/asynchio.h [new file with mode: 0644]

diff --git a/lib/nbsd_libasyn/Makefile b/lib/nbsd_libasyn/Makefile
new file mode 100644 (file)
index 0000000..6d3593d
--- /dev/null
@@ -0,0 +1,11 @@
+.include <bsd.own.mk>
+.PATH:         ${MINIXSRCDIR}/lib/libc/asyn 
+LIB=   asyn
+INCS=  asynchio.h
+INCSDIR= /usr/netbsd/include/sys
+
+
+SRCS+= asyn_cancel.c asyn_close.c asyn_init.c asyn_pending.c asyn_read.c \
+       asyn_special.c asyn_synch.c asyn_wait.c asyn_write.c
+
+.include <bsd.lib.mk>
diff --git a/lib/nbsd_libasyn/asynchio.h b/lib/nbsd_libasyn/asynchio.h
new file mode 100644 (file)
index 0000000..726dd1e
--- /dev/null
@@ -0,0 +1,43 @@
+/*     asynchio.h - Asynchronous I/O                   Author: Kees J. Bot
+ *                                                             7 Jul 1997
+ * Minix-vmd compatible asynchio(3) using BSD select(2).
+ */
+#ifndef _SYS__ASYNCHIO_H
+#define _SYS__ASYNCHIO_H
+
+#include <sys/select.h>                        /* for FD_SETSIZE */
+
+#define SEL_READ       0               /* Code for a read. */
+#define SEL_WRITE      1               /* Code for a write. */
+#define SEL_EXCEPT     2               /* Code for some exception. */
+#define SEL_NR         3               /* Number of codes. */
+
+struct _asynfd {
+       int             afd_seen;       /* Set if we manage this descriptor. */
+       int             afd_flags;      /* File flags by fcntl(fd, F_GETFL). */
+       int             afd_state[SEL_NR];  /* Operation state. */
+};
+
+typedef struct {
+       int             asyn_more;      /* Set if more to do before blocking. */
+       struct _asynfd  asyn_afd[FD_SETSIZE];
+       fd_set          asyn_fdset[SEL_NR];     /* Select() fd sets. */
+} asynchio_t;
+
+#define ASYN_INPROGRESS        EAGAIN          /* Errno code telling "nothing yet." */
+#define ASYN_NONBLOCK  0x01            /* If asyn_wait() mustn't block. */
+
+struct timeval;
+
+void asyn_init(asynchio_t *_asyn);
+ssize_t asyn_read(asynchio_t *_asyn, int _fd, void *_buf, size_t _len);
+ssize_t asyn_write(asynchio_t *_asyn, int _fd, const void *_buf, size_t _len);
+int asyn_special(asynchio_t *_asyn, int _fd, int _op);
+int asyn_result(asynchio_t *_asyn, int _fd, int _op, int _result);
+int asyn_wait(asynchio_t *_asyn, int _flags, struct timeval *to);
+int asyn_cancel(asynchio_t *_asyn, int _fd, int _op);
+int asyn_pending(asynchio_t *_asyn, int _fd, int _op);
+int asyn_synch(asynchio_t *_asyn, int _fd);
+int asyn_close(asynchio_t *_asyn, int _fd);
+
+#endif /* _SYS__ASYNCHIO_H */