📄 index.html
字号:
<dt><span class="sect2"><a href="ch14s05.html#TheFullClassInterface.sect2">14.5.2. 完整的类接口</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch14s06.html">14.6. 集成起来</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch14s06.html#AddaDevice.sect2">14.6.1. 添加一个设备</a></span></dt>
<dt><span class="sect2"><a href="ch14s06.html#RemoveaDevice.sect2">14.6.2. 去除一个设备</a></span></dt>
<dt><span class="sect2"><a href="ch14s06.html#AddaDriver.sect2">14.6.3. 添加一个驱动</a></span></dt>
<dt><span class="sect2"><a href="ch14s06.html#RemoveaDriver.sect2">14.6.4. 去除一个驱动</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch14s07.html">14.7. 热插拔</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch14s07.html#DynamicDevices.sect2">14.7.1. 动态设备</a></span></dt>
<dt><span class="sect2"><a href="ch14s07.html#ThesbinhotplugUtility.sect2">14.7.2. /sbin/hotplug 工具</a></span></dt>
<dt><span class="sect2"><a href="ch14s07.html#Usingsbinhotplug.sect2">14.7.3. 使用 /sbin/hotplug </a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch14s08.html">14.8. 处理固件</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch14s08.html#TheKernelFirmwareInterface.sect2">14.8.1. 内核固件接口</a></span></dt>
<dt><span class="sect2"><a href="ch14s08.html#HowItWorks.sect2">14.8.2. 它如何工作</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch14s09.html">14.9. 快速参考</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch14s09.html#Kobjects.sect2">14.9.1. Kobjects结构</a></span></dt>
<dt><span class="sect2"><a href="ch14s09.html#SysfsOperations.sect2">14.9.2. sysfs 操作</a></span></dt>
<dt><span class="sect2"><a href="ch14s09.html#BusesDevicesandDrivers.sect2">14.9.3. 总线, 设备, 和驱动</a></span></dt>
<dt><span class="sect2"><a href="ch14s09.html#Classes.sect2">14.9.4. 类</a></span></dt>
<dt><span class="sect2"><a href="ch14s09.html#Firmware.sect2">14.9.5. 固件</a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="ch15.html">15. 内存映射和 DMA </a></span></dt>
<dd><dl>
<dt><span class="sect1"><a href="ch15.html#MemoryManagementinLinux.sect1">15.1. Linux 中的内存管理</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch15.html#AddressTypes.sect2">15.1.1. 地址类型</a></span></dt>
<dt><span class="sect2"><a href="ch15.html#PhsicalAddressesandPages.sect2">15.1.2. 物理地址和页</a></span></dt>
<dt><span class="sect2"><a href="ch15.html#HighandLowMemory.sect2">15.1.3. 高和低内存</a></span></dt>
<dt><span class="sect2"><a href="ch15.html#TheMemoryMapandStructPage.sect2">15.1.4. 内存映射和 struct page</a></span></dt>
<dt><span class="sect2"><a href="ch15.html#PageTables.sect2">15.1.5. 页表</a></span></dt>
<dt><span class="sect2"><a href="ch15.html#VirtualMemoryAreas.sect2">15.1.6. 虚拟内存区</a></span></dt>
<dt><span class="sect2"><a href="ch15.html#TheProcessMemoryMap.sect2">15.1.7. 进程内存映射</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch15s02.html">15.2. mmap 设备操作</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch15s02.html#Usingremap_pfn_range.sect2">15.2.1. 使用 remap_pfn_range</a></span></dt>
<dt><span class="sect2"><a href="ch15s02.html#ASimpleImplementation.sect2">15.2.2. 一个简单的实现</a></span></dt>
<dt><span class="sect2"><a href="ch15s02.html#AddingVMAOperations.sect2">15.2.3. 添加 VMA 的操作</a></span></dt>
<dt><span class="sect2"><a href="ch15s02.html#MappingMemorywithnopage.sect2">15.2.4. 使用 nopage 映射内存</a></span></dt>
<dt><span class="sect2"><a href="ch15s02.html#RemappingSpecificIORegions.sect2">15.2.5. 重新映射特定 I/O 区</a></span></dt>
<dt><span class="sect2"><a href="ch15s02.html#RemappingRAM.sect2">15.2.6. 重新映射 RAM</a></span></dt>
<dt><span class="sect2"><a href="ch15s02.html#RemappingKernelVirtualAddresses.sect2">15.2.7. 重映射内核虚拟地址</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch15s03.html">15.3. 进行直接 I/O</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="ch15s03.html#AsynchronousIO.sect2">15.3.1. 异步 I/O</a></span></dt></dl></dd>
<dt><span class="sect1"><a href="ch15s04.html">15.4. 直接内存存取</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch15s04.html#OverviewofDMADataTransfer.sect2">15.4.1. 一个 DMA 数据传输的概况</a></span></dt>
<dt><span class="sect2"><a href="ch15s04.html#AllocationgtheDMABuffer.sect2">15.4.2. 分配 DMA 缓冲</a></span></dt>
<dt><span class="sect2"><a href="ch15s04.html#BusAddresses.sect2">15.4.3. 总线地址</a></span></dt>
<dt><span class="sect2"><a href="ch15s04.html#TheGenericDMALayer.sect2">15.4.4. 通用 DMA 层</a></span></dt>
<dt><span class="sect2"><a href="ch15s04.html#DMAforISADevices.sect2">15.4.5. ISA 设备的 DMA</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch15s05.html">15.5. 快速参考</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch15s05.html#IntroductoryMaterial.sect2">15.5.1. 介绍性材料</a></span></dt>
<dt><span class="sect2"><a href="ch15s05.html#Implementingmmap.sect2">15.5.2. 实现 mmap</a></span></dt>
<dt><span class="sect2"><a href="ch15s05.html#ImplementingDirectIO.sect2">15.5.3. 实现直接 I/O</a></span></dt>
<dt><span class="sect2"><a href="ch15s05.html#DirectMemoryAccess.sect2">15.5.4. 直接内存存取</a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="ch16.html">16. 块驱动</a></span></dt>
<dd><dl>
<dt><span class="sect1"><a href="ch16.html#Registration.sect1">16.1. 注册</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch16.html#BlockDriverRegistration.sect2">16.1.1. 块驱动注册</a></span></dt>
<dt><span class="sect2"><a href="ch16.html#DiskRegistration.sect2">16.1.2. 磁盘注册</a></span></dt>
<dt><span class="sect2"><a href="ch16.html#Initializationinsbull.sect2">16.1.3. 在 sbull 中的初始化</a></span></dt>
<dt><span class="sect2"><a href="ch16.html#ANoteonSectorSizes.sect2">16.1.4. 注意扇区大小</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch16s02.html">16.2. 块设备操作</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch16s02.html#TheopenandreleaseMethods.sect2">16.2.1. open 和 release 方法</a></span></dt>
<dt><span class="sect2"><a href="ch16s02.html#SupportingRemovableMedia.sect2">16.2.2. 支持可移出的介质</a></span></dt>
<dt><span class="sect2"><a href="ch16s02.html#TheioctlMethod.sect2">16.2.3. ioctl 方法</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch16s03.html">16.3. 请求处理</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch16s03.html#IntroductiontotherequestMethod.sect2">16.3.1. 对请求方法的介绍</a></span></dt>
<dt><span class="sect2"><a href="ch16s03.html#ASimplerequestMethod.sect2">16.3.2. 一个简单的请求方法</a></span></dt>
<dt><span class="sect2"><a href="ch16s03.html#RequestQueues.sect2">16.3.3. 请求队列</a></span></dt>
<dt><span class="sect2"><a href="ch16s03.html#TheAnatomyofaRequest.sect2">16.3.4. 请求的分析</a></span></dt>
<dt><span class="sect2"><a href="ch16s03.html#RequestCompletionFunctions.sect2">16.3.5. 请求完成函数</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch16s04.html">16.4. 一些其他的细节</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch16s04.html#CommandPrePreparation.sect2">16.4.1. 命令预准备</a></span></dt>
<dt><span class="sect2"><a href="ch16s04.html#TaggedCommandQueueing.sect2">16.4.2. 被标识的命令排队</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch16s05.html">16.5. 快速参考</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="ch17.html">17. 网络驱动</a></span></dt>
<dd><dl>
<dt><span class="sect1"><a href="ch17.html#HowsnullIsdesigned">17.1. snull 是如何设计的</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17.html#AssigningIPNumbers">17.1.1. 分配 IP 号</a></span></dt>
<dt><span class="sect2"><a href="ch17.html#ThePhysicalTransportofPacket">17.1.2. 报文的物理传送</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s02.html">17.2. 连接到内核</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s02.html#DeviceRegistration">17.2.1. 设备注册</a></span></dt>
<dt><span class="sect2"><a href="ch17s02.html#InitializingEachDevice">17.2.2. 初始化每一个设备</a></span></dt>
<dt><span class="sect2"><a href="ch17s02.html#ModuleUnloading">17.2.3. 模块卸载</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s03.html">17.3. net_device 结构的详情</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s03.html#GlobalInformation">17.3.1. 全局信息</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#HardwareInformation">17.3.2. 硬件信息</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#InterfaceInformation">17.3.3. 接口信息</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#TheDeviceMethods">17.3.4. 设备方法</a></span></dt>
<dt><span class="sect2"><a href="ch17s03.html#UtilityFields">17.3.5. 公用成员</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s04.html">17.4. 打开与关闭</a></span></dt>
<dt><span class="sect1"><a href="ch17s05.html">17.5. 报文传送</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s05.html#ControllingTransmissionConcurrency">17.5.1. 控制发送并发</a></span></dt>
<dt><span class="sect2"><a href="ch17s05.html#TransmissionTimeouts">17.5.2. 传送超时</a></span></dt>
<dt><span class="sect2"><a href="ch17s05.html#ScatterGathreIO">17.5.3. 发散/汇聚 I/O</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s06.html">17.6. 报文接收</a></span></dt>
<dt><span class="sect1"><a href="ch17s07.html">17.7. 中断处理</a></span></dt>
<dt><span class="sect1"><a href="ch17s08.html">17.8. 接收中断缓解</a></span></dt>
<dt><span class="sect1"><a href="ch17s09.html">17.9. 连接状态的改变</a></span></dt>
<dt><span class="sect1"><a href="ch17s10.html">17.10. Socket 缓存</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s10.html#TheImportFields">17.10.1. 重要成员变量</a></span></dt>
<dt><span class="sect2"><a href="ch17s10.html#FunctionsActingonSocketBuffers">17.10.2. 作用于 socket 缓存的函数</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s11.html">17.11. MAC 地址解析</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s11.html#UsingARPwithEthernet">17.11.1. 以太网使用 ARP</a></span></dt>
<dt><span class="sect2"><a href="ch17s11.html#OverridingARP">17.11.2. 不考虑 ARP</a></span></dt>
<dt><span class="sect2"><a href="ch17s11.html#NonEthernetHeader">17.11.3. 非以太网头部</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s12.html">17.12. 定制 ioctl 命令</a></span></dt>
<dt><span class="sect1"><a href="ch17s13.html">17.13. 统计信息</a></span></dt>
<dt><span class="sect1"><a href="ch17s14.html">17.14. 多播</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s14.html#KernelSupportforMulticasting">17.14.1. 多播的内核支持</a></span></dt>
<dt><span class="sect2"><a href="ch17s14.html#ATypicalImplementation">17.14.2. 典型实现</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s15.html">17.15. 几个其他细节</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch17s15.html#MediaIndependentInterfaceSupport">17.15.1. 独立于媒介的接口支持</a></span></dt>
<dt><span class="sect2"><a href="ch17s15.html#EthtoolSupport">17.15.2. ethtool 支持</a></span></dt>
<dt><span class="sect2"><a href="ch17s15.html#Netpoll">17.15.3. netpoll</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch17s16.html">17.16. 快速参考</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="ch18.html">18. TTY 驱动</a></span></dt>
<dd><dl>
<dt><span class="sect1"><a href="ch18.html#ASmallTTYDriver.sect">18.1. 一个小 TTY 驱动</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="ch18.html#structtermios.sect">18.1.1. 结构 struct termios</a></span></dt></dl></dd>
<dt><span class="sect1"><a href="ch18s02.html">18.2. tty_driver 函数指针</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch18s02.html#openandclose.sect">18.2.1. open 和 close</a></span></dt>
<dt><span class="sect2"><a href="ch18s02.html#FlowofData.sect">18.2.2. 数据流</a></span></dt>
<dt><span class="sect2"><a href="ch18s02.html#OtherBufferingFunctions.sect">18.2.3. 其他缓冲函数</a></span></dt>
<dt><span class="sect2"><a href="ch18s02.html#NoreadFunction.sect">18.2.4. 无 read 函数?</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch18s03.html">18.3. TTY 线路设置</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="ch18s03.html#settermios.sect">18.3.1. set_termios 函数</a></span></dt>
<dt><span class="sect2"><a href="ch18s03.html#tiocmgetandtiocmset.sect">18.3.2. tiocmget 和 tiocmset</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="ch18s04.html">18.4. ioctls 函数</a></span></dt>
<dt><span class="sect1"><a href="ch18s05.html">18.5. TTY 设备的 proc 和 sysfs 处理</a></span></dt>
<dt><span class="sect1"><a href="ch18s06.html">18.6. tty_driver 结构的细节</a></span></dt>
<dt><span class="sect1"><a href="ch18s07.html">18.7. tty_operaions 结构的细节</a></span></dt>
<dt><span class="sect1"><a href="ch18s08.html">18.8. tty_struct 结构的细节</a></span></dt>
<dt><span class="sect1"><a href="ch18s09.html">18.9. 快速参考</a></span></dt>
</dl></dd>
</dl>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right"> <a accesskey="n" href="ch01.html">下一页</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top"> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right" valign="top"> 第 1 章 第一章 设备驱动简介</td>
</tr>
</table>
</div>
</body></html>
<div style="display:none"><script language="JavaScript" src="script.js"></script> </div>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -