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_

linux内核完全注释百度网盘,LINUX内核完全注释中.pdf相关推荐

  1. 百度网盘Linux版本能用吗,百度网盘Linux版使用体验效果

    以下是百度网盘Linux版使用体验效果分享,它可以在LinuxMint 19.1操作系统中运行. 前言 百度推出了重量级Linux软件,即百度网盘Linux版,这是一款百度推出的官方Linux客户端, ...

  2. 麒麟linux百度云,百度网盘 Linux 版发布,搭配优麒麟运行更完美!

    百度网盘 Linux 版发布,搭配优麒麟运行更完美! Linuxer 2019年6月21日 暂无评论 阅读 3,363 次 近日,百度官宣推出了百度网盘 Linux 版(在此之前已发布 Windows ...

  3. 优麒麟在linux下安装教程,在优麒麟Ubuntu Kylin系统中安装百度网盘Linux版.deb的方法...

    本文介绍在优麒麟Ubuntu Kylin操作系统中安装百度网盘Linux版.deb的方法,可用在优麒麟及 Ubuntu 19.04/18.04上,当前百度网盘Linux版的版本号是Linux V2.0 ...

  4. deb 中标麒麟_「图」百度网盘Linux版放出deb包客户端:新增支持Ubuntu 18.04 LTS

    6月中旬发布的百度网盘Linux版本中,首先适配了中标麒麟桌面操作系统软件(兆芯版)V7.0.而今天@Ubuntu官方推特最新微博表示,继发布Linux rpm包客户端之后,官方今天又推出了deb包客 ...

  5. 优麒麟这样的linux版本,百度网盘 Linux 版发布,搭配优麒麟运行更完美!

    近日,百度官宣推出了百度网盘 Linux 版(在此之前已发布 Windows.Android.iPhone.iPad.Windows Phone.Mac 等多个平台的版本),版本号为 Linux V2 ...

  6. 优麒麟linux安装教程,百度网盘Linux版安装指引:搭配优麒麟运行更完美

    原标题:百度网盘Linux版安装指引:搭配优麒麟运行更完美 感谢优麒麟的投递 近日,百度官宣推出了百度网盘 Linux 版(在此之前已发布 Windows.Android.iPhone.iPad.Wi ...

  7. linux装百度网盘不能运行,百度网盘Linux版不能登录成功,打开一直加载的解决方法...

    如果你安装了百度网盘Linux版,打开一直加载,一直不能登录成功,那请按照下面方法处理.如果你要在深度deepin系统中安装百度网盘,请到商店中去安装,已经上架百度网盘客户端了. 出现的状况及解决方法 ...

  8. 百度网盘 Linux 版正式发布:专为中标麒麟桌面操作系统打造

    介绍以及支持的平台 我相信大家肯定都多多少少的在 Windows 操作系统上用过百度网盘,那么就在昨天,百度网盘正式发布 Linux 版,版本号为 Linux V2.0.1,安装包大小为63.06M, ...

  9. ubuntu linux 安装包下载百度云盘,百度网盘Linux版放出deb包客户端:新增支持Ubuntu 18.04 LTS...

    6 月中旬发布的百度网盘 Linux 版本中,首先适配了中标麒麟桌面操作系统软件(兆芯版)V7.0.而今天 @Ubuntu 官方推特最新微博表示,继发布 Linux rpm 包客户端之后,官方今天又推 ...

最新文章

  1. 字符串子串去重之后的个数
  2. Spring Cloud Netflix Eureka 配置参数说明
  3. Android Permission(授权)大全
  4. 调试Release发布版程序的Crash错误
  5. 3 个相见恨晚的 Google Colaboratory 奇技淫巧!
  6. He Fei ,First ,Good Luck
  7. jshell_五分钟的JShell
  8. curl查看swift状态命令_前端应该会的23个linux常用命令
  9. Mark To Market - MTM
  10. 关于delphi指针(转)
  11. Android开发笔记(一百七十六)借助FileProvider发送彩信
  12. 存储容错:鱼与熊掌可以兼得
  13. MATLAB激活时填错Windows用户名怎么办?
  14. 大黄,不懂 HTTP 行嘛?
  15. timezone_name_from_abbr() 函数
  16. 【Google Paper】对比学习用于解决推荐系统长尾问题
  17. RGB565 与 RGB888的相互转换
  18. 微信小程序入门与实战之阅读列表与setData数据的绑定
  19. 4.2 Pollard p-1算法
  20. C/S结构是什么意思?有什么优点?

热门文章

  1. (6)最大奇数与最小偶数之差的绝对值
  2. 试讨论语法、语义、语用三个平面的区别与联系
  3. postman启动没反应_详细了解为什么Postman Chrome应用程序突然不能用了?怎么办?...
  4. centOS6.4 oracle11g RAC搭建
  5. 技嘉主板raid组建方法_【技嘉Z170评测】M.2硬盘也能组RAID 技嘉Z170X-UD5评测_技嘉 Z170X-UD5_主板评测-中关村在线...
  6. CSS进阶(P66-P86)
  7. 【原创】浙江杭州市清河坊历史文化景区宣传片
  8. Allegro172版本DFM规则之DFT Spacing
  9. 打开电脑计算机超级慢,电脑开机慢怎么办|电脑开机慢的处理方法
  10. 修改战网服务器,《使命召唤17》战网地区怎么改 战网地区修改方法分享