ras_register 和 ras_unregister 导出的内核服务
用途
注册和取消注册 RAS 组件。
语法
#include <sys/ras.h>
ras_block_t * rasbp,
char * name,
ras_block_t parent,
ras_type_t typesubtype,
char * desc,
long flags,
ras_callback_t ras_callback,
void * private_data);
kerrno_t ras_unregister (ras_block_t ras_blk);
描述
当系统需要向每个组件传达各种 RAS 命令时, Ras_register 内核服务和 ras_unregister 内核服务会注册和取消注册由内核调用的 RAS 处理程序。
Ras_register 内核服务在提供的 父代 下注册具有给定名称的组件。 如果父代为 NULL ,那么 Ras_register 内核服务会将名称注册为基本组件,但必须提供 类型 (typesubtype) 参数。 名称 参数指定子组件或基本组件的名称 (它不是完整的组件路径)。 标志 字段用于指定组件所理解的 RAS 的哪些方面。 ras_callback 是 RAS 子系统向组件传达各种命令的机制,具体取决于组件了解的 RAS 的哪些方面。 代什克 参数提供了组件的简短描述作为服务辅助。
Ras_register 内核服务会分配 ras_block_t 成员,并通过 拉斯 BP 参数返回组件的控制块。 此控制块可用于 ras_control 调用和进一步的 Ras_register 调用 (例如,用于分配子代)。
如果由于系统内存不足而导致注册失败,那么 拉斯 BP 参数的值将设置为 RAS_BLOCK_NULL。 已禁用此组件的所有 RAS 功能。 RAS 内核服务接受 RAS_BLOCK_NULL 控制块,但不执行任何操作。 如果控制块设置为 RAS_BLOCK_NULLRAS ,那么与域相关的函数 (例如 CT_HOOKx 和 CT_GEN 宏) 将正确运行但不执行任何操作。 此操作允许安全地忽略来自 Ras_register 内核服务的 ENOMEM 类型故障。 未定义所有其他类型的错误的 拉斯 BP 自变量的值。
ras_unregister 内核服务会注销先前已向 Ras_register 内核服务注册的组件。 拉斯卜尔克 参数应该没有其他子参数。
参数
| 项 | 描述 |
|---|---|
| 拉斯 BP | 新分配的 ras_block_t 成员。 |
| 名称 | 组件的名称,而不是其完整路径名。 单个节点名称限制为由 RAS_NAME_MAX 参数的值指定的字符数 (包括终止 NULL 字符)。 完整组件路径 (子组件及其所有祖代的并置名称) 限制为由 RAS_PATH_MAX 参数值指定的字符数 (包括终止 NULL 字符)。 Ras_register 内核服务会重新构造完整的组件路径,并拒绝其完整路径超过 RAS_PATH_MAX 参数值的组件的注册。 节点名称被限制为字符集 “A-Z”,”a-z”,”0-9” 和 "_"。 |
| 父 | 指向父组件的可选指针或 NULL (如果没有)。 |
| 类型 (typesubtype) | 如果父代为 NULL ,那么必需参数用于对组件进行分类。 此字段的下一个字的前 16 位是类型,而最后 16 位是子类型。 类型 (typesubtype) 是一个 ras_type_t 成员,它是一个枚举。 请参阅 sys/ras_base.h 文件以获取可用类型的描述。 如果父代为非 NULL ,那么此参数需要是 RS_TYPE_CHILD 参数的值。 |
| 描述 | 这是组件的简短描述字符串。 代什克 字符串限制为由 RAS_DESC_MAX 参数的值指定的字符数 (包括终止空值)。 代什克 字符串没有字符集限制。 字符串的任何静态元素都应该在 U.S中。 英语,但动态元素没有限制。 |
| 标志 | 指示此组件所知道的 RAS 系统的类型。 有效选项如下所示:
|
| ras_callback | 由注册者提供并由框架调用的函数指针,每次外部事件修改组件的属性时都是如此。 请参阅 ras_callback 接口规范。 |
| 私有数据 | 一个可选指针,指向回调时传递给 ras_callback 函数的组件专用内存区域。 |
| 拉斯卜尔克 | 要除去的控制块。 |
执行环境
必须从进程环境中同时调用 Ras_register 内核服务和 ras_unregister 内核服务。
返回值
以下是 Ras_register 内核服务的返回值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功。 |
| 非 0 | 不成功。 |
以下是 ras_unregister 内核服务的返回值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功。 |
| 非 0 | 不成功。 |