DPDK代码目录结构

news/2024/4/25 23:30:50/文章来源:https://blog.csdn.net/wq897387/article/details/128094725

DPDK功能结构

 DPDK工程目录内容

dpdk-stable-18.11.11]# ls
app    buildtools  devtools  drivers   GNUmakefile  lib      MAINTAINERS  meson.build        mk   README  usertools
build  config      doc       examples  kernel       license  Makefile     meson_options.txt  pkg  test

DPDK本质上是用户态的应用程序,使用的主要是build下生成的驱动文件和静态库文件。

drivers目录的下的驱动文件也为用户态驱动,PMD驱动,利用了Linux的UIO机制。

build目录下的内容如下:

# pwd
/home/user/dpdk-stable-18.11.11/build
# ls
app  build  include  kmod  lib  Makefile

app目录下是DPDK相关的测试应用程序

# ls app
dpdk-pdump      dpdk-pmdinfogen  dpdk-procinfo.map      dpdk-test-crypto-perf.map  dpdk-test-eventdev.map  testbbdev.map  testpmd.map
dpdk-pdump.map  dpdk-procinfo    dpdk-test-crypto-perf  dpdk-test-eventdev         testbbdev               testpmd

build目录下是生成父目录build文件下的中间过程文件,包含.c , .o, .a, .ko文件等

# ls build/
app  buildtools  drivers  kernel  lib

kmod目录下是DPDK相关的驱动程序

# ls kmod/
igb_uio.ko  rte_kni.ko

include目录下DPDK相关的头文件

# ls include/
bpf_def.h                  rte_compat.h                          rte_event_eth_rx_adapter.h     rte_mempool.h               rte_ring_generic.h
cmdline_cirbuf.h           rte_comp.h                            rte_event_eth_tx_adapter.h     rte_memzone.h               rte_ring.h
cmdline.h                  rte_compressdev.h                     rte_event_ring.h               rte_meter.h                 rte_rtm.h
cmdline_parse_etheraddr.h  rte_compressdev_internal.h            rte_event_timer_adapter.h      rte_metrics.h               rte_rwlock.h
cmdline_parse.h            rte_compressdev_pmd.h                 rte_event_timer_adapter_pmd.h  rte_mpls.h                  rte_sched_common.h
cmdline_parse_ipaddr.h     rte_config.h                          rte_fbarray.h                  rte_mtr_driver.h            rte_sched.h
cmdline_parse_num.h        rte_cpuflags.h                        rte_fbk_hash.h                 rte_mtr.h                   rte_sctp.h
cmdline_parse_portlist.h   rte_crypto_asym.h                     rte_flow_classify.h            rte_net_crc.h               rte_security_driver.h
cmdline_parse_string.h     rte_cryptodev.h                       rte_flow_driver.h              rte_net.h                   rte_security.h
cmdline_rdline.h           rte_cryptodev_pmd.h                   rte_flow.h                     rte_option.h                rte_service_component.h
cmdline_socket.h           rte_cryptodev_scheduler.h             rte_gre.h                      rte_pause.h                 rte_service.h
cmdline_vt100.h            rte_cryptodev_scheduler_operations.h  rte_gro.h                      rte_pci_dev_feature_defs.h  rte_spinlock.h
dpaax_iova_table.h         rte_crypto.h                          rte_gso.h                      rte_pci_dev_features.h      rte_string_fns.h
exec-env                   rte_crypto_sym.h                      rte_hash_crc.h                 rte_pci.h                   rte_table_acl.h
generic                    rte_cycles.h                          rte_hash.h                     rte_pdump.h                 rte_table_action.h
rte_acl.h                  rte_debug.h                           rte_hexdump.h                  rte_per_lcore.h             rte_table_array.h
rte_acl_osdep.h            rte_devargs.h                         rte_hypervisor.h               rte_pipeline.h              rte_table.h
rte_alarm.h                rte_dev.h                             rte_icmp.h                     rte_pmd_bnxt.h              rte_table_hash_cuckoo.h
rte_approx.h               rte_dev_info.h                        rte_interrupts.h               rte_pmd_dpaa2_cmdif.h       rte_table_hash_func_arm64.h
rte_arp.h                  rte_distributor.h                     rte_io.h                       rte_pmd_dpaa2_qdma.h        rte_table_hash_func.h
rte_atomic_32.h            rte_dpaa2_mempool.h                   rte_ip_frag.h                  rte_pmd_dpaa.h              rte_table_hash.h
rte_atomic_64.h            rte_eal.h                             rte_ip.h                       rte_pmd_i40e.h              rte_table_lpm.h
rte_atomic.h               rte_eal_interrupts.h                  rte_jhash.h                    rte_pmd_ixgbe.h             rte_table_lpm_ipv6.h
rte_avp_common.h           rte_eal_memconfig.h                   rte_jobstats.h                 rte_port_ethdev.h           rte_table_stub.h
rte_avp_fifo.h             rte_efd.h                             rte_keepalive.h                rte_port_fd.h               rte_tailq.h
rte_bbdev.h                rte_errno.h                           rte_kni.h                      rte_port_frag.h             rte_tcp.h
rte_bbdev_op.h             rte_esp.h                             rte_kvargs.h                   rte_port.h                  rte_test.h
rte_bbdev_pmd.h            rte_eth_bond_8023ad.h                 rte_latencystats.h             rte_port_in_action.h        rte_thash.h
rte_bitmap.h               rte_eth_bond.h                        rte_launch.h                   rte_port_kni.h              rte_time.h
rte_bitrate.h              rte_eth_ctrl.h                        rte_lcore.h                    rte_port_ras.h              rte_timer.h
rte_bpf_ethdev.h           rte_ethdev_core.h                     rte_log.h                      rte_port_ring.h             rte_tm_driver.h
rte_bpf.h                  rte_ethdev_driver.h                   rte_lpm6.h                     rte_port_sched.h            rte_tm.h
rte_branch_prediction.h    rte_ethdev.h                          rte_lpm.h                      rte_port_source_sink.h      rte_udp.h
rte_bus.h                  rte_ethdev_pci.h                      rte_lpm_sse.h                  rte_port_sym_crypto.h       rte_uuid.h
rte_bus_ifpga.h            rte_ethdev_vdev.h                     rte_lru.h                      rte_power_empty_poll.h      rte_vdpa.h
rte_bus_pci.h              rte_ether.h                           rte_lru_x86.h                  rte_power.h                 rte_vect.h
rte_bus_vdev.h             rte_eth_ring.h                        rte_malloc.h                   rte_prefetch.h              rte_version.h
rte_bus_vmbus.h            rte_eth_softnic.h                     rte_malloc_heap.h              rte_random.h                rte_vfio.h
rte_byteorder_32.h         rte_eth_vhost.h                       rte_mbuf.h                     rte_rawdev.h                rte_vhost_crypto.h
rte_byteorder_64.h         rte_event_crypto_adapter.h            rte_mbuf_pool_ops.h            rte_rawdev_pmd.h            rte_vhost.h
rte_byteorder.h            rte_eventdev.h                        rte_mbuf_ptype.h               rte_reciprocal.h            rte_vmbus_reg.h
rte_cfgfile.h              rte_eventdev_pmd.h                    rte_member.h                   rte_red.h
rte_class.h                rte_eventdev_pmd_pci.h                rte_memcpy.h                   rte_reorder.h
rte_common.h               rte_eventdev_pmd_vdev.h               rte_memory.h                   rte_ring_c11_mem.h

