DPDK编程指南(翻译)( 三十三)

33. 扩展 DPDK

本章描述了开发者如何通过扩展DPDK来提供一个新的库、目标文件或者支持新的开发板。

33.1. 示例:添加新的库 libfoo

要添加新的库到DPDK,按照如下操作:

  1. 添加新的配置选项:
for f in config/\*; do \
    echo CONFIG_RTE_LIBFOO=y >> $f; done
  1. 创建新的源码目录:
mkdir ${RTE_SDK}/lib/libfoo
touch ${RTE_SDK}/lib/libfoo/foo.c
touch ${RTE_SDK}/lib/libfoo/foo.h
  1. 源码添加 foo() 函数。
函数定义于 foo.c:

void foo(void)
{
}
函数声明于 foo.h:

extern void foo(void);
  1. 更新文件 lib/Makefile:
vi ${RTE_SDK}/lib/Makefile
# add:
# DIRS-$(CONFIG_RTE_LIBFOO) += libfoo
  1. 为新的库创建新的 Makefile,如派生自 mempool Makefile,进行修改:
cp ${RTE_SDK}/lib/librte_mempool/Makefile ${RTE_SDK}/lib/libfoo/

vi ${RTE_SDK}/lib/libfoo/Makefile
# replace:
# librte_mempool -> libfoo
# rte_mempool -> foo
  1. 更新文件 mk/DPDK.app.mk,添加 -lfoo 选项到 LDLIBS 变量中。 链接DPDK应用程序时会自动添加此标志。

  2. 添加此新库之后,重新构建DPDK (此处仅显示这个特殊的部分):

cd ${RTE_SDK}
make config T=x86_64-native-linuxapp-gcc
make
  1. 检测这个库被正确安装了:
ls build/lib
ls build/include

33.1.1. 示例:在测试用例中使用新库 libfoo

测试应用程序用于验证DPDK的所有功能。 一旦添加了一个库,应该在测试用例程序中添加一个用例。

  • 新的测试文件 test_foo.c 被添加,包含头文件 foo.h 并调用 foo() 函数。 当测试通过时,test_foo() 函数需要返回0。
  • 为了处理新的测试用例,Makefile, test.h 和 commands.c 必须同时更新。
  • 测试报告生成:autotest.py 是一个脚本,用于生成文件 ${RTE_SDK}/doc/rst/test_report/autotests 目录中指定的测试用例报告。 如果libfoo处于新的测试家族,链接 ${RTE_SDK}/doc/rst/test_report/test_report.rst 需要更新。
  • 重新构建DPDK库,添加新的测试应用程序:
    cd ${RTE_SDK}
    make config T=x86_64-native-linuxapp-gcc
    make
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,390评论 19 139
  • 31. 开发套件构建系统 DPDK 需要一个构建系统用于编译等操作。 本节介绍 DPDK 框架中使用的约束和机制。...
    半天妖阅读 8,958评论 6 3
  • 1. 简介 本文档包含DPDK软件安装和配置的相关说明。旨在帮助用户快速启动和运行软件。文档主要描述了在Linux...
    半天妖阅读 18,035评论 0 22
  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 10,152评论 0 17
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,054评论 6 342