- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
LINUX内核完全注释中
6.8 floppy.c 程序
122 }
123 printk (\010\010\010\010\010done \n);
124 ROOT_DEV=0x0101; // 修改 ROOT_DEV使其指向虚拟盘 ramdisk。
125 }
126
6.8 floppy.c 程序
6.8.1 功能描述
本程序是软盘控制器驱动程序。与其它块设备驱动程序一样,该程序也以请求项操作函数
do_fd_request()为主,执行对软盘上数据的读写操作。
考虑到软盘驱动器在不工作时马达通常不转,所以在实际能对驱动器中的软盘进行读写操作之前,
我们需要等待马达启动并达到正常的运行速度。与计算机的运行速度相比,这段时间较长,通常需要 0.5
秒左右的时间。
另外,当对一个磁盘的读写操作完毕,我们也需要让驱动器停止转动,以减少对磁盘表面的摩搽。
但我们也不能在对磁盘操作完后就立刻让它停止转动。因为,可能马上又需要对其进行读写操作。因此,
在一个驱动器没有操作后还是需要让驱动器空转一段时间,以等待可能到来的读写操作,若驱动器在一
个较长时间内都没有操作,则程序让它停止转动。这段维持旋转的时间可设定在大约 3 秒左右。
当一个磁盘的读写操作发生错误,或某些其它情况导致一个驱动器的马达没有被关闭。此时我们也
需要让系统在一定时间之后自动将其关闭。Linus 在程序中把这个延时值设定在 100 秒。
由此可见,在对软盘驱动器进行操作时会用到很多延时(定时)操作。因此在该驱动程序中涉及较
多的定时处理函数。还有几个与定时处理关系比较密切的函数被放在了kernel/sched.c 中(行201-262 )。
这是软盘驱动程序与硬盘驱动程序之间的最大区别,也是软盘驱动程序比硬盘驱动程序复杂的原因。
虽然本程序比较复杂,但对软盘读写操作的工作原理却与其它块设备是一样的。本程序也是使用请
求项和请求项链表结构来处理所有对软盘的读写操作。因此请求项操作函数 do_fd_request()仍然是本程
序中的重要函数之一。在阅读时应该以该函数为主线展开。另外,软盘控制器的使用比较复杂,其中涉
及到很多控制器的执行状态和标志。因此在阅读时,还需要频繁地参考程序后的有关说明以及本程序的
头文件 include/linux/fdreg.h 。该文件定义了所有软盘控制器参数常量,并说明了这些常量的含义。
6.8.2 代码注释
程序 6-6 linux/kernel/blk_drv/floppy.c
1 /*
2 * linux/kernel/floppy.c
3 *
4 * (C) 1991 Linus Torvalds
5 */
6
7 /*
8 * 02.12.91 - Changed to static variables to indicate need for reset
9 * and recalibrate. This makes some things easier (output_byte reset
10 * checking etc), and means less interrupt jumping in case of errors,
11 * so the code is hopefully easier to understand.
12 */
/*
- 212 -
6.8 floppy.c 程序
* 02.12.91 - 修改成静态变量,以适应复位和重新校正操作。这使得某些事情
* 做起来较为方便(output_by
您可能关注的文档
最近下载
- 翼状胬肉的护理查房-PPT.ppt
- 2022年应急管理工作应知应会知识竞赛题库(含答案).pdf
- 全民微信时代增进了VS减弱了人与人之间的交流辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx
- 超星网课尔雅《人人学点营销学》尔雅答案2022章节测试答案.docx
- 2019CSP-J NOIP普及组初赛C++试卷.pdf VIP
- 2024年《城镇燃气管理条例题库》考试题库(含答案).pdf VIP
- 必威体育精装版浙教版八年级上册劳动技术 项目三 任务二《打蛋器的制作》课件(课件).pptx
- 纪律意识方面存在不足及措施4篇.pdf
- 消防安全教育PPT课件.pptx VIP
- 《新中国成立75周年》全文课件.ppt VIP
文档评论(0)