lib目录下是DPDK相关的静态链接库文件

# ls lib/
libdpdk.a                 librte_flow_classify.a     librte_pdump.a                 librte_pmd_e1000.a            librte_pmd_ring.a
librte_acl.a              librte_gro.a               librte_pipeline.a              librte_pmd_ena.a              librte_pmd_sfc_efx.a
librte_bbdev.a            librte_gso.a               librte_pmd_af_packet.a         librte_pmd_enetc.a            librte_pmd_skeleton_event.a
librte_bitratestats.a     librte_hash.a              librte_pmd_ark.a               librte_pmd_enic.a             librte_pmd_skeleton_rawdev.a
librte_bpf.a              librte_ip_frag.a           librte_pmd_atlantic.a          librte_pmd_failsafe.a         librte_pmd_softnic.a
librte_bus_dpaa.a         librte_jobstats.a          librte_pmd_avf.a               librte_pmd_fm10k.a            librte_pmd_sw_event.a
librte_bus_fslmc.a        librte_kni.a               librte_pmd_avp.a               librte_pmd_i40e.a             librte_pmd_tap.a
librte_bus_ifpga.a        librte_kvargs.a            librte_pmd_axgbe.a             librte_pmd_ifc.a              librte_pmd_thunderx_nicvf.a
librte_bus_pci.a          librte_latencystats.a      librte_pmd_bbdev_null.a        librte_pmd_ifpga_rawdev.a     librte_pmd_vdev_netvsc.a
librte_bus_vdev.a         librte_lpm.a               librte_pmd_bnxt.a              librte_pmd_ixgbe.a            librte_pmd_vhost.a
librte_bus_vmbus.a        librte_mbuf.a              librte_pmd_bond.a              librte_pmd_kni.a              librte_pmd_virtio.a
librte_cfgfile.a          librte_member.a            librte_pmd_caam_jr.a           librte_pmd_lio.a              librte_pmd_virtio_crypto.a
librte_cmdline.a          librte_mempool.a           librte_pmd_crypto_scheduler.a  librte_pmd_netvsc.a           librte_pmd_vmxnet3_uio.a
librte_common_cpt.a       librte_mempool_bucket.a    librte_pmd_cxgbe.a             librte_pmd_nfp.a              librte_port.a
librte_common_dpaax.a     librte_mempool_dpaa2.a     librte_pmd_dpaa2.a             librte_pmd_null.a             librte_power.a
librte_common_octeontx.a  librte_mempool_dpaa.a      librte_pmd_dpaa2_cmdif.a       librte_pmd_null_crypto.a      librte_rawdev.a
librte_compressdev.a      librte_mempool_octeontx.a  librte_pmd_dpaa2_event.a       librte_pmd_octeontx.a         librte_reorder.a
librte_cryptodev.a        librte_mempool_ring.a      librte_pmd_dpaa2_qdma.a        librte_pmd_octeontx_crypto.a  librte_ring.a
librte_distributor.a      librte_mempool_stack.a     librte_pmd_dpaa2_sec.a         librte_pmd_octeontx_ssovf.a   librte_sched.a
librte_eal.a              librte_meter.a             librte_pmd_dpaa.a              librte_pmd_octeontx_zip.a     librte_security.a
librte_efd.a              librte_metrics.a           librte_pmd_dpaa_event.a        librte_pmd_opdl_event.a       librte_table.a
librte_ethdev.a           librte_net.a               librte_pmd_dpaa_sec.a          librte_pmd_qat.a              librte_timer.a
librte_eventdev.a         librte_pci.a               librte_pmd_dsw_event.a         librte_pmd_qede.a             librte_vhost.a

