ras_register 和 ras_unregister 导出的内核服务

用途

注册和取消注册 RAS 组件。

语法

#include <sys/ras.h>
kerrno_t ras_register (
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_HOOKxCT_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 系统的类型。 有效选项如下所示:
  • RASF_TRACE_AWARE: 组件是组件跟踪感知组件。
  • RASF_ERROR_AWARE: 组件具有错误检查感知功能。
这些标志在 sys/ras.h 文件中定义。
ras_callback 由注册者提供并由框架调用的函数指针,每次外部事件修改组件的属性时都是如此。 请参阅 ras_callback 接口规范。
私有数据 一个可选指针,指向回调时传递给 ras_callback 函数的组件专用内存区域。
拉斯卜尔克 要除去的控制块。

执行环境

必须从进程环境中同时调用 Ras_register 内核服务和 ras_unregister 内核服务。

返回值

以下是 Ras_register 内核服务的返回值:

描述
重大安全事件数量 成功。
非 0 不成功。

以下是 ras_unregister 内核服务的返回值:

描述
重大安全事件数量 成功。
非 0 不成功。