DPDK代码目录结构

news2024/10/6 12:31:10

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.coloradmin.cn/o/45969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用文本编辑器,及文本查看摘选的常用命令

Linux常用文本编辑器: Emacs:功能强大,门槛高,对新手不友好。 nano :优点是操作简单,缺点是无强大的命令支持复杂操作。 gedit :只能在有gnome的换图形化界面中使用 kedit : 只能在…

服务器冗余常见问题及解答汇总

对于众多组织来说,在灾难发生后能够访问数据至关重要。而硬件故障、应用程序故障、网络问题和其他此类问题会阻止服务器的正常运行,使用户无法访问服务和重要数据。这时企业可以通过采用服务器冗余来避免这些突发事件。下面是关于服务器冗余常见问题解答…

10【Mybatis延迟加载】

文章目录一、Mybatis 延迟加载1.1 延迟加载介绍1.1.1 搭建项目工程1)SQL脚本:2)引入依赖:3)MyBatis核心配置文件:4)实体类:5)dao接口:6)mapper.xm…

Java本地搭建实战毕设项目sprignboot电商书城管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的sprignboot电商书城管理系统源码,包含前端界面、后台管理界面。适合拿来做毕业设计的同学。可以下载来研究学习一下。本期就把这套系统分享给大家。 技术架构 技术框架&…

Meta-learning

基本理解 meta learning翻译为元学习,也可以被认为为learn to learn 元学习与传统机器学习的不同在哪里? 元学习与传统机器学习, 这里举个通俗的例子,拿来给大家分享? 把训练算法类比成学生在学校学习,传…

Macleod中的偏振

我们用偏振来描述光波电场的方向。虽然是很复杂,但它的影响是完全明确和可计算的。图1显示了一个简单的长波通滤波器在斜入射时的计算性能,其曲线标记为p-偏振、s-偏振和平均极化。这些名称是什么意思? 图1. 在45条件下计算的600nm长波通滤…

华清远见(上海中心)22071

platform总线&#xff0c;三种匹配方式 一、设备名字匹配 设备文件代码>>> #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h>//对设备信息进行填充 struct resource res[]{[0]{.start0x12345678,.end0x12…

服务网关之Spring Cloud Gateway

目录一、网关简介二、Gateway简介三、Gateway快速入门1、基础版2、增强版3、简写版四、Gateway核心架构1、基本概念2、执行流程五、断言1、内置路由断言工厂2、自定义路由断言工厂一、网关简介 大家都知道在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客…

Linux Docker基础学习

Linux Docker基础学习Linux指令Linux安装Docker检查是否安装成功容器容器的创建删除运行停止容器端口转发查看容器提供的端口号Docker交互模式镜像镜像的拉取删除镜像的导入导出Dockerfile制作镜像上传镜像到DockerhubDockerfile文件详解FROMRUN指令镜像中添加文件&#xff08;…

运维监控系统PIGOSS BSM 对“实时数据复制”系统的监控管理

前言 随着应用信息化程度的不断深入&#xff0c;长期积累的业务数据变得价值连城。业务数据备份安全是业务连续性的重要保障&#xff1b; 而同时&#xff0c;业务数据也指导成为企业进行业务分析最有价值的科学依据。 所以&#xff0c;人们纷纷为业务系统建设容灾备份系统&…

【性能|优化】TB级flink任务报错分析:Could not compute the container Resource

文章目录一. 问题引入1. 场景描述2. 日志简析二. 初级问题分析与解决1. 问题分析1.1. yarn的调度器设置1.2. 程序设置2. 问题解决三. &#xff08;性能&#xff09;新的问题1. 问题描述2. 理想化的最优方案3. "PlanB"的解决方案四. 反思与迭代一. 问题引入 1. 场景描…

2022年工业与电力物联网技术现状分析

主要内容22年工业与电力物联网技术现状分析10大科技趋势达摩院 2022 十大科技趋势腾讯 融合2022年十大数字科技前沿应用趋势艾瑞咨询 2022年中国科技与IT十大趋势物联网技术物联网架构体系结构简介应用层2022年整体情况物联网平台及相关能力平台2022年整体情况物联网网络2022年…

Python学习:json对象与string相互转换教程

首先要明确&#xff0c;python里有json这个库&#xff0c;但并没有json这个类&#xff0c;所以所谓的json对象本质上就是一个dict&#xff1b;而json这个库&#xff0c;用于实现dict到string、string到dict的互转。 更具体一点&#xff0c;json对象&#xff08;dict&#xff0…

鼠标监视 | 拖拽方块 | Vue

title: 拖拽功能 tags: Vue categories: JavaScript abbrlink: 18a433ce date: 2022-11-26 21:14:19 效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" co…

使用 KubeSphere 部署高可用 RocketMQ 集群

作者&#xff1a;老Z&#xff0c;云原生爱好者&#xff0c;目前专注于云原生运维&#xff0c;KubeSphere Ambassador。 Spring Cloud Alibaba 全家桶之 RocketMQ 是一款典型的分布式架构下的消息中间件产品&#xff0c;使用异步通信方式和发布订阅的消息传输模型。 很多基于 S…

红色荧光染料AF 594活性酯,Alexa Fluor 594 NHS ester,CAS:295348-87-7

一&#xff1a;产品描述 1、名称 英文&#xff1a; AF 594 NHS Ester AF 594 Succinimidyl Ester Alexa Fluor 594 NHS Ester 中文&#xff1a;AF 594活性酯 2、CAS编号&#xff1a;295348-87-7 3、分子式&#xff1a;C39H37N3O13S2 4、分子量&#xff1a;819.85 5、…

【人工智能 机器学习 深度学习】基础选择题1~30题 练习

目录 一、1~10题1.1 题目1.2 答案二、11~20题2.1 题目2.2 答案三、21~30题3.1 题目3.2 答案写在前面:适用于对 人工智能&机器学习&深度学习 进行复习的同学,同时,也可以通过基础题目的练习,加深理解。 一、1~10题 均是先给出10道题目,而后给出 10道题目的答案。 …

(十二)Java算法:桶排序(详细图解)

目录一、前言1.1、概念1.2、算法步骤二、maven依赖三、流程解析3.1、桶编号计算3.2、桶元素排序四、编码实现一、前言 1.1、概念 计数排序&#xff1a;的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序&#xff0c;计数排序要求输入…

SpringCloud全系列知识(2)—— Nacos配置和集群

Nacos配置和集群 一 统一配置管理 Nacos官方文档 1.配置热更新 1.新建配置文件 在Nacos的配置列表中新建一个配置文件。 注意事项&#xff1a; Data ID 命名规则&#xff1a;一般情况下使用使用 “微服务名称运行环境” 作为DataID&#xff0c;后缀名建议使用文件后缀全…

集成一个以官网(微信,QQ,微博)为标准的登录分享功能

Hello&#xff0c;各位老铁&#xff0c;今天要分享的是一个老生常谈的一个功能&#xff0c;也是网上一搜一大片的技术点&#xff0c;没什么技术含量&#xff0c;就是整合一下&#xff0c;提供一下方便&#xff0c;相对于友盟&#xff0c;ShareSdk中夹杂着一些别的功能&#xff…