Alexandre Julliard : server: Enable kqueue support on Mac OS >= 10. 5 now that it's fixed.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jun 15 07:23:06 CDT 2007


Module: wine
Branch: master
Commit: 8143d42c4c477c4ad88badd995987d0a8710b4fa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8143d42c4c477c4ad88badd995987d0a8710b4fa

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Jun 15 12:41:43 2007 +0200

server: Enable kqueue support on Mac OS >= 10.5 now that it's fixed.

---

 server/fd.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/server/fd.c b/server/fd.c
index 11cf294..7a7d572 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -55,6 +55,9 @@
 #ifdef HAVE_SYS_STATFS_H
 #include <sys/statfs.h>
 #endif
+#ifdef HAVE_SYS_SYSCTL_H
+#include <sys/sysctl.h>
+#endif
 #ifdef HAVE_SYS_EVENT_H
 #include <sys/event.h>
 #undef LIST_INIT
@@ -518,9 +521,17 @@ static int kqueue_fd = -1;
 
 static inline void init_epoll(void)
 {
-#ifndef __APPLE__ /* kqueue support is broken in the MacOS kernel so we can't use it */
-    kqueue_fd = kqueue();
+#ifdef __APPLE__ /* kqueue support is broken in Mac OS < 10.5 */
+    int mib[2];
+    char release[32];
+    size_t len = sizeof(release);
+
+    mib[0] = CTL_KERN;
+    mib[1] = KERN_OSRELEASE;
+    if (sysctl( mib, 2, release, &len, NULL, 0 ) == -1) return;
+    if (atoi(release) < 9) return;
 #endif
+    kqueue_fd = kqueue();
 }
 
 static inline void set_fd_epoll_events( struct fd *fd, int user, int events )




More information about the wine-cvs mailing list