vpp源码流程

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
graph TB
vlib_main_loop-->vlib_main_or_worker_loop-->dispatch_process-->dispatch_node
vlib_main_loop--->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
上一篇:jmeter(二)录制脚本


下一篇:你知道吗?软件修复可防止数据泄露事故