- 1.初始化EAL環境,
rte_eal_init()
; - 2.解析參數,因為DPDK的參數在EAL初始化時就進行了解析,所以,這里主要解析的是我們自己的參數,可以使用
getopt_long
函數。 - 3.初始化內存池等,這里要注意放在接口的初始化之前,為接收數據包做准備。
- 4.初始化接口。這里具體說一下,在初始化接口時,主要有三部分工作:
-
- 首先配置接口的屬性-
rte_eth_dev_configure()
,如支持大幀下的包長檢查等,然后很重要的是配置發送和接收隊列。
- 首先配置接口的屬性-
-
- 當以上的配置完整以后,接下來就是啟動隊列-
rte_eth_rx_queue_setup()
。
- 當以上的配置完整以后,接下來就是啟動隊列-
-
- 最后一步就是當都准備好了以后,就可以啟動設備了-
rte_eth_dev_start()
,同時還可以使能混雜模式等設置。有時也會設置接收和發送的回調函數-rte_eth_add_rx_callback()
.
- 最后一步就是當都准備好了以后,就可以啟動設備了-
-
- 5.啟動所有核上的線程。
rte_eal_mp_remote_launch()