数据库修仙金丹篇三——vpp源码流程

本文详细介绍了VPP(Vector Packet Processing)的源码流程,从启动读取配置文件开始,经过参数解析、堆初始化、插件加载等多个步骤,直至进入主循环。深入探讨了关键函数的作用及调用过程。

vpp源码流程

代码流程

启动
读取配置文件,解析参数
main线程绑核
初始化堆
查找插件路径
vlib_unix_main
thread0
  • main
初始化vpp的堆,映射内存
使用mmap将内存匿名映射到vpp进程内
main
clib_mem_init_thread_safe
clib_mem_init
create_mspace
CALL_MMAP
clib_mem_set_heap
vpe_main_init
vlib_unix_main
  • vlib_unix_main
筛选enable的插件
执行每个插件的early_init
执行每个插件的config函数
vlib_unix_main
vlib_plugin_config
vlib_plugin_early_init
vlib_load_new_plugins
load_one_plugin
early_init
vlib_call_all_config_functions
config_function_registrations
clib_elf_main_init
vlib_thread_stack_init
clib_calljmp
thread0
  • thread0
thread0
vlib_main
clib_time_init
vlib_physmem_init
vlib_buffer_main_init
vlib_thread_init
vlib_map_stat_segment_init
vlib_register_all_static_nodes
vlib_node_main_init
vpe_api_init
vlibmemory_init
map_api_segment_init
vlib_call_all_init_functions
vlib_buffer_create_free_list
vlib_call_all_config_functions
vlib_call_all_main_loop_enter_functions
vlib_main_loop
  • vlib_main_loop
vlib_main_loop
vlib_main_or_worker_loop
dispatch_process
dispatch_node
  • dpdk plugin
load_one_plugin
dpdk_early_init
dpdk_config
dpdk_process_node
dpdk_process
dpdk_lib_init
dpdk_input_node
dpdk_device_input
rte_eth_rx_burst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在数据库世界里修仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值