PCI字符设备创建设备节点

zy1306 2015-06-02 04:18:09
在pci驱动的probe里创建设备设备节点/dev/xxx,网上的方法一般都是class_create、device_create。这里有个问题,device_create会创建一个struct device,而probe函数的参数struct pci_dev里已经有一个struct device实例,这样就会有两个struct device实例。我想,要创建一个/dev/设备节点,应该是可以基于struct pci_dev的struct device创建的。求大神指点
...全文
339 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cambest 2015-06-08
  • 打赏
  • 举报
回复
你要先理解内核设备管理模型, 举例而言,所有的PCIE端点设备在内核呈现为一个device, 而你这个PCIE的音频设备对内核又是呈现为另外一个Device.
zy1306 2015-06-06
  • 打赏
  • 举报
回复
嗯,谢谢。这回去试试。 还有个问题。我通过pci_set_drvdata保存了私有数据。我想在/sys下创建调试用的sys结点。我用的方法就是先创建一个class,然后设置该class的属性,再调用device_create,这样就在/sys/class/xxx下创建了属性结点。后来我方法在该属性的store/read方法中,传递下来的参数struct device*是device_create创建的那个device,与pci驱动的probe函数参数的struct pci_dev*里的device不一样。有没有什么办法?我现在的做法是在probe里用dev_set_drvdata保存一下私有数据
nswcfd 2015-06-05
  • 打赏
  • 举报
回复
一定要在内核里面创建/dev节点吗? 如果一定要这么做,不需要device结构,只要知道了major:mino号,通过sys_mknod就能创建文件呀。(估计这不是楼主的本意)
zy1306 2015-06-04
  • 打赏
  • 举报
回复
引用 3 楼 nswcfd 的回复:
[quote=引用 2 楼 zy1306 的回复:] 通过device_create可以在/dev下创建设备文件,返回一个struct device *
哦,这个创建是sysfs层面的创建(device_add),实际创建的是一个目录,里面有uevent/dev/subsystem等属性, 然后通过hotplug机制(kobject_uevent),通知用户态的udevd,由后者根据udev规则,在/dev目录下创建对于的node。[/quote] 现在我有了struct pci_dev *,它里面有个struct device的实例,怎么通过它创建一个/dev下的设备结点
nswcfd 2015-06-03
  • 打赏
  • 举报
回复
引用 2 楼 zy1306 的回复:
通过device_create可以在/dev下创建设备文件,返回一个struct device *
哦,这个创建是sysfs层面的创建(device_add),实际创建的是一个目录,里面有uevent/dev/subsystem等属性, 然后通过hotplug机制(kobject_uevent),通知用户态的udevd,由后者根据udev规则,在/dev目录下创建对于的node。
zy1306 2015-06-02
  • 打赏
  • 举报
回复
通过device_create可以在/dev下创建设备文件,返回一个struct device *
nswcfd 2015-06-02
  • 打赏
  • 举报
