PowerPC-关闭中断后,还能报sc中断?
2024-09-05 21:52:59
一. 基本问题
FreeRTOS有一个宏,portYIELD_WITHIN_API(), 意即在FreeRTOS的API中进行进程切换。
API一般使用taskENTER_CRITICAL()和taskEXIT_CRITICAL()包裹。所以portYIELD_WITHIN_API()主要指的是在CRITICAL区间内进行进程切换。
taskENTER_CRITICAL()会关闭中断,而进程切换也是依靠软件触发CPU中断进行,在PowerPC为System Call中断(ARM为SWI指令)。
在关闭中断的情况下,CPU如何响应System Call中断呢?
可以看到,portYIELD_WITHIN_API()所执行的进程切换动作与taskENTER_CRITICAL()的注释是矛盾的。
二. 问题求解
这个问题需要到芯片手册,甚至ISA手册中寻找答案。
1.如何关闭中断?
关中断一般是指关闭CPU对中断的响应,这里的中断一般指外部中断。PowerPC中,为MSR寄存器的EE位。
从中可以看到,EE位为0时,则禁止External Input, Decrementer, and Fixed-Interval Timer interrupts. 即禁止外部中断打断CPU。这些不包括System Call中断。
2. 外部中断与System Call
EE是外部中断的使能位,约束不到System Call中断。他们的不同点如下:
a.外部中断是异步的,而SC是同步的中断;
b.外部中断和SC的IVOR偏移量不同;
最新文章
- php获取用户 地区 、ip地址
- struts2 框架处理流程
- Creating Excel File in Oracle Forms
- UI特效--Android利用ViewFlipper实现屏幕切换动画效果
- Gen_server行为分析与实践
- Delphi 调试Dll报错 通过GetLastError显示错误信息。
- HDU 3790 最短路径问题 (SPFA)
- DIV+CSS 让同一行的图片和文字对齐
- orm查询
- Linux挂载
- 优秀代码摘录片段一:LinkedList中定位index时使用折半思想
- ZooKeeper-配置 zoo.cfg
- 在Heroku上免费部署ASP.NET Core(使用Docker和CircleCI)
- sort_gff.py
- java连接MySQL数据库的方式
- LuoGu P1083 借教室
- suse 奇怪的crash 问题
- ORACLE EBS常用表
- Java多线程--并行模式与算法
- 生成定长随机数-可做3des密钥
热门文章
- 树形dp compare E - Cell Phone Network POJ - 3659 B - Strategic game POJ - 1463
- java基础篇 之 接口
- 手把手教你撸一套Redux(Redux源码解读)
- 技术人的福音!教你如何使用Typora+PicGo实现图片自动上传功能
- [hdu5416 CRB and Tree]树上路径异或和,dfs
- [hdu4292]最大流,拆点
- Mysql常用sql语句(21)- regexp 正则表达式查询
- 1008 Elevator (20分)
- java8 新特性Stream流的应用
- Sentinel源码解析二(Slot总览)