3. 使用源码编译DPDK目标文件 — dpdk 0.11 documentation (dpdk-docs.readthedocs.io)  原文摘抄如下:

3.3. Browsing the Installed DPDK Environment Target

一旦目标文件本创建,它就包含了构建客户应用程序所需的DPDK环境的所有库,包括轮询驱动程序和头文件。 此外,test和testpmd应用程序构建在build/app目录下,可以用于测试。 还有一个kmod目录,存放可能需要加载的内核模块。

3.4. 加载模块启动DPDK环境需要的UIO功能

要运行任何的DPDK应用程序,需要将合适的uio模块线加载到当前内核中。在多数情况下,Linux内核包含了标准的 uio_pci_generic 模块就可以提供uio能力。 该模块可以使用命令加载

sudo modprobe uio_pci_generic

区别于 uio_pci_generic ,DPDK提供了一个igb_uio模块(可以在kmod目录下找到)。可以通过如下方式加载:

sudo modprobe uio
sudo insmod kmod/igb_uio.ko

Note

对于一下不支持传统中断的设备,例如虚拟功能(VF)设备,必须使用 igb_uio 来替代 uio_pci_generic 模块。

由于DPDK 1.7版本提供VFIO支持,所以,对于支持VFIO的平台,可选择UIO,也可以不用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_38865.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用React.ts创建一个密码生成器的简单示例

目录密码生成器DemoFeature知识点React TypeScript —— Function Components为元素(::before/::after)绑定点击事件React如何正确定义对象数组在React中设置复选框check属性三目运算符实现React动态绑定class和style参考资料密码生成器Demo 使用密码生成器工具创建随机密码。P…

GIT技巧

目录 基础命令 commit 、branch merge rebase 高级特性 自由修改提交树 cherry-pick rebase 远程仓库命令 基础命令 commit 、branch Git Commit Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样…

流媒体传输 - HLS 协议

HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前 HLS 协议被广泛的应用于视频点播和直播领域。 概述 原理介绍 通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件&#xff…

Spirng 痛苦源码学习(二)——手写spring大致总框架(一)

文章目录前言一、总体步骤如下1、spring 文件夹2、myProject 文件夹二、主要coding1、配置文件2、容器3、一些spring中的重要的注解4、项目中的使用5.重要的bean定义信息6、postProcessor重要,前置通知和后置主要项目的截图前言 本文主要基于spring的注解的方式完成…

Python的10个编程技巧,你不一定都知道

文末有Python资料下载 1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: 赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个&…

leetcode-每日一题-1758-生成交替二进制字符串的最少操作数(简单,数学思想)

这道题标记为简单题是正常的,因为当你想到0或者1开头的时候就已经结束了看看我的分析 那么知道这个信息之后就很简单了,加上我们的位运算符号^作为标记即可,大家看看代码实现 1758. 生成交替二进制字符串的最少操作数 难度简单88收藏分享切换…

Mysql基础知识篇(二)

