register_HA_handler 内核服务
用途
向内核注册高可用性事件处理程序。
语法
#include <sys/high_avail.h> ha_handler_ext_t * ha_handler;
参数
| 项 | 描述 |
|---|---|
| ha_handler | 指定指向 ha_handler_ext_t 类型的结构的指针,如usr/include/sys/high_avail.h中所定义。 |
描述
register_HA_handler 内核向那些需要知道高可用性事件 (例如,处理器释放) 的内核扩展注册 高可用性事件处理程序 (HAEH) 函数。 当由于某些硬件故障而启动高可用性事件时,内核将在基本级别调用此函数。
| 字段 | 描述 |
|---|---|
| 有趣 | 包含指向高可用性事件处理程序函数的指针。 |
| 数据 (_S) | 包含用户定义的值,该值将在调用函数时由内核作为自变量传递。 |
| _名称 | 组件名称 |
When a high availability event is initiated, the kernel calls _fun () at base level (that is, process environment) with 2 parameters:
- 第一个是用户在注册时在 数据 (_S) 字段中传递的数据。
- 第二个是指向 /usr/include/sys/high_avail.h中定义的 haeh_event_t 结构的指针。
| 字段 | 描述 |
|---|---|
| _magic | 标识事件类型。 唯一可能的值为 HA_CPU_FAIL。 |
| Dealloc_cpu | 正在取消分配的 CPU 的逻辑号。 |
除了特定于用户的功能外,高可用性事件处理程序还必须取消绑定其绑定到 Dealloc_cpu 的线程,并停止那些绑定的线程所启动的计时器请求块 (TRB) (如果适用)。
| 值 | 描述 |
|---|---|
| HA_ACCEPTED | 该事件的用户处理已成功。 |
| 已使用的 HA_REFUSED | 该事件的用户处理不成功。 |
一个扩展可以注册相同的 HAEH N 次 (N > 1)。 虽然它被视为不正确的行为,但不会报告任何错误。 对于每个 HA 事件,将调用给定的 HAEH N 次。 必须注销此处理程序的次数与已注册的次数相同。
由于内核会依次调用 HAEH ,因此对于同一事件,可能会多次调用 HAEH。 内核扩展应该已准备好处理这种可能性。 例如,两个内核扩展 K1 和 K2 已注册 HA 处理程序。 已启动 CPU 取消分配。 将调用 K1 的 HAEH ,执行其作业并返回HA_ACCEPTED下一个调用. K2 ,出于某种原因返回HA_REFUSED。取消分配异常中止,并且错误日志条目将报告 K2 作为失败原因。 稍后,系统将管理卸载 K2 ,并通过手动运行 明星报来重新启动释放。 结果是,将使用相同的参数再次调用 K1 的 HAEH。
执行环境
register_HA_handler 内核服务只能从进程环境中进行调用。
返回值
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 指示操作成功。 |
非零值表示一个错误。