源代码分析(1)helloworld
源代码:
分析:
helloworld为dpdk的入门样例程序,程序的编写和系统编程一样都是从main函数作为入口函数。
rte_eal_init()启动基础运行环境,该函数完成的工作比较复杂,读取入口参数,解析并保存DPDK运行的系统信息,并根据这些信息构建包处理的运行环境。
配置初始化
内存初始化
内存池初始化
队列初始化
警告初始化
中断初始化
PCI初始化
定时器初始化
…………
使用DPDK这些操作已经被EAL封装,如果需要进行深度定制二次开发,则需要进一步的研究。
RTE_LCORE_FOREACH_SLAVE(lcore_id) {
rte_eal_remote_launch(lcore_hello, NULL, lcore_id);
}
DPDK面向多核设计,程序试图独占运行在逻辑核(lcore)上,RTE_LCORE_FOREACH_SLAVE遍历EAL指定的可用逻辑核,然后在每个逻辑核上执行被指定的线程,本文中为lcore_hello。(大家可以执行设计lcore_hello)。