1.UNION 与 UNION ALL 的区别? 如果使用 UNION,会在表链接后筛选掉重复的记录行如果使用 UNION ALL,不会合并重复的记录行从效率上说,UNION ALL 要比 UNION 快很多,如果合并没有刻意要删除重复行,那么就使…

Java基于springboot+vue的摄影作品展示交流系统 计算机毕业设计

随着时代的发展,人们的精神世界也在不断的丰富,尤其是在当下电子设备发展迅速的背景下,人们通过数码相机或者手机随后就可以拍下每一个美丽的瞬间,但是人们更希望将这些摄影作品传到网上和更多的人进行分享,同时也希望…

电脑键盘功能基础知识,快速入门,抓住这份详细教程

在互联网生活发达的今天,电脑已经成为了学习工作的必备工具。而用来操作电脑的关键,就是我们经常使用的键盘和鼠标。最近有不少的小伙伴来私信小编,希望小编做一个电脑键盘功能基础知识介绍的详细教程。这不,小编应大家要求&#…

用匠心创造可期未来!与广州流辰信息科技一起携手创佳绩!

当今社会世界经济一体化趋势逐渐明朗化,竞争也愈发激烈,同时,这也是一个机遇与挑战并存的开放社会。在机遇面前,作为企业,要紧紧抓住机遇,顺势而为,创造辉煌佳绩;在挑战面前&#xf…

嵌入式 C语言/C++ 常见笔试、面试题 难疑点汇总(经典100道)

#pragma comment。将一个注释记录放置到对象文件或可执行文件中。 #pragma pack。用来改变编译器的字节对齐方式。 #pragma code_seg。它能够设置程序中的函数在obj文件中所在的代码段。如果未指定参数,函数将放置在默认代码段.text中 #pragma once。保证所在文件只…

MySQL软件常见操作

1登录MySQL 登录,如果你配置了环境变量就可以winr,在运行框输入cmd,输入登录命令 第一种:直接输入密码 mysql -uroot -p(你的密码没有有括号) 第二种不直接输入密码 mysql -uroot -p 前面两种都是localhost登录 下面是完整版 m…

slam定位学习笔记(七)-g2o学习

主要学习的是这篇文章,但大佬并没有在文章里面仔细的讲g2o,所以我在网上找了这几篇介绍g2o的文章,讲的十分详细,对入门十分友好:文章一、文章二、文章三,这三篇都是一个作者写的,主要是针对编程…

MATLAB数据导入

MATLAB数据导入 在编写一个程序时,经常需要从外部读入数据。MATLAB使用多种格式打开数据。本章将要介绍MATLAB中数据的导入。 MATLAB中导入数据的方式有两种,分别是在命令行通过代码把数据导进去和通过MATLAB的数据导入向导导入数据。本节将为大家介绍第…

广播实现强制下线功能

实现强制下线功能 强制下线应该是一个比较常用的功能,比如QQ在比的地方被登陆了,就会强制比被挤下线.强制下线的功能还是比较简单的,只需要在界面上弹出一个框,告知用户无法再进行任何操作即可.只能点击确定然后跳转至登录界面.强制下线功能需要关闭所有的Activity,然后返回到…

微服务框架 SpringCloud微服务架构 4 Ribbon 4.3 饥饿加载

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构4 Ribbon4.3 饥饿加载4.3.1 饥饿加载4.3.2 总结4 Ribbon 4.3 饥饿加载 4…

【毕业设计】深度学习车辆颜色识别检测系统 - python opencv YOLOv5

文章目录1 前言2 实现效果3 CNN卷积神经网络4 Yolov55 数据集处理及模型训练6 最后1 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始,各个学校对毕设…

ATJ2157ATJ2127音乐按文件名拼音排序---标案是按内码进行排序

音乐按文件名拼音进行排序参考网站ATJ2157&ATJ2127 排序是按照内码(汉字为GBK即GBK936)排序的按拼音排序unicode与拼音的对比表(U2P.DAT),需要打包到固件中U2P.DAT数据结构U2P.DAT生成代码是使用DEV-C生成其他说明U2P.DAT与ATJ2127平台代码参考网站 各种字符对…

activiti-api

activiti-api目录概述需求:设计思路实现思路分析1.VariableEvent2.EmptyResult3.BPMNElement4.BPMNError5.ConnectorAbstractSecurityManager参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…

Mac下安装Hadoop

1、引言 如果想在Mac下安装Hadoop而且让Hadoop能正常运行,那安装之前需要先安装java,在Mac环境下安装Hadoop。 2、配置ssh环境 在Mac下如果想使用Hadoop,必须要配置ssh环境, 如果不执行这一步,后面启动hadoop时会出现…