我已閱讀了很多DPDK文檔,但我對它是否支持或鼓勵中斷感到困惑。該文件表明,DPDK不使用中斷,但我仍然能夠註冊中斷併成功接收它們。在DPDK應用程序中編寫搶先式用戶級線程調度程序時的注意事項
具體而言,我正在研究是否可以爲DPDK應用程序編寫用戶級別的搶佔線程調度程序。爲了創建這個,我需要註冊定時器中斷。該文件說DPDK不支持調度程序。我看到DPDK有一個lthread抽象,但是它的調度程序實現要求每個單獨的lthread手動地將調度控制權交給調度程序,而不是根據定時器中斷自動轉移回調度程序。
我看到了警報功能(在rte_alarm中),它基於輪詢來模擬定時器中斷。但是,您需要另一個pthread來執行輪詢,並且當前輪詢pthread是運行回調函數的那個(而我想要最初設置計時器的pthread運行回調函數)。
我不明白爲什麼DPDK可以實現一個不支持搶佔的lthread抽象,當它可以註冊來自操作系統的實時定時器中斷時。使用某些物體時,您可能必須更加小心,例如無鎖環形緩衝區,但這是可以管理的。
有人可以提供什麼DPDK支持的澄清?