寻找网卡初始化的地方

2024-06-15 17:08
文章标签 初始化 网卡 地方 寻找

本文主要是介绍寻找网卡初始化的地方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019/07/18
今天算是真正深入DPDK的文件中查看源码,真的是发现了很多很多,它使用的技巧,具体的内容现在一时也说不清楚,就一点一点记录把。


  1. 入口点
    rte_eal_init->rte_bus_scan
    进入这个函数的文件之后,发现它使用了一个rte_bus_list的变量,但怎么也找不到具体的定义。
    最后发现,librte_eal/common/include/rte_bus.h:TAILQ_HEAD(rte_bus_list, rte_bus)
    这个宏就是定义这个东西的,TAILQ[2]是linux的头文件,所以一直我都找不到这个宏的定义。

  2. 各种设备的初始化
    对于各种设备的初始化,他们的那个数组我一直都找不到具体的初始化过程;后来发现是GCC的一种形式,就是在main函数之前就进行了相关内容的初始化,这一块我不是非常理解。他可以在main之前执行没问题,但最后执行的时候为什么能包含那一块,这个问题就是相关的编译和链接的问题。

  3. 网卡初始化[1]
    这个应该是我看的最早的一篇,但是这篇文章基于DPDK的版本很早了,所有代码基本上都不一样了。
    不过最重要的,还是前面2中提到的,这个函数能够在main函数执行前就跑了。(疑问,那内核模块也是这么跑的?)

4.关于GCC编译
对于2中main函数之前执行相关函数,需要相关的属性定义[3]

5.DPDK初始化相关的内容
[4][5][6][7][8][9]

  1. 网卡驱动与PCI设备等一系列内容的关系
    文章[10][11]从内核的角度,解释了所有设备进行注册的过程,这个里面的内容呢,跟我在查看DPDK的源码过程中得到的认知是相仿的。但是这一块内容,怎么说呢,我只需要知道这样一个流程就可以了,并不需要进行深入理解。

所以按照这么来理解,最开始的全局变量,一般是设备,网卡设备,这些都是驱动部分先进行注册,然后将这些内容挂载在具体的部分。先是bus_scan,然后是bus_probe。

参考文献

[1][DPDK收发包处理流程-----(一)网卡初始化
[2]queue.h中TAILQ_QUEUE的解析
[3]attribute中constructor和destructor
[4]DPDK源码学习——初始化
[5]DPDK初始化分析(一)
[6]http://blog.chinaunix.net/uid/28541347/cid-222786-list-2.html
[7]dpdk源码(16.04)分析--端口初始化
[8]DPDK学习(网卡初始化)
[9]DPDK的RTE_INIT初始化
[10]Linux网卡驱动学习(一)
[11]Linux网卡驱动学习(二)

这篇关于寻找网卡初始化的地方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064064

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

寻找身高相近的小朋友

题目描述: 小明今年升学到小学一年级,来到新班级后发现其他小朋友们身高参差不齐,然后就想基于各小朋友和自己的身高差对他们进行排序,请帮他实现排序。 输入描述: 第一行为正整数H和N,0<H<200,为小明的身高,0<N<50,为新班级其他小朋友个数。第二行为N个正整数H1-HN,分别是其他小朋友的身高,取值范围0<Hi<200(1<=i<=N),且N个正整数各不相同。 输出描述: 输出

【第0006页 · 数组】寻找重复数

【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里: 第0006页 · 寻找重复数         今天想讨论的一道题在 LeetCode 上评论也是颇为“不错”。有一说一,是道好题,不过我们还是得先理解了它才算真正的好题。这里我们展示一种使用二进制的做法,希望能帮到你哟! 【寻找重复数】给定一个包含 n + 1 个整数的数组 nums ,其数字都

Centos9 网卡配置文件

1、Centos stream 9 网络介结 Centos以前版本,NetworkManage以ifcfg格式存储网络配置文件在/etc/sysconfig/networkscripts/目录中。但是,Centos steam 9现已弃用ifcfg格式,默认情况下,NetworkManage不再创建此格式的新配置文件。从Centos steam 9开始采用密钥文件格式(基于INI文件),Netw

@postconstruct初始化的操作

从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式: @PostConstruct Public void someMethod() {}

spring和tomcat初始化的类和注解

1.InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。 spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中同过init-method指定,两种方式可以同时使用 实

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能,主要实现等待FAM(Field-Programmable Gate Array Module,FPGA模块)的初始化完成,并处理初始化过程中的错误。让我们逐步分析各部分的功能: 1. Wait for FAM Initialization框架 此程序框架用于等待I/O模块成功初始化。如果在5秒钟内模块没有完成配

dp(背包问题) 恰好、至少、至多初始化

状态表示的初始化(一般情况) f[i][j] i:前i件物品 体积至少为j 枚举体积时可以是负数(体积为负数时等价于体积为0) max f[i][j] = {-0x3f} f[i][0] = 0min f[i][j] = { 0x3f} f[i][0] = 0cnt f[0][0] = 1 体积至多为j 枚举体积时不能是负数 max f[i][j] = 0min f[i][j]

二分猜数易错的地方

今天做简单的二分猜数问题,while循环总是跳不出去,搞了好久才弄好了。。。好几次都这样,总结一下吧 while(left <= right){int mid = (left+right)/2;if(ok(mid)) left = mid+1,ans = mid;//记录结果,要不然跳不出循环,视题目而定,ans也可以写在下面else right = mid-1;}