summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBrian M. Clapper <bmc@clapper.org>2016-07-11 18:30:05 -0400
committerKeith Packard <keithp@keithp.com>2016-07-19 11:08:21 -0700
commit711c36558f50943c8342f25ad210281134887a3d (patch)
tree32332c26febbedf83ae452b0158c9b4662dc500a /include
parent2a79be9e4dd1b6ba00b69ff40bc5257ec84d34da (diff)
os: Add poll emulation for mingw [v2]
v2: rename as 'xserver_poll' to avoid potential library name collisions. Provide 'xserver_poll.h' which uses the system poll where available and falls back to this emulation otherwise. Autodetects when this is required, building the emulation only then Source: https://github.com/bmc/poll Signed-off-by: Adam Jackson <ajax@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/dix-config.h.in3
-rw-r--r--include/xserver_poll.h55
2 files changed, 58 insertions, 0 deletions
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index fc7d1a12c..bf2a9eda3 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -527,4 +527,7 @@
/* Use input thread */
#undef INPUTTHREAD
+/* Have poll() */
+#undef HAVE_POLL
+
#endif /* _DIX_CONFIG_H_ */
diff --git a/include/xserver_poll.h b/include/xserver_poll.h
new file mode 100644
index 000000000..110d30cc7
--- /dev/null
+++ b/include/xserver_poll.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright © 2016 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _XSERVER_POLL_H_
+#define _XSERVER_POLL_H_
+
+#ifndef _DIX_CONFIG_H_
+#error must inclue dix-config.h to use xserver_poll.h
+#endif
+
+#if HAVE_POLL
+#include <poll.h>
+#define xserver_poll(fds, nfds, timeout) poll(fds, nfds, timeout)
+#else
+
+#define POLLIN 0x01
+#define POLLPRI 0x02
+#define POLLOUT 0x04
+#define POLLERR 0x08
+#define POLLHUP 0x10
+#define POLLNVAL 0x20
+
+struct pollfd
+{
+ int fd;
+ short events;
+ short revents;
+};
+
+typedef unsigned long nfds_t;
+
+int xserver_poll (struct pollfd *pArray, nfds_t n_fds, int timeout);
+
+#endif
+
+#endif /* _XSERVER_POLL_H_ */