facility_enable 内核服务

用途

启用要在内核环境中使用的指定设施。 否则,指定的设施将限制在内核环境中使用。

语法

#include <sys/machine.h>
int facility_enable (facility)
uint64_t facility;

参数

程序
指定必须启用的功能部件。

描述

facility_enable 内核服务允许使用通常导致系统故障的设施 (如果在内核环境中使用该设施)。 此类设施的示例包括 Vector Multimedia Extension (VMX) 设施或 Vector Scalar Extension (VSX) 设施。 facility_enable 内核服务支持的工具在 /usr/include/sys/machine.h 包含文件中定义。

facility_enable 内核服务保存所请求设施的状态,然后禁用中断,直到调用 facility_disable 内核服务为止。

facility_enable 内核服务处于活动状态时,正在运行的程序必须遵循中断环境限制和以下其他限制:

  • 无法以递归方式或嵌套方式使用 facility_enable 内核服务。 即,在再次调用 facility_enable 内核服务之前,对 facility_enable 内核服务的每个调用都必须后跟对 facility_disable 内核服务的调用。
  • facility_enable 内核服务处于活动状态时,无法修改中断级别。
  • 每次调用 facility_enable 内核服务时,只能启用单个设施。
  • facility_enable 内核服务处于活动状态并将导致系统故障时,不允许执行休眠操作。
  • facility_enable 内核服务处于活动状态时,不允许执行块操作。
  • 必须将 facility_disable 内核服务与 facility_enable 内核服务配合使用,以复原自调用 facility_enable 内核服务以来的任何状态更改。
注: 对于长时间运行的指令序列,不得调用 facility_enable 内核服务。 在较长一段时间内禁用中断可能会导致系统中出现性能问题。

执行环境

可以从进程或中断环境调用 facility_enable 内核服务。

返回值

0
已成功启用设施,并且指定的设施现在处于活动状态。
ENOSYS
请求的设施在此系统上不可用或不受支持。
EINVAL
facility 参数无效。
EBUSY
已调用 facility_enable 内核服务并且该服务处于活动状态。