治肾虚不含糖,专注内核性能优化二十年。 https://github.com/KnightKu
发布时间:2013-01-04 16:25:53
这里讨论系统上电时的情况, 热插拔的情况应该差不多.首先是从根总线开始, 然后就是扫描这个根总线上的每一条子BUS, 如下:unsigned int pci_scan_child_bus(struct pci_bus *bus){ unsigned int devfn, pass, max = bus->secondary; struct pci_dev *dev; pr_debug("PCI: Scanning bus %04x:%02x\n", pci_domain_nr(bu......【阅读全文】
发布时间:2012-12-25 15:09:57
根据内核3.1.6版本源码、书籍和网上资料,对几个函数进行分析
介绍这几个函数,不得不先介绍等待队列wait_queue_head_t
等待队列用于使得进程等待某一特定事件的发生,无需频繁的轮询,进程在等待周期中睡眠,当时间发生后由内核自动唤醒。
等待队列
(一)数据结构
等待队列结构如下,因为每个等待队列都可以再中断时被修改,因此,在操作等待队列之前必须获得一个自旋......【阅读全文】
发布时间:2012-12-12 17:26:14
__iomem是2.6.9中加入的特性。是用来个表示指会指向一个I/O的内存空间。主要是为了driver的通用性考虑。由于不同的CPU体系结构对I/O空间的表示可能不同。当使用__iomem时,compiler会忽略对变量的检查(因为用的是void __iomem)。但sparse会对它进行检查,当__iomem的指针和正常的指针混用时,就会发出一些warnings。 下面还有一些为个变量新加入的函数: unsigned int ioread8(void __iomem *addr); unsigned int......【阅读全文】
发布时间:2012-12-12 15:24:11
外围设备互连(PCI)是一种将系统中外部设备以结构化与可控制方式连接到起来的总线标准,包括系统部件连接的电气特性及行为。本章将详细讨论Linux核心对系统中的PCI总线与设备的初始化过程。 图6.1 一个基于PCI的系统示意图 图6.1是一个基于PCI的系统示意图。PCI总线和PCI-PCI桥接器在连接系统中设备到上起关键作用,在这个系统中CPU和视频设备被连到PCI bus 0上,它是系统中的主干PCI总线。而PCI-PCI桥接器这个特殊PCI设备将主干总线PCI bus 0与下级总线PCI bus 1连接到一起。PCI标准术语中,PCI bus 1是......【阅读全文】