dpdk源码分析:交互式命令行的实现(一) 命令添加

本文深入分析了DPDK中cmdline的实现,从cmdline_parse_inst_t出发,探讨了命令类型、令牌类型cmdline_parse_token_hdr_t及其结构体cmdline_token_ops,以及子令牌类型如cmdline_parse_token_num_t的创建过程。通过实例展示了新增命令的流程,包括新建命令结构体、命令参数结构体、生成相关令牌和编写回调函数。整个解析机制展示了C语言在实现类似多态和接口功能的巧妙之处。
  • 在实习的时候就对dpdk中 cmdline 的实现方式感兴趣,苦于待干的事情太多,一直没有空记录。
  • 最近抽出时间准备进行一次较为深入的分析,来看一下dpdk是如何使用c语言来实现 cmdline 的.
  • 本文中使用的dpdk库版本为:16.04

一、分析

1. 从一段代码入手

本段代码摘自 app/test-pmd/cmdline.c,这是dpdk例程 testpmd 其中的一个命令实现。

/* *** SHOW PORT INFO *** */
struct cmd_showport_result {
   
   
	cmdline_fixed_string_t show;
	cmdline_fixed_string_t port;
	cmdline_fixed_string_t what;
	uint8_t portnum;
};

static void cmd_showport_parsed(void *parsed_result,
				__attribute__((unused)) struct cmdline *cl,
				__attribute__((unused)) void *data)
{
   
   
	struct cmd_showport_result *res = parsed_result;
	...若干实现
}

cmdline_parse_token_string_t cmd_showport_show =
	TOKEN_STRING_INITIALIZER(struct cmd_showport_result, show,
				 "show#clear");
cmdline_parse_token_string_t cmd_showport_port =
	TOKEN_STRING_INITIALIZER(struct cmd_showport_result, port, "port");
cmdline_parse_token_string_t cmd_showport_what =
	TOKEN_STRING_INITIALIZER(struct cmd_showport_result, what
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值