RTEMS 中断管理提供的系统调用
10.4: 中断管理提供的系统调用
%A
%A INTERRUPT_CATCH- 建立 ISR
%A
%A INTERRUPT_DISABLE- 屏蔽中断
%A
%A INTERRUPT_ENABLE- 中断使能
%A
%A INTERRUPT_FLASH- 暂时对中断等级进行设置
%A
%A INTERRUPT_IS_IN_PROGRESS- 是否正在进行 ISR
%A
%A 下面将介绍这些指令
%A 10.4.1: INTERRUPT_CATCH- 建立 ISR
%A
%A 函数原型 :
%A
%A rtems_status_code rtems_interrupt_catch(
%A rtems_isr_entry new_isr_handler,
%A rtems_vector_number vector
%A rtems_isr_entry *old_isr_handler
%A );
%A
%A 返回值代表的状态:
%A
%A RTEMS_SUCCESSFUL-ISR 成功建立 ISR
%A
%A RTEMS_INVALID_NUMBER- 非法的中断向量
%A
%A RTEMS_INVALID_ADDRESS- 非法的 ISR 入口地址或者是非法的 old_isr_handler
%A
%A 描述:
%A
%A 该函数为指定的中断向量建立中断服务例程 (ISR) 。 new_isr_handler参数叙述ISR的入口点。该中断向量以前的ISR在old_isr_handler中返回。
%A
%A 为了释放一个中断向量,需要的ISR旧地址old_isr_handler。
%A
%A 注意:
%A
%A 该函数不会导致抢占。
%A 10.4.2: INTERRUPT_DISABLE- 屏蔽中断
%A
%A 函数原型 :
%A
%A void rtems_interrupt_disable(
%A rtems_interrupt_level level
%A );
%A
%A /* 该函数通过宏实现 */
%A
%A 描述 :
%A
%A 该函数屏蔽所有可屏蔽的中断。与该函数对应的是rtems_interrupt_enable函数。
%A
%A 注意:
%A
%A 该函数不会引起抢占调度
%A
%A 该函数通过汇编修改中断等级,可能会引起副作用
%A 10.4.3: INTERRUPT_ENABLE- 允许中断
%A
%A 函数原型:
%A
%A void rtems_interrupt_enable(
%A rtems_interrupt_level level
%A );
%A
%A 描述:
%A
%A 该函数恢复被rtems_interrupt_disable屏蔽的中断。该函数必须和rtems_interrupt_disable配对使用。
%A
%A 注意:
%A
%A 该函数不会引起抢占式调度。
%A 10.4.4: INTERRUPT_FLASH- 中断刷新
%A
%A 函数原型:
%A
%A void rtems_interrupt_flash(
%A rtems_interrupt_level level
%A );
%A
%A 描述:
%A
%A 该函数先开放rtems_interrupt_disable屏蔽的中断。函数结束的时候又返回以前屏蔽的状态。
%A
%A 注意:
%A
%A 该函数 不会引起抢占调度。
%A 10.4.5: INTERRUPT_IS_IN_PROGRESS-是否正在执行ISR
%A
%A 函数原型:
%A
%A rtems_boolean rtems_interrupt_is_in_progress(void );
%A
%A 描述:
%A
%A 如果处理器正在处理ISR,那么该函数返回TRUE,否则返回FALSE。如果处理器正在处理ISR,那么能够进行的系统调用就非常有限。
%A
%A 注意:
%A
%A 该函数不会引起抢占式调度。
%A%A
%A
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。