fd 特殊文件

用途

提供对软盘设备驱动程序的访问。

描述

联邦 特殊文件提供对软盘驱动器中的软盘的块和字符 (原始) 访问权。 特殊文件名通常同时指定驱动器号和软盘的格式。 异常为 /dev/fd0/dev/fd1,它们分别指定软盘驱动器 0 和 1 ,而不指定它们的格式。

通用特殊文件 /dev/fd0/dev/fd1 自动确定驱动器 0 和驱动器 1 的软盘类型。 首先,设备驱动程序尝试使用该驱动器类型的缺省软盘的特征来读取软盘。 如果此操作失败,那么设备驱动程序将更改其特征并尝试进行读取,直到它成功读取软盘或尝试了设备驱动程序所支持的驱动器类型的所有可能性为止。

特殊文件名上的 R 前缀表示驱动器是作为原始设备而不是块设备访问的。 使用软盘执行原始 I/O 需要所有数据传输的长度都是软盘扇区长度的倍数。 此外,对原始软盘设备驱动程序进行的所有 寻求 子例程调用都必须产生文件偏移值,该文件偏移值是扇区大小的倍数。 对于受支持的软盘类型,扇区长度始终为 512 字节。
注: 软盘设备驱动程序不执行写至软盘的数据的读验证。

受支持的软盘类型

fd 特殊文件支持三个软盘驱动器: 1.2MB, 5.25-inch 软盘驱动器, 1.44MB 和 2.88MB, 3.5-inch 软盘驱动器。 所有 fd 特殊文件名 (通用特殊文件 /dev/fd0/dev/fd1/dev/rfd0/dev/rfd1除外) 都包含指示如何处理软盘的后缀。 这些特殊文件名的格式为前缀 XY ,其中前缀、XY 变量的含义如下:

描述
prefix 特殊文件类型。 可能的值为 联邦雷夫德,其中 R 指示对特殊文件的原始访问。
X 驱动器号指示灯。 01 的可能值分别指示驱动器 0 和 1。
Y 软盘格式指示符。 可能的值取决于正在使用的软盘的类型。 允许使用单个字符或后跟数字字符的十进制小数点。 可能的值为:
h
驱动器类型支持的最高密度
L
驱动器类型支持的最低密度
.9
每个磁道 9 个扇区 (所有三种驱动器类型)
.15
每个磁道 15 个扇区 (1.2MB,仅限 5.25-inch 驱动器)
.18
每个磁道 18 个扇区 (均为 3.5-inch 驱动器类型)
.36
每个磁道 36 个扇区 (2.88MB,仅限 3.5-inch 驱动器)

1.44MB, 3.5-inch 软盘特殊文件

有 10 个不同的特殊文件可用于 1.44MB, 3.5-inch 软盘驱动器。 对于此驱动器类型,假定的缺省软盘类型是双面, 80 柱面,每磁道 18 个扇区的软盘。

作为特殊文件名的后缀的 H.18 (例如,/dev/rfd0h/dev/fd0.18) 强制将软盘作为双侧, 80-柱面, 18 个扇区/磁道软盘处理。 作为特殊文件名的后缀的 .9 (例如,/dev/fd1l/dev/rfd0.9) 强制将软盘视为双侧, 80-9 , 9 扇区/磁道软盘。

2.88MB, 3.5-inch 软盘特殊文件

有 12 个不同的特殊文件可用于 2.88MB, 3.5-inch 软盘驱动器。 对于此驱动器类型,假定的缺省软盘类型是双面, 80-柱面, 36 个扇区/磁道软盘。

作为特殊文件名的后缀的 H.36 (例如,/dev/fd1h/dev/fd0.36) 强制将软盘视为双面, 80-柱面, 36 个扇区/磁道软盘。 作为特殊文件名的后缀的 .9 (例如,/dev/rfd0l/dev/fd1.9) 强制将软盘视为双侧, 80-9 , 9 扇区/磁道软盘。 .18 的后缀 (例如:/dev/fd1.18) 强制将软盘视为双面, 80-柱面, 18 个扇区-每磁道软盘。

1.2MB, 5.25-inch 软盘特殊文件

有 10 个不同的特殊文件可用于 1.2MB, 5.25-inch 软盘驱动器。 对于此驱动器类型,假定的缺省软盘类型是双面, 80 柱面,每磁道 15 个扇区的软盘。

作为特殊文件名的后缀的 H.15 (例如,/dev/rfd1h/dev/fd0.15) 强制将软盘作为双面, 80-柱面, 15 扇区/磁道软盘处理。 作为特殊文件名的后缀的 .9 (例如,/dev/fd0l/dev/rfd1.9) 强制将软盘视为双侧, 80-9 , 9 扇区/磁道软盘。
注: 无论软盘驱动器类型如何,作为特殊文件名后缀的 H 都会强制将软盘视为该驱动器类型所支持的最高容量软盘。 当 用作特殊文件名的后缀时,软盘将被视为驱动器类型所支持的最低容量软盘。

使用注意事项

将子例程与 联邦 特殊文件配合使用时,请考虑以下项:

描述
打开和关闭子例程 一次只有一个进程可以发出 子例程以获取对特定驱动器的访问权。 但是,由成功打开软盘驱动器的父进程创建的所有子进程都将继承打开的软盘驱动器。
读写子例程 无特殊注意事项。
ioctl 子例程 可能的 ioctl 操作及其描述如下所示:
IOCINFO
返回描述设备的 devinfo 结构 (在 /usr/include/sys/devinfo.h 文件中定义)。
FDIOCSINFO
将设备驱动程序软盘的特征设置为 fdinfo 结构中传递的值,如 /usr/include/sys/fd.h 文件中所定义。
FDIOCGINFO
获取设备驱动程序软盘特征并返回 fdinfo 结构中的值,如 /usr/include/sys/fd.h 文件中所定义。
FDIOCFORMAT
格式化软盘磁道。 使用以字节数组形式传递的数据对软盘进行格式化。 此阵列的长度是软盘上每个磁道的扇区数的 4 倍。 这样 4 的原因是必须为磁道上的每个扇区传递 4 个字节的数据。 在此顺序中, 4 个字节包含柱面号,侧号 (0 或 1) ,扇区号以及每个扇区的字节数。 对于赛道上的每个板块都必须重复这种模式。

格式化期间使用的软盘特性是设备驱动程序在接收格式化命令时所使用的值。 在发出 格式 命令之前,需要将这些特征设置为期望的值。 有三种方法可以执行此操作:

  • 使用其中一个特定于格式的特殊文件打开软盘驱动程序。 因此,驱动程序的软盘特征将是特殊文件所指示的软盘的那些特征。
  • 使用其中一个通用特殊文件来打开软盘驱动程序。 在此情况下,软盘特性将是该驱动程序的缺省特性。
  • 使用 FDIOCSINFO ioctl 操作显式设置特征。

对于格式化,仅当设置了 O_NDELAY 标志时才应打开软盘驱动程序。 否则,驱动程序将尝试确定驱动器中软盘的类型,从而导致打开操作失败。