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