omd 特殊文件

用途

提供对读/写光学设备驱动程序的访问权。

描述

奥姆德 特殊文件提供对读/写光盘驱动器中磁盘的块和字符 (原始) 访问。

特殊文件名上的 R 前缀表示驱动器是作为原始设备而不是块设备访问的。 使用光盘执行原始 I/O 需要所有数据传输的长度都是光盘逻辑块长度的倍数。 此外,对原始读/写光学设备驱动程序执行的所有 寻求 子例程都必须将文件偏移量指针设置为指定逻辑块大小的倍数值。

scdisk SCSI 设备驱动程序提供有关实现细节的更多信息。

读/写光学设备驱动程序

在读/写光盘驱动器中使用的读/写光盘是为大量数据提供存储器的介质。 通过特殊文件 /dev/omd0/dev/omd1, ... /dev/omdn实现对光盘的块访问。 通过特殊文件 /dev/romd0/dev/romd1, ... /dev/romdn提供字符访问。

当已安装的读/写光盘文件系统的读/写光盘从驱动器中弹出时,光盘上的文件将无法再访问。 在再次尝试访问这些文件之前,请对从读/写光盘安装的文件系统执行下列步骤:

  1. 停止在文件系统上打开文件的进程。
  2. 移动文件系统上具有当前目录的进程。
  3. 卸装该文件系统。
  4. 在重新插入介质后重新安装文件系统。

如果这些操作不起作用,请对文件系统执行强制卸装; 然后,重新安装文件系统。

注: 重新插入读/写光盘将不会解决该问题。 停止所有进程 (图形进程和 ASCII 进程) ,然后强制卸装文件系统。 然后重新安装文件系统。 执行此过程后,您可以重新启动任何 命令。

与设备相关的子例程

大多数读/写光学操作是使用 关闭 子例程实现的。 但是,为了某些目的,需要使用 奥佩克斯 (扩展) 子例程。

openx 子例程 (openx Subroutine)

支持 奥佩克斯 子例程以向 序列提供其他函数。 执行需要相应的权限。 如果试图在没有适当授权的情况下运行 openx 子程序,该子程序将返回 -1 ,并将 errno 全局变量设置为 EPERM

Ioctl 子例程

ioctl 子例程 IOCINFO 操作返回 /usr/include/sys/devinfo.h 文件中定义的 devinfo 结构。 IOCINFO 操作是对所有使用 ioctl 子例程的设备驱动程序定义的唯一操作。 其他 ioctl 操作是特定于设备驱动程序类型的。 对于 IOCINFO 操作,不需要诊断方式。

错误条件数

使用 奥姆德 特殊文件时, ioctl 子例程的可能 错误号 值包括:

描述
EACCES 指示下列其中一种情况:
  • 尝试打开当前以 "诊断" 或 "互斥访问" 方式打开的设备。
  • 已尝试在已打开的设备上打开诊断方式会话。
  • 用户在处于诊断方式时尝试了除 ioctl 关闭 子例程之外的子例程。
  • 在未处于诊断方式的设备上尝试了 DKIOCMD 操作。
  • 在未处于 "互斥访问" 方式的设备上尝试了 DKFORMAT 操作。
EBUSY 指示下列其中一种情况:
  • 目标设备由另一个发起方保留。
  • 已尝试在已打开的设备上以 "互斥访问" 方式打开会话。
EFAULT 指示非法用户地址。
EFORMAT 指示目标设备具有未格式化的介质或格式不兼容的介质。
EINVAL 指示下列其中一种情况:
  • 子例程提供了 nbyte 参数,该参数不是块大小的偶数倍。
  • 对于 DKIOWRSEDKiordse ioctl 子例程操作,大于 255 个字节的检测数据缓冲区长度是无效的。
  • 对于 DKiordseDKIOWRSEDKIOCMD ioctl 子例程操作,数据缓冲区长度超过了 开发信息 结构中定义的最大值。
  • 尝试了不受支持的 ioctl 子例程操作。
  • 已尝试配置仍处于打开状态的设备。
  • 给出了非法的配置命令。
  • 已向不支持可移动介质的设备发送 DKPMR (阻止介质除去) , DKAMR (允许介质除去) 或 DKEJECT (弹出介质) 命令。
  • 已将 DKEJECT (弹出介质) 命令发送到当前在驱动器中锁定了其介质的设备。
EIO 指示下列其中一种情况:
  • 找不到目标设备或目标设备未响应。
  • 目标设备已指示未恢复的硬件错误。
EMEDIA 指示下列其中一种情况:
  • 目标设备已指示未恢复的介质错误。
  • 媒体已更改。
电子文件 指示对已具有允许的最大打开设备数的适配器尝试了 操作。
ENODEV 指示下列其中一种情况:
  • 尝试了访问未定义的设备。
  • 已尝试关闭未定义的设备。
ENOTREADY 指示驱动器中没有任何读/写光盘。
ENXIO 指示下列其中一种情况:
  • ioctl 子例程提供了无效参数。
  • 已尝试在物理卷结束之后执行 操作。
EPERM 指示尝试的子例程需要适当的权限。
ESTALE 指示已弹出只读光盘 (未由用户先关闭) ,然后重新插入或替换为第二个光盘。
ETIMEDOUT 指示 I/O 操作已超过给定的计时器值。
EWRPROTET 指示下列其中一种情况:
  • 在只读介质上尝试了请求 读/写 方式的 操作。
  • 已尝试对只读介质执行 操作。

文件

描述
/dev/romd0/dev/romd1.../dev/romdn 提供对读/写光学设备驱动程序的字符访问。
/dev/omd0/dev/omd1.../dev/omdn 提供对读/写光学设备驱动程序的块访问。