VPP初始化

VPP在启动之前,首先需要生成全局的调用关系链表,在VPP启动时进行加载

这样的全局链表主要通过宏定义的方法建立

 

全局链表的宏定义主要包含以下几个:

注册到vlib_main_t结构体的宏定义

VLIB_INIT_FUNCTION:

注册到vlib_main_t的init_function_registrations链表,VPP启动时调用vlib_call_init_function时进行加载

                      

VLIB_API_INIT_FUNCTION:

注册到vlib_main_t的api_init_function_registrations链表,并作为一个名为”api_rx_from_ring”的node注册到VLIB_REGISTER_NODE中,在VPP启动时调用加载

 

VLIB_CLI_COMMAND:

注册在vlib_main_t的cli_command_registrations链表, VLIB_INIT_FUNCTION中注册一个vlib_cli_init函数,在VPP启动调用vlib_call_init_function时进行加载

 

VLIB_EARLY_CONFIG_FUNCTION和VLIB_CONFIG_FUNCTION

注册到vlib_main_t的config_function_registrations链表,在VPP启动时执行vlib_call_all_config_functions进行加载

 

VLIB_MAIN_LOOP_ENTER_FUNCTION

注册到vlib_main_t的main_loop_enter_function_registrations链表,在VPP启动时调用vlib_call_all_main_loop_enter_functions进行加载

 

VLIB_MAIN_LOOP_EXIT_FUNCTION

注册到vlib_main_t的main_loop_exit_function_registrations链表,在VPP启动时调用vlib_call_all_main_loop_exit_functions进行加载

 

VLIB_REGISTER_NODE

注册到vlib_main_t的node_main.node_registrations链表,在启动执行vlib_register_all_static_node时进行加载

 

插件宏定义

VLIB_PLUGIN_REGISTER:

指定vlib_plugin_registration_t相关信息:如插件版本,描述等,在VPP启动时做判断,在调用vlib_load_new_plugins是进行加载

 

Feature宏定义:

VNET_FEATURE_ARC_INIT

注册到vnet_feature_main_t的next_arc链表,在VLIB_INIT_FUNCTION中增加一个加载feature的vnet_feature_init函数,在VPP启动时调用

 

VNET_FEATURE_INIT

注册到vnet_feature_main_t的next_feature链表,在VLIB_INIT_FUNCTION中增加一个加载feature的vnet_feature_init函数,在VPP启动时调用

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值