IPI中断
核间中断(IPI)其实就是SGI中断(Software Generated Interrupt),在GICv3架构中,共有16个SGI中断(不算extension的),ARM推荐的软件规定,0-7 SGI给REE使用,8-15 SGI给TEE使用。
核间中断就是一个CPU核向系统中的目标CPU核发送中断信号,以使目标CPU执行特定的操作。
在Linux Kernel操作系统中,默认定义了8种IPI中断(SGI0-SGI7):
(linux/arch/arm64/kernel/smp.c)
enum ipi_msg_type {
IPI_RESCHEDULE,
IPI_CALL_FUNC,
IPI_CPU_STOP,
IPI_CPU_CRASH_STOP,
IPI_TIMER,
IPI_IRQ_WORK,
IPI_WAKEUP,
NR_IPI
};
IPI_RESCHEDULE :0号中断, 重新调度进程scheduler_ipi()。
IPI_CALL_FUNC :1号中断, 调用generic_smp_call_function_interrupt(),远程cpu执行回调函数。
IPI_CPU_STOP :2号中断,调用local_cpu_stop(), 使处理器停止
IPI_CPU_CRASH_STOP :3号中断,调用ipi_cpu_crash_stop(),使处理器停止。
IPI_TIMER :4号中断,调用tick_receive_broadcast(),广播时钟事件。
IPI_IRQ_WORK :5号中断,调用irq_work_run(),在中断上下文中执行回调函数。
IPI_WAKEUP :6号中断,调用acpi_parking_protocol_valid(cpu), 唤醒处理器。
NR_IPI :7号中断,没有使用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96380.html