Performs CPU external interrupt control related operations.
This kernel services provides means of enabling, disabling, and querying the external interrupt state on the CPUs described by the CPU resource set. Enabling or disabling an CPU external interrupt could affect the external interrupt delivery to the CPU. Normally, on multiple CPU system, external interrupts can be delivered to any running CPU, and the distribution among the CPUs is determined by a predefined method. Any external interrupt can only be delivered to a CPU if its interrupt priority is more favored than the current external interrupt priority of the CPU. When external interrupts are disabled via this interface, any external interrupt priority less favored than INTMAX will be blocked until interrupts are enabled again. This kernel service is applicable only on selective hardware types.
Item | Description |
---|---|
command | Specifies the operation to the CPU specified by the CPU resource set. One of the following values defined in <sys/intr.h> can be used: The following commands are supported:
|
cpuset | Reference to a CPU resource set. Upon successful return from this kernel service, the CPUs that have the external interrupt control operation done will be set in the CPU resource set. The CPUs specified by this cpuset parameter are logic CPU ids. |
flags | Always set to 0 or EINVAL_INTR_DIS_BAD_FLAGS will be returned. |
The caller must have root authority with CAP_NUMA_ATTACH capability or PV_KER_CONF privilege in the RBAC environment.
The k_cpuextintr_ctl kernel service can be called from process environment only.
Upon successful completion, the k_cpuextintr_ctl kernel service returns a 0. If unsuccessful, one of the following kerrno value is returned.
Item | Description |
---|---|
kerrno | Description |
EINVAL_EXTINTR_BAD_COMMAND | The command value is not valid. |
EINVAL_EXTINTR_BAD_FLAGS | The flags value is unknown. |
EINVAL_EXTINTR_BAD_CPUSET | The cpuset references NULL. |
EINVAL_EXTINTR _NO_RSET | The cpuset is empty. |
ENOTSUP_EXTINTR_CALLER | The kernel service is called from the interrupt environment. |
ENOSYS_EXTINTR_PLATFORM | This function is not implemented on the platform. |
EPERM_EXTINTR_OPER | The caller does not have enough privilege to perform the requested operation. |