回复
/dev/XXX设备节点(vfs相关)跟kernel里的device数据结构不是一个东西吧? pci等总线类的device,应该是通过probe接口完成初始化的,至少network driver都是这个模式。 估计pci框架内部间接的调用了相关的接口。
书名:《LabVIEW虚拟仪器从入门到测控应用130例》(电子工业出版社.李江全.任玲.廖结安.温宝琴) PDF格式扫描版,全书分为13章,共486页。2013年4月出版。 内容简介 本书从实际应用出发,通过130个典型实例系统地介绍了LabVIEW语言的程序设计方法及其测控应用技术,入门基础篇包括第0~10章,主要内容有LabVIEW基础、数值型数据、布尔型数据、字符串数据、数组数据、簇数据、数据类型转换、程序结构、变量与节点、图形显示和文件I/O;测控应用篇包括第11~13章,主要内容有PC通信与单片机测控、远程YO模块与PLC测控及LabVIEW数据采集。提供的实例由实例说明、设计任务和任务实现等部分组成,并有详细的操作步骤。 注:原书没有书签。为了方便阅读,本人在上传前添加了完整详细的书签。 目 录 入门基础篇 第0章 LabVIEW基础 0.1 LabVIEW概述 0.2 LabVIEW的编程环境 0.3 LabVIEW的基本概念 0.4 前面板对象设计基础 0.5 数据类型及其运算 0.6 VI调试方法 第1章 数值型数据 实例基础 数值型数据概述 实例1 数值输入与显示 实例2 时间标识输入与显示 实例3 滑动杆输出 实例4 旋钮与转盘输出 实例5 滚动条与刻度条 实例6 数值算术运算 实例7 数值常量 第2章 布尔型数据 实例基础 布尔型数据概述 实例8 开关与指示灯 实例9 数值比较 实例10 数值逻辑运算 实例11 真常量与假常量 实例12 确定按钮 实例13 停止按钮 实例14 单选按钮 实例15 按钮的快捷键设置 第3章 字符串数据 实例基础 字符串数据概述 实例16 计算字符串的长度 实例17 连接字符串 实例18 截取字符串 实例19 字符串大小写转换 实例20 替换子字符串 实例21 搜索替换字符串 实例22 格式化日期/时间字符串 实例23 格式化写入字符串 实例24 搜索/拆分字符串 实例25 选行并添加至字符串 实例26 匹配字符串 实例27 匹配真/假字符串 实例28 组合框 第4章 数组数据 实例基础 数组数据概述 实例29 初始化数组 实例30 创建数组 实例31 计算数组大小 实例32 求数组最大值与最小值 实例33 删除数组元素 实例34 数组索引 实例35 替换数组子集 实例36 提取子数组 实例37 数组插入 实例38 拆分一维数组 实例39 一维数组排序 实例40 搜索一维数组 实例41 二维数组转置 实例42 数组元素算术运算 第5章 簇数据 实例基础 簇数据概述 实例43 捆绑 实例44 解除捆绑 实例45 按名称捆绑 实例46 按名称解除捆绑 实例47 创建簇数组 实例48 索引与捆绑簇数组 第6章 数据类型转换 实例基础 数据类型转换概述 实例49 字符串至路径转换 实例50 路径至字符串转换 实例51 数值至字符串转换 实例52 字符串至数值转换 实例53 字节数组至字符串转换 实例54 字符串至字节数组转换 实例55 数组至簇转换 实例56 簇至数组转换 实例57 布尔数组至数值转换 实例58 数值至布尔数组转换 实例59 布尔值至0,1转换 第7章 程序结构 实例60 For循环结构 实例61 While循环结构 实例62 条件结构 实例63 层叠式顺序结构 实例64 平铺式顺序结构 实例65 定时循环结构 实例66 定时顺序结构 实例67 事件结构 实例68 禁用结构 第8章 变量与节点 实例69 局部变量 实例70 全局变量 实例71 公式节点 实例72 反馈节点 实例73 表达式节点 实例74 属性节点 实例75 子程序设计 实例76 菜单设计 第9章 图形显示 实例77 波形图表 实例78 波形图 实例79 XY图 实例80 强度图 第10章 文件I/O 实例基础 文件I/O概述 实例81 写入文本文件 实例82 读取文本文件 实例83 写入二进制文件 实例84 读取二进制文件 实例85 写入波形至文件 实例86 从文件读取波形 实例87 写入电子表格文件 实例88 读取电子表格文件 测控应用篇 第11章 PC通信与单片机测控 实例89 PCPC串口通信 实例90 PC双串口互通信 实例91 PC与单个单片机串口通信 实例92 PC与多个单片机串口通信 实例93 单片机模拟电压采集 实例94 单片机模拟电压输出 实例95 单片机开关信号输入 实例96 单片机开关信号输出 实例97 单片机温度测控 实例98 单台智能仪器温度检测 实例99 多台智能仪器温度检测 实例100 短信接收与发送 实例101 网络温度监测 第12章 远程I/O模块与PLC测控 实例102 远程I/O模块模拟电压采集 实例103 远程I/O模块模拟电压输出 实例104 远程I/O模块数字信号输入 实例105 远程I/O模块数字信号输出 实例106 远程I/O模块温度测控 实例107 三菱PLC模拟电压采集 实例108 三菱PLC模拟电压输出 实例109 三菱PLC开关信号输入 实例110 三菱PLC开关信号输出 实例111 三菱PLC温度测控 实例112 西门子PLC模拟电压采集 实例113 西门子PLC模拟电压输出 实例114 西门子PLC开关信号输入 实例115 西门子PLC开关信号输出 实例116 西门子PLC温度测控 第13章 LabVIEW数据采集 实例117 PCI-6023E数据采集卡模拟电压采集 实例118 PCI-6023E数据采集卡数字信号输入 实例119 PCI-6023E数据采集卡数字信号输出 实例120 PCI-6023E数据采集卡温度测控 实例121 PCI-1710HG数据采集卡模拟电压采集 实例122 PCI-1710HG数据采集卡模拟电压输出 实例123 PCI-1710HG数据采集卡数字信号输入 实例124 PCI-1710HG数据采集卡数字信号输出 实例125 PCI-1710HG数据采集卡脉冲信号输出 实例126 PCI-1710HG数据采集卡温度测控 实例127 声卡的双声道模拟输入 实例128 声卡的双声道模拟输出 实例129 声音信号的采集与存储 实例130 声音信号的功率谱分析 参考文献
linux内核编程 目 录 雷蒙序 简介 Linux文档工程小组“公告” 译者序 第一部分 Linux内核 前言 第1章 硬件基础与软件基础 6 1.1 硬件基础 6 1.1.1 CPU 7 1.1.2 存储器 8 1.1.3 总线 8 1.1.4 控制器和外设 8 1.1.5 地址空间 9 1.1.6 时钟 9 1.2 软件基础 9 1.2.1 计算机语言 9 1.2.2 什么是操作系统 11 1.2.3 内核数据结构 13 第2章 内存管理 15 2.1 虚拟内存抽象模型 15 2.1.1 请求调页 17 2.1.2 交换 17 2.1.3 共享虚拟内存 18 2.1.4 物理寻址模式和虚拟寻址模式 18 2.1.5 访问控制 18 2.2 高速缓存 19 2.3 Linux页表 20 2.4 页分配和回收 21 2.4.1 页分配 22 2.4.2 页回收 22 2.5 内存映射 22 2.6 请求调页 23 2.7 Linux页缓存 24 2.8 页换出和淘汰 25 2.8.1 减少缓冲区和页缓存大小 25 2.8.2 换出System V共享内存页 26 2.8.3 换出和淘汰页 27 2.9 交换缓存 27 2.10 页换入 28 第3章 进程 29 3.1 Linux进程 29 3.2 标识符 31 3.3 调度 32 3.4 文件 34 3.5 虚拟内存 35 3.6 创建进程 36 3.7 时间和定时器 37 3.8 执行程序 38 3.8.1 ELF 39 3.8.2 脚本文件 40 第4章 进程间通信机制 41 4.1 信号机制 41 4.2 管道 42 4.3 套接字 44 4.3.1 System V的进程间通信机制 44 4.3.2 消息队列 44 4.3.3 信号量 45 4.3.4 共享存储区 47 第5章 PCI 49 5.1 PCI的地址空间 49 5.2 PCI配置头 50 5.3 PCI的I/O和存储地址空间 51 5.4 PCI-ISA桥 51 5.5 PCI-PCI 桥 51 5.5.1 PCI-PCI桥:PCI I/O和存储地址 空间的窗口 51 5.5.2 PCI-PCI桥:PCI配置周期和PCI 总线编号 52 5.6 Linux PCI初始化 53 5.6.1 Linux内核PCI数据结构 53 5.6.2 PCI设备驱动程序 53 5.6.3 PCI的BIOS函数 56 5.6.4 PCI修正过程 57 第6章 中断处理与设备驱动程序 60 6.1 中断与中断处理 60 6.1.1 可编程中断控制器 61 6.1.2 初始化中断处理数据结构 61 6.1.3 中断处理 62 6.2 设备驱动程序 63 6.2.1 测试与中断 64 6.2.2 直接存储器访问(DMA) 65 6.2.3 存储器 66 6.2.4 设备驱动程序与内核的接口 66 6.2.5 硬盘 69 6.2.6 网络设备 74 第7章 文件系统 77 7.1 第二个扩展文件系统EXT2 78 7.1.1 EXT2系统的inode节点 79 7.1.2 EXT2系统的超级块 80 7.1.3 EXT2系统的组描述符 80 7.1.4 EXT2系统的目录 81 7.1.5 在EXT2文件系统中查找文件 81 7.1.6 在EXT2文件系统中改变文件 的大小 82 7.2 虚拟文件系统 83 7.2.1 VFS文件系统的超级块 84 7.2.2 VFS文件系统的inode节点 84 7.2.3 注册文件系统 85 7.2.4 装配文件系统 85 7.2.5 在虚拟文件系统中查找文件 87 7.2.6 卸载文件系统 87 7.2.7 VFS文件系统的inode缓存 87 7.2.8 目录缓存 88 7.3 缓冲区缓存 88 7.3.1 bdflush内核守护进程 90 7.3.2 update进程 90 7.4 /proc文件系统 91 7.5 特殊设备文件 91 第8章 网络 92 8.1 TCP/IP网络概述 92 8.2 Linux中的TCP/IP网络层次结构 95 8.3 BSD套接字接口 96 8.4 INET的套接字层 97 8.4.1 创建BSD套接字 98 8.4.2 为INET BSD Socket绑定地址 99 8.4.3 建立INET BSD Socket连接 99 8.4.4 INET BSD Socket侦听 100 8.4.5 接受连接请求 100 8.5 IP层 100 8.5.1 套接字缓冲区 100 8.5.2 接收IP报文 101 8.5.3 发送IP报文 102 8.5.4 数据分片 102 8.6 地址解析协议 103 8.7 IP路由 104 第9章 内核机制与模块 107 9.1 内核机制 107 9.1.1 Bottom Half控制 107 9.1.2 任务队列 108 9.1.3 定时器 109 9.1.4 等待队列 110 9.1.5 自旋锁 110 9.1.6 信号量 110 9.2 模块 111 9.2.1 模块载入 112 9.2.2 模块卸载 113 第10章 处理器 115 10.1 X86 115 10.2 ARM 115 10.3 Alpha AXP处理器 115 第11章 Linux内核源代码 117 11.1 怎样得到Linux内核源码 117 11.2 内核源码的编排 117 11.3 从何处看起 118 第12章 Linux数据结构 120 附录A 有用的Web和FTP站点 138 附录B 词汇表 139 第二部分 Linux内核模块编程指南 致谢 前言 第1章 Hello, World 145 1.1 内核模块的Makefiles文件 146 1.2 多重文件内核模块 147 第2章 字符设备文件 149 第3章 /proc文件系统 158 第4章 把/proc用于输入 162 第5章 把设备文件用于输入 170 第6章 启动参数 182 第7章 系统调用 185 第8章 阻塞处理 190 第9章 替换printk 199 第10章 任务调度 202 第11章 中断处理程序 207 第12章 对称多处理 211 第13章 常见错误 212 附录A 2.0和2.2之间的差异 213 附录B 其他资源 214 附录C 给出你的评价 215 第三部分 Linux程序员指南 第1章 Linux操作系统 219 第2章 Linux内核 220 第3章 Linux libc包 221 第4章 系统调用 222 第5章 “瑞士军刀”:ioctl 223 第6章 Linux进程间通信 224 6.1 介绍 224 6.2 半双工Unix管道 224 6.2.1 基本概念 224 6.2.2 用C语言创建管道 225 6.2.3 简便方法 229 6.2.4 管道的原子操作 233 6.2.5 关于半双工管道需要注意的几个 问题 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 创建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞动作 236 6.3.5 SIGPIPE信号 237 6.4 系统V IPC 237 6.4.1 基本概念 237 6.4.2 消息队列 239 6.4.3 信号量 251 6.4.4 semtool:交互式信号量操作 程序 260 6.4.5 共享内存 267 第7章 声音编程 274 7.1 内部扬声器编程 274 7.2 声卡编程 274 第8章 字符单元图形 276 8.1 libc中的I/O函数 277 8.1.1 格式化输出 277 8.1.2 格式化输入 278 8.2 termcap库 278 8.2.1 前言 278 8.2.2 获得终端描述 279 8.2.3 查看终端描述 279 8.2.4 termcap权能 280 8.3 Ncurses简介 280 8.4 初始化 282 8.5 窗口 283 8.6 输出 284 8.6.1 格式化输出 285 8.6.2 插入字符/行 286 8.6.3 删除字符/行 286 8.6.4 方框和直线 287 8.6.5 背景字符 287 8.7 输入 288 8.8 选项 289 8.8.1 输出选项 289 8.8.2 输入选项 290 8.8.3 终端属性 291 8.8.4 使用选项 291 8.9 更新终端 292 8.10 视频属性与颜色 293 8.11 光标和屏幕坐标 294 8.12 滚动 294 8.13 小键盘 295 8.14 软标签 295 8.15 杂项 295 8.16 低级访问 296 8.17 屏幕转储 296 8.18 Termcap模拟 296 8.19 Terminfo函数 296 8.20 调试函数 297 8.21 Terminfo权能 297 8.21.1 布尔型权能 297 8.21.2 数值型权能 298 8.21.3 字符串型权能 299 8.22 [N]Curses函数概述 306 第9章 I/O端口编程 307 9.1 鼠标编程 307 9.2 调制解调器编程 308 9.3 打印机编程 308 9.4 游戏杆编程 308 第10章 把应用程序移植到Linux上 309 10.1 介绍 309 10.2 信号处理 309 10.2.1 SVR4、BSD和POSIX.1下 的信号 310 10.2.2 Linux信号选项 310 10.2.3 Linux下的信号 310 10.2.4 Linux支持的信号 311 10.3 终端I/O 311 10.4 进程信息和控制 311 10.4.1 kvm过程 312 10.4.2 ptrace和/proc文件系统 312 10.4.3 Linux下的进程控制 312 10.5 可移植条件编译 313 10.6 补充说明 314 附录 以字母顺序排列的系统调用 315 第四部分 Linux内核概念系统结构 摘要 323 前言 324 第1章 系统结构 325 1.1 系统概述 325 1.2 内核的目标 325 1.3 内核结构的概述 325 1.4 支持多个开发人员 327 1.5 系统数据结构 328 1.5.1 任务列表 328 1.5.2 内存映射 328 1.5.3 索引节点 328 1.5.4 数据连接 329 第2章 子系统的系统结构 330 2.1 进程调度程序系统结构 330 2.1.1 目标 330 2.1.2 模块 330 2.1.3 数据表达 331 2.1.4 依赖性、数据流和控制流 331 2.2 内存管理程序系统结构 331 2.2.1 目标 331 2.2.2 模块 331 2.2.3 数据表示 331 2.2.4 数据流、控制流和依赖性 332 2.3 虚拟文件系统系统结构 333 2.3.1 目标 333 2.3.2 模块 333 2.3.3 数据表示 333 2.3.4 数据流、控制流和依赖性 334 2.4 网络接口系统结构 334 2.4.1 目标 334 2.4.2 模块 334 2.4.3 数据表示 335 2.4.4 数据流、控制流和依赖性 335 2.5 进程间通信系统结构 335 第3章 结论 336 附录A 术语定义 337 附录B 参考文献 338 第五部分 Linux内核具体系统结构 摘要 341 第1章 前言 342 1.1 目标 342 1.2 Linux介绍 342 1.3 软件系统结构的背景知识 342 1.4 方法与途径 343 1.5 适用本书的读者 344 1.6 本部分的章节安排 344 第2章 系统结构 345 第3章 子系统结构 346 3.1 进程调度程序 346 3.1.1 目标 346 3.1.2 外部接口 346 3.1.3 子系统描述 346 3.1.4 数据结构 347 3.1.5 子系统结构 348 3.1.6 子系统依赖性 348 3.2 内存管理程序 348 3.2.1 目标 348 3.2.2 外部接口 349 3.2.3 子系统描述 349 3.2.4 数据结构 350 3.2.5 子系统结构 350 3.2.6 子系统依赖性 351 3.3 虚拟文件系统 352 3.3.1 目标 352 3.3.2 外部接口 352 3.3.3 子系统描述 353 3.3.4 设备驱动程序 353 3.3.5 逻辑文件系统 354 3.3.6 模块 354 3.3.7 数据结构 355 3.3.8 子系统结构 355 3.3.9 子系统依赖性 355 3.4 进程间通信 355 3.4.1 目标 355 3.4.2 外部接口 357 3.4.3 子系统描述 357 3.4.4 数据结构 358 3.4.5 子系统结构 359 3.4.6 子系统依赖性 359 3.5 网络接口 360 3.5.1 目标 360 3.5.2 外部接口 361 3.5.3 子系统描述 361 3.5.4 数据结构 362 3.5.5 子系统结构 363 3.5.6 子系统依赖性 363 第4章 结论 365 附录A 术语定义 366 附录B 参考文献 368 第六部分 附 录 附录A Linux文档工程拷贝许可证 372 附录B GNU通用公共许可证 374
目 录 雷蒙序 简介 Linux文档工程小组“公告” 译者序 第一部分 Linux内核 前言 第1章 硬件基础与软件基础 6 1.1 硬件基础 6 1.1.1 CPU 7 1.1.2 存储器 8 1.1.3 总线 8 1.1.4 控制器和外设 8 1.1.5 地址空间 9 1.1.6 时钟 9 1.2 软件基础 9 1.2.1 计算机语言 9 1.2.2 什么是操作系统 11 1.2.3 内核数据结构 13 第2章 内存管理 15 2.1 虚拟内存抽象模型 15 2.1.1 请求调页 17 2.1.2 交换 17 2.1.3 共享虚拟内存 18 2.1.4 物理寻址模式和虚拟寻址模式 18 2.1.5 访问控制 18 2.2 高速缓存 19 2.3 Linux页表 20 2.4 页分配和回收 21 2.4.1 页分配 22 2.4.2 页回收 22 2.5 内存映射 22 2.6 请求调页 23 2.7 Linux页缓存 24 2.8 页换出和淘汰 25 2.8.1 减少缓冲区和页缓存大小 25 2.8.2 换出System V共享内存页 26 2.8.3 换出和淘汰页 27 2.9 交换缓存 27 2.10 页换入 28 第3章 进程 29 3.1 Linux进程 29 3.2 标识符 31 3.3 调度 32 3.4 文件 34 3.5 虚拟内存 35 3.6 创建进程 36 3.7 时间和定时器 37 3.8 执行程序 38 3.8.1 ELF 39 3.8.2 脚本文件 40 第4章 进程间通信机制 41 4.1 信号机制 41 4.2 管道 42 4.3 套接字 44 4.3.1 System V的进程间通信机制 44 4.3.2 消息队列 44 4.3.3 信号量 45 4.3.4 共享存储区 47 第5章 PCI 49 5.1 PCI的地址空间 49 5.2 PCI配置头 50 5.3 PCI的I/O和存储地址空间 51 5.4 PCI-ISA桥 51 5.5 PCI-PCI 桥 51 5.5.1 PCI-PCI桥:PCI I/O和存储地址 空间的窗口 51 5.5.2 PCI-PCI桥:PCI配置周期和PCI 总线编号 52 5.6 Linux PCI初始化 53 5.6.1 Linux内核PCI数据结构 53 5.6.2 PCI设备驱动程序 53 5.6.3 PCI的BIOS函数 56 5.6.4 PCI修正过程 57 第6章 中断处理与设备驱动程序 60 6.1 中断与中断处理 60 6.1.1 可编程中断控制器 61 6.1.2 初始化中断处理数据结构 61 6.1.3 中断处理 62 6.2 设备驱动程序 63 6.2.1 测试与中断 64 6.2.2 直接存储器访问(DMA) 65 6.2.3 存储器 66 6.2.4 设备驱动程序与内核的接口 66 6.2.5 硬盘 69 6.2.6 网络设备 74 第7章 文件系统 77 7.1 第二个扩展文件系统EXT2 78 7.1.1 EXT2系统的inode节点 79 7.1.2 EXT2系统的超级块 80 7.1.3 EXT2系统的组描述符 80 7.1.4 EXT2系统的目录 81 7.1.5 在EXT2文件系统中查找文件 81 7.1.6 在EXT2文件系统中改变文件 的大小 82 7.2 虚拟文件系统 83 7.2.1 VFS文件系统的超级块 84 7.2.2 VFS文件系统的inode节点 84 7.2.3 注册文件系统 85 7.2.4 装配文件系统 85 7.2.5 在虚拟文件系统中查找文件 87 7.2.6 卸载文件系统 87 7.2.7 VFS文件系统的inode缓存 87 7.2.8 目录缓存 88 7.3 缓冲区缓存 88 7.3.1 bdflush内核守护进程 90 7.3.2 update进程 90 7.4 /proc文件系统 91 7.5 特殊设备文件 91 第8章 网络 92 8.1 TCP/IP网络概述 92 8.2 Linux中的TCP/IP网络层次结构 95 8.3 BSD套接字接口 96 8.4 INET的套接字层 97 8.4.
本PDF电子书包含上下两册,共1576页,带目录,高清非扫描版本。 作者: 毛德操 胡希明 丛书名: Linux内核源代码情景分析 出版社:浙江大学出版社 目录 第1章 预备知识 1.1 Linux内核简介. 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的汇编语言代码 第2章 存储管理 2.1 Linux内存管理的基本框架 2.2 地址映射的全过程 2.3 几个重要的数据结构和函数 2.4 越界访问 2.5 用户堆栈的扩展 2.6 物理页面的使用和周转 2.7 物理页面的分配 2.8 页面的定期换出 2.9 页面的换入 2.10 内核缓冲区的管理 2.11 外部设备存储空间的地址映射 2.12 系统调用brk() 2.13 系统调用mmap() 第3章 中断、异常和系统调用 3.1 X86 CPU对中断的硬件支持 3.2 中断向量表IDT的初始化 3.3 中断请求队列的初始化 3.4 中断的响应和服务 3.5 软中断与Bottom Half 3.6 页面异常的进入和返回 3.7 时钟中断 3.8 系统调用 3.9 系统调用号与跳转表 第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性调度 4.8 系统调用nanosleep()和pause() 4.9 内核中的互斥操作 第5章 文件系统 5.1 概述 5.2 从路径名到目标节点 5.3 访问权限与文件安全性 5.4 文件系统的安装和拆卸 5.5 文件的打开与关闭 5.6 文件的写与读 5.7 其他文件操作 5.8 特殊文件系统/proc 第6章 传统的Unix进程间通信 6.1 概述 6.2 管道和系统调用pipe() 6.3 命名管道 6.4 信号 6.5 系统调用ptrace()和进程跟踪 6.6 报文传递 6.7 共享内存 6.8 信号量 第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 7.6函数sys—connect()——请求连接 7.7报文的接收与发送 7.8插口的关闭 7.9其他 第8章设备驱动 8.1概述 8.2系统调用mknod() 8.3可安装模块 8.4PCI总线 8.5块设备的驱动 8.6字符设备驱动概述 8.7终端设备与汉字信息处理 8.8控制台的驱动 8.9通用串行外部总线USB 8.10系统调用select()以及异步输入/输出 8.11设备文件系统devfs 第9章多处理器SMP系统结构 9.1概述 9.2SMP结构中的互斥问题 9.3高速缓存与内存的一致性 9.4SMP结构中的中断机制 9.5SMP结构中的进程调度 9.6SMP系统的引导 第10章系统引导和初始化 10.1系统引导过程概述 10.2系统初始化(第一阶段) 10.3系统初始化(第二阶段) 10.4系统初始化(第三阶段) 10.5系统的关闭和重引导

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