我已经阅读了大量的 DPDK 文档,但我对它是否支持或鼓励中断感到困惑。文档直截了当地说 DPDK 不使用中断,但我仍然能够注册中断并成功接收它们。
具体来说,我正在研究是否可以为 DPDK 应用程序编写用户级抢占式线程调度程序。为了创建它,我需要注册定时器中断。文档说 DPDK 不支持调度程序。
我看到 DPDK 有一个 lthread 抽象,但它的调度程序实现需要每个单独的 lthread 手动将控制权交给调度程序,而不是根据计时器中断将控制权自动转移回调度程序。
我看到了警报功能(在 rte_alarm 中),它基于轮询模拟定时器中断。但是,您需要另一个 pthread 来进行轮询,目前轮询 pthread 是运行回调函数的那个(而我希望最初设置计时器的 pthread 运行回调函数)。
我不明白为什么 DPDK 会实现一个不支持抢占的 lthread 抽象,因为它可以注册来自操作系统的实时计时器中断。使用某些对象(例如无锁环形缓冲区)时可能需要更加小心,但这是可以管理的。
有人可以澄清 DPDK 支持什么吗?