一、Linux内核网桥的实现分析 Linux 内核分别在2.2 和 2.4内核中实现了网桥。但是2.2 内核和 2.4内核的实现有很大的区别,2.4中的实现几乎是全部重写了所有的实现代码。本文以2.4.0内核版本为例进行分析。 在分析具体的实现之前,先描述几个概念,有助于对网桥的功能及实现有更深的理解。冲突域 一个冲突域由所有能够看到同一个冲突或者被该冲突涉及到的设备组成。以太网使用C S M A / C D(Carrier Sense Multiple Access with Co...
对于这个问题,我们首先可以想到的是使用pause()函数和alarm()函数进行组合,这样就可以实现sleep函数的作用。 首先来看pause函数的作用 接着来看SIGALRM信号(man 7 signal):由此我们可以看到SIGALRM默认的Action是Term。 而Term的默认动作是终止进程。 所以我们可以做如下实验,当我们没有信号捕捉的时候会发生什么样的情况?运行结果: 此时并没有输出“after pause”,在程序执行的过程中,遇到pause程序被挂起之后,当2s之后...
简介 iostat主要用于实时监控设备的IO负载情况,iostat首次运行时显示自系统开始的各项统计信息,之后运行iostat将显示上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需要的统计信息。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 语法 iostat (选项)(参数)选项-d:仅显示设备利用率; -k:显示状态以千字节每秒为单位,而不是使用块每秒; -m...
Table of Contents 1、I2C模型框图 2、设备信息层 2.1、非设备树形式 2.2、设备树形式 3、芯片控制器层adapter 3.1、控制器初始化 3.2、控制器底层传输函数(起始,数据,应答,停止) 4、核心层core.c i2c_bus 4.1、i2c_bus总线初始化 4.2、client(设备)和i2c_driver(设备驱动)匹配过程 4.2.1、创建client(设备)时匹配i2c_driver(驱动)过程 4.2.2、注册i2c_driver(驱动)时匹配client(设备)过程 4.3、总线探测probe...
Linux-内核-学习笔记(12):内核启动过程分析 在uboot启动后,会将各种参数通过三个寄存器的方式传递给内核函数,并在执行启动内核后自动结束。内核启动过程会解析参数并初始化各种设备,最终进入到了一种能够实现进程间调度的多进程状态,这些进程里面只要有哪个需要被运行,调度系统就会终止cpu_idle死循环进程(空闲进程)转而去执行有意义的干活的进程,从而实现内核的运转。 一、链接脚本vmlinux.lds.Skernel的链接脚本并不是...
Linux 服务器上有挖矿病毒处理 分析 今天遇到病毒挖矿,有点小兴奋 来波分析: 看上面的症状是:攻击者通过docker入侵的【后面了解,可能是redis账号密码简单的原因被爆破的】 最奇诡的事,攻击者可能通过提权,获取到root的权限。然后一些列的挖矿病毒 大致流程图症状表现 服务器CPU资源使用一直处于100%的状态,通过 top 命令查看,发现可疑进程 解决 排查方法 首先:查看 bbb进程,使用 ps -ef | grep bbb?PS: 通过 ps -ef 命...
本文的部分内容可能来源于网络,该内容归原作者所有,如果侵犯到您的权益,请及时通知我,我将立即删除,原创内容copyleft归tingkman@163.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。欢迎加入zynq-arm-linux提高交流群:788265722 文档错误可能很多,大家多包涵,主要理解文件的目的就好。可留言 Zynq-axidma是大家常用的功能,所以,很多同学都用到,但是有...
前三篇文章完成了mdio子系统概述、mdio子系统驱动模型概述、mii_bus子模块方法及驱动实现分析,本篇文章我们主要进行mdio总线驱动实现分析、phy驱动实现分析等部分,涉及的内容如下: 一、mdio总线实现及相应方法分析 二、phy驱动实现相应方法的分析 三、phy驱动开发步骤说明 一、mdio总线实现及相应方法分析 既然mdio子模块属于总线型驱动,因此mdio子模块也是继承于linux设备-总线-驱动模型,从而实现自己的驱动模...
前面几章基本上完成了mdio模块驱动模型的分析,本篇文章主要讲述phy device的状态机以及phy device与net_device的关联。Phy device主要是对phy的抽象,而net_device主要是对mac的抽象,而mdio总线以及mii_bus主要用于对phy设备的控制(包括设置phy设备的工作模式、速率模式、是否为自适应、phy的link状态等),而net_device需要根据phy的工作模式、速率模式、phy的link状态进行状态的同步,因此需要将net_device与phy device进行绑...
前面几章我们介绍了MDIO模块的大部分内容,针对mii_bus、mdio_bus、phy_device、phy_driver相关的注册、注销均进行了介绍。基本上把mdio模块的内容介绍完了,而本篇介绍的内容,主要是针对虚拟mii_bus实现,并将虚拟phy_device注册至该mii_bus上。(本次分析内容基于LINUX3.10的内核) 那fixed-mii_bus起到什么作用呢?其应用场景如下(示意图如下): 两个cpu间的mac通过rgmii/sgmii等直接相连(不需要phy device),这两块核心...
从今天开始,我们进行linux mtd子系统的分析。mtd子系统即为内存技术设备子系统,主要包括nor flash、nand flash等闪存设备相关的子系统模块,而针对sd、tf等存储设备,则主要由mmc子系统模块进行管理并创建对应的块设备。而针对mtd子系统,则会基于mtd原始设备,创建mtd字符设备与mtd块设备,从而在上层与vfs系统进行关联。 针对mtd子系统,主要涉及如下几个方面的介绍: 一、MTD子系统概述 二、MTD设备驱动模型相关数据结构说明...
本篇文章我们主要说明向mtd设备驱动模型的架构及相应的数据结构,我们从数据结构入手,即可以较好的理解mtd设备驱动模型的架构,以便我们能较好的理解mtd设备驱动模。 本篇主要包括如下几个部分: 一、mtd设备驱动模型的架构说明 二、mtd设备驱动相关的数据结构说明 一、mtd设备驱动模型的架构说明 为了方便我们认识mtd设备驱动模型,此处我们先说明mtd设备驱动模型的架构(即mtd设备驱动模型与外部模块间的联系,包...
本篇是mii management/mdio模块分析的第三篇文章,本章我们主要介绍mii-bus的注册与注销接口。在前面的介绍中也已经说过,我们可以将mii-bus理解为mdio总线的控制器的抽象,就像spi-master、i2c-adapter一样。 本篇文章主要涉及如下两部分: mii-bus的注册与注销接口 mii-bus提供的方法说明 mii-bus驱动开发步骤说明 mii-bus的注册与注销接口 mii_bus主要提供了mdiobus_register、mdiobus_unregister。下面我们对这两...
对于Windows系统的使用和操作,大家应该都比较熟悉,而对于Linux系统来说,应该是相对陌生。那这两个系统在启动过程中有那些差异呢,又有哪些共同点呢?本文章就简单分析这两个系统在启动过程。系统启动过程 Windows启动过程: 上电——>BIOS——>Windows系统——>识别盘符——>应用程序 装有Windows系统的电脑上电后,CPU先执行固化在芯片上的一段小程序,主要用来初始化内存,加载BIOS;BIOS运行之后,初始化硬件设备,建...
Linux2.6.9内核源码分析–eventpoll eventpoll epoll分为三个系统调用: long sys_epoll_create(int size); long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event __user *event); long sys_epoll_wait(int epfd, struct epoll_event __user *events, int maxevents, int timeout); long sys_epoll_create(int size) 参数说明: 输入参数: int sizeIt opens an eventpoll file descriptor by suggesting a storage o...