(dpdk f-stack)-Nginx使用kqueue

Posted ygmdream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(dpdk f-stack)-Nginx使用kqueue相关的知识,希望对你有一定的参考价值。

概述

     kqueue 是 FreeBSD 上的一种的多路复用机制。
    它是针对传统的 select/poll 处理大量的文件描述符性能较低效而开发出来的。
    注册一堆描述符到 kqueue 以后,当其中的描述符状态发生变化时, kqueue 将一次性通知应用程序哪些描述符可读、可写或出错了。

kqueue APIs
    int kqueue(void)
        生成一个内核事件队列,返回该队列的文件描述索。其它 API 通过该描述符操作这个 kqueue 。

    kevent() 提供三个主要的行为功能。在下面小节中将会用到这两个主要功能。
        Ø注册/反注册
        注意 kevent() 中的 neventlist 这个输入参数,当将其设为 0 ,且传入合法的 changelist 和 nchangelist ,就会将 changelist 中的事件注册到 kqueue 中
        当关闭某文件描述符时,与之关联的事件会被自动地从 kqueue 移除。

        Ø允许/禁止过滤器事件
        通过 flags EV_ENABLE 和 EV_DISABLE 使过滤器事件有效或无效。这个功能在利用 EVFILT_WRITE 发送数据时非常有用。

        Ø等待事件通知
        将 nchangelist 设置成 0 ,当然要传入其它合法的参数,当 kevent 非错误和超时返回时,在 eventlist 和 neventlist 中就保存可用事件集合

        功能: kevent 向内核注册事件,返回就绪事件

以上是关于(dpdk f-stack)-Nginx使用kqueue的主要内容,如果未能解决你的问题,请参考以下文章

(dpdk f-stack)-Nginx使用kqueue

(dpdk f-stack)-Nginx使用kqueue

(dpdk f-stack)-Nginx使用kqueue

(dpdk f-stack)-Nginx使用kqueue

(dpdk f-stack)-Nginx使用kqueue

(dpdk f-stack)-整体框架