寻找网卡初始化的地方

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

相关文章

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

SpringIOC容器Bean初始化和销毁回调方式

《SpringIOC容器Bean初始化和销毁回调方式》:本文主要介绍SpringIOC容器Bean初始化和销毁回调方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录前言1.@Bean指定初始化和销毁方法2.实现接口3.使用jsR250总结前言Spring Bea

Spring实现Bean的初始化和销毁的方式

《Spring实现Bean的初始化和销毁的方式》:本文主要介绍Spring实现Bean的初始化和销毁的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Bean的初始化二、Bean的销毁总结在前面的章节当中介绍完毕了ApplicationContext,也就

Python多重继承慎用的地方

《Python多重继承慎用的地方》多重继承也可能导致一些问题,本文主要介绍了Python多重继承慎用的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录前言多重继承要慎用Mixin模式最后前言在python中,多重继承是一种强大的功能,它允许一个

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB