43. Extending the DPDK

43. Extending the DPDK

        本章描述了开发人员如何扩展DPDK以提供新库、新目标或支持新目标。

43.1. Example: Adding a New Library libfoo

        要向DPDK添加一个新库,请按以下方式进行:

  1. 添加新的配置选项:
    for f in config/\*; do \
        echo CONFIG_RTE_LIBFOO=y >> $f; done
  2. 创建新的源文件目录:
    mkdir ${RTE_SDK}/lib/libfoo
    touch ${RTE_SDK}/lib/libfoo/foo.c
    touch ${RTE_SDK}/lib/libfoo/foo.h
  3. 在libfoo中添加foo()函数。
    在foo.c中定义:
    void foo(void)
    {
    }
    在foo.h中声明:
    extern void foo(void);
  4. 更新lib/Makefile:
    vi ${RTE_SDK}/lib/Makefile
    # add:
    # DIRS-$(CONFIG_RTE_LIBFOO) += libfoo
  5. 为这个lib创建一个新的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
  6. 更新mk/DPDK.app.mk,如果使能了LDLIBS选项,添加 -lfoo到LDLIBS变量中。这将在连接DPDK应用程序时自动添加此标志。
  7. 用新的lib构建DPDK(我们只在这里显示一个特定的目标):
    cd ${RTE_SDK}
    make config T=x86_64-native-linuxapp-gcc
    make
  8. 检查该lib是否已安装:
    ls build/lib
    ls build/include
43.1.1. Example: Using libfoo in the Test Application

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

  • 添加一个包含foo.h头文件和调用foo()的测试程序文件test_foo.c。当测试成功,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

        

猜你喜欢

转载自blog.csdn.net/shaoyunzhe/article/details/78972070