nvram 特殊文件

用途

提供对特定于平台的非易失性 RAM 的访问,用于系统引导,配置和致命错误信息。 此访问是通过机器 I/O 设备驱动程序实现的。

描述

/dev/nvram 字符特殊文件提供对 机器设备驱动程序 的访问,以访问或修改特定于机器的非易失性 RAM。 要打开 恩夫拉姆 特殊文件,需要相应的特权。 特定于机器的配置程序使用 恩夫拉姆 特殊文件,以使用机器上提供的非易失性 RAM 或 ROM 来存储或检索配置和引导信息。 恩夫拉姆 特殊文件支持 "打开" , "关闭" , "读取" 和 "ioctl" 操作。

注: 应用程序不应该访问非易失性 RAM。 由于非易失性 RAM 是特定于平台的,因此对其存在和实现的任何依赖都会对使用应用程序施加可移植性约束。 此外,访问非易失性 RAM 还可能导致系统启动和配置信息丢失。 这种损失可能需要系统管理或维护任务工作来重建或恢复。

使用注意事项

将子例程与 恩夫拉姆 特殊文件配合使用时,请考虑以下项。

打开和关闭子例程

机器设备驱动程序将 恩夫拉姆 特殊文件作为多路复用字符特殊文件来支持。

可以使用特殊通道名称 来读取作为引导记录的一部分存储的基本定制信息。 必须打开通道名称为 base 的 恩夫拉姆 特殊文件,如下所示:

/dev/nvram/base

特殊文件 /dev/nvram/base 只能打开一次。 当它在引导后首次关闭时,包含基本定制信息的缓冲区是空闲的。 后续打开操作将返回 ENOENT 错误代码。

读,写和 lseek 子例程

在成功打开通道名称为 恩夫拉姆 特殊文件之后,支持 子例程。 操作在与基本定制信息相关联的位置开始传输数据,并且偏移量由与子例程上正在使用的文件指针相关联的偏移量值指定。

子例程上,如果在达到传输计数之前到达数据区的末尾,那么返回在到达数据区的末尾之前读取的字节数。 如果读取操作在数据区结束后开始,那么驱动程序将返回错误 ENXIO

寻求 子例程可用于更改与基本定制信息相关的数据区中的起始读偏移量。 子例程在此通道上不受支持,并且会导致错误返回 ENODEV

ioctl 子例程

在成功打开 /dev/nvram 特殊文件后,可以向机器设备驱动程序发出 ioctl 命令。 IOCINFO 参数返回调用者的 开发信息 结构中的机器设备驱动程序信息,如 阿尔格 参数指向 ioctl 子例程的那样。 此结构在 /usr/include/sys/devinfo.h 文件中定义。 此设备驱动程序的设备类型为 DD_PSEU

错误代码

使用 恩夫拉姆 特殊文件名访问机器设备驱动程序时,可能返回以下错误情况:

描述
EFAULT ioctl 子例程调用中,调用者指定的缓冲区无效。
ENXIO 已尝试在通道指定的数据区结束后执行读操作。
ENODEV 尝试了写操作。
ENOMEM 已使用用户提供的缓冲区发出请求,但该缓冲区对于所请求的数据而言太小。

安全性

尝试打开 恩夫拉姆 特殊文件的程序需要相应的特权。

文件

描述
/dev/nvram/base 允许对作为引导记录一部分存储的基本定制信息进行读访问。