免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2587 | 回复: 2
打印 上一主题 下一主题

[FreeBSD] freebsd上kqueue也不能用了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-02 15:45 |只看该作者 |倒序浏览
本帖最后由 logicBaby 于 2012-03-02 15:46 编辑

在看libev代码时发现这么一段:
  1. unsigned int
  2. ev_supported_backends (void)
  3. {
  4.   unsigned int flags = 0;

  5.   if (EV_USE_PORT  ) flags |= EVBACKEND_PORT;
  6.   if (EV_USE_KQUEUE) flags |= EVBACKEND_KQUEUE;
  7.   if (EV_USE_EPOLL ) flags |= EVBACKEND_EPOLL;
  8.   if (EV_USE_POLL  ) flags |= EVBACKEND_POLL;
  9.   if (EV_USE_SELECT) flags |= EVBACKEND_SELECT;
  10.   
  11.   return flags;
  12. }

  13. [color=Red]unsigned int
  14. ev_recommended_backends (void)
  15. {
  16.   unsigned int flags = ev_supported_backends ();

  17. #ifndef __NetBSD__
  18.   /* kqueue is borked on everything but netbsd apparently */
  19.   /* it usually doesn't work correctly on anything but sockets and pipes */
  20.   flags &= ~EVBACKEND_KQUEUE;
  21. #endif
  22. #ifdef __APPLE__
  23.   /* only select works correctly on that "unix-certified" platform */
  24.   flags &= ~EVBACKEND_KQUEUE; /* horribly broken, even for sockets */
  25.   flags &= ~EVBACKEND_POLL;   /* poll is based on kqueue from 10.5 onwards */
  26. #endif
  27. #ifdef __FreeBSD__
  28.   flags &= ~EVBACKEND_POLL;   /* poll return value is unusable (http://forums.freebsd.org/archive/index.php/t-10270.html) */
  29. #endif

  30.   return flags;
  31. }[/color]
复制代码
这样的话,在FreeBSD上就只能用select做backend ?

论坛徽章:
0
2 [报告]
发表于 2012-03-03 04:45 |只看该作者
ports/devel/libev/files/patch-ev.c
  1. --- ./ev.c.orig        2011-02-09 00:17:37.000000000 +0100
  2. +++ ./ev.c        2011-08-19 17:01:35.000000000 +0200
  3. @@ -1591,10 +1591,12 @@
  4.    unsigned int flags = ev_supported_backends ();

  5. #ifndef __NetBSD__
  6. +#ifndef __FreeBSD__
  7.    /* kqueue is borked on everything but netbsd apparently */
  8.    /* it usually doesn't work correctly on anything but sockets and pipes */
  9.    flags &= ~EVBACKEND_KQUEUE;
  10. #endif
  11. +#endif
  12. #ifdef __APPLE__
  13.    /* only select works correctly on that "unix-certified" platform */
  14.    flags &= ~EVBACKEND_KQUEUE; /* horribly broken, even for sockets */
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-03-03 13:08 |只看该作者
  原来有patch,多谢老大~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP