CN117056062B - 一种强制退出中断服务程序的方法和装置 - Google Patents
一种强制退出中断服务程序的方法和装置 Download PDFInfo
- Publication number
- CN117056062B CN117056062B CN202311327094.9A CN202311327094A CN117056062B CN 117056062 B CN117056062 B CN 117056062B CN 202311327094 A CN202311327094 A CN 202311327094A CN 117056062 B CN117056062 B CN 117056062B
- Authority
- CN
- China
- Prior art keywords
- service routine
- interrupt service
- interrupt
- user
- user interrupt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000002159 abnormal effect Effects 0.000 claims abstract description 20
- 238000011084 recovery Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 85
- 101150039208 KCNK3 gene Proteins 0.000 description 10
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000001994 activation Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000007420 reactivation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种强制退出中断服务程序的方法和装置,通过在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。实现了在用户中断服务程序异常时,能够及时离开异常的用户中断服务程序,并使得被用户中断服务程序打断的任务能够继续运行,有效的提高了操作系统的安全性和稳定性。
Description
技术领域
本申请涉及嵌入式系统技术领域,尤其涉及一种强制退出中断服务程序的方法和装置。
背景技术
在嵌入式操作系统中,有些中断服务程序是应用程序开发人员编写的,当这些中断服务程序调用操作系统的服务函数时,如果操作系统检测到调用非法,则需要强制结束当前的中断服务程序。
例如,autosar OS操作系统中的保护设施产生的错误处理,比如用户编写的中断服务程序函数是userIsrA,userIsrA函数调用了autosar OS的服务函数ActivateTask,ActivateTask函数检测到了一个异常状态,比如请求激活的任务的激活次数已经达到了上限,不允许再激活这个任务了,autosar OS规范要求结束中断服务程序的userIsrA函数的运行,继续去运行其他等待的中断服务程序或者任务。
因此,如何实现在有需要时强制退出中断服务程序,并使得被中断服务程序打断的任务继续运行是有待解决的技术问题。
发明内容
本申请的主要目的在于提供一种强制退出中断服务程序的方法和装置,旨在解决如何强制退出中断服务程序,并使得被中断服务程序打断的任务继续运行的技术问题。
第一方面,本申请提供一种强制退出中断服务方法,所述方法包括以下步骤:
在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。
一些实施例中,在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序,包括:
在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断任务的所述用户中断服务程序,将CPU现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序。
一些实施例中,若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,包括:
若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
一些实施例中,若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,还包括:
若所述用户中断服务程序的运行时间超过为其配置的时间阈值,被所述操作系统的系统中断程序打断,则通过所述中断入口函数调用所述系统中断程序,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
一些实施例中,该方法还包括:
若所述用户中断服务程序在运行时,被更高优先级的优先用户中断服务程序打断,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断所述用户中断服务程序的优先用户中断服务程序,将CPU现场信息备份至所述优先用户中断服务程序对应的缓存区中,并在备份完成后调用所述优先用户中断服务程序;
当所述优先用户中断服务程序存在非法调用所述操作系统的服务函数时,通过所述操作系统的服务函数将备份的CPU现场信息恢复至CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的所述用户中断服务程序继续运行。
一些实施例中,该方法还包括:
通过调用缓存setjmp函数,将CPU现场信息进行备份。
一些实施例中,该方法还包括:
通过调用跳转longjmp函数,将备份的CPU现场信息恢复到CPU寄存器中。
第二方面,本申请还提供一种强制退出中断服务程序的装置,所述装置包括:
备份模块,其用于在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
恢复模块,其用于若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。
一些实施例中,所述备份模块还用于:
在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断任务的所述用户中断服务程序,将CPU现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序。
一些实施例中,所述恢复模块还用于:
若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
本申请提供一种强制退出中断服务程序的方法和装置,通过在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。实现了在用户中断服务程序异常时,能够及时离开异常的用户中断服务程序,并使得被用户中断服务程序打断的任务能够继续运行,有效的提高了操作系统的安全性和稳定性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种强制退出中断服务程序的方法的流程示意图;
图2为本实施例提供的一种强制退出中断服务程序的方法的具体流程示意图;
图3为本实施例提供的另一种强制退出中断服务程序的方法的具体流程示意图;
图4为本申请实施例提供的强制退出高优先级中断服务程序的方法的具体流程示意图;
图5为本申请实施例提供的一种强制退出中断服务程序的装置的示意性框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本申请实施例提供一种强制退出中断服务程序的方法和装置。其中,该强制退出中断服务程序的方法可应用于计算机设备中,该计算机设备可以是服务器、终端等电子设备。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,图1为本申请的实施例提供的一种强制退出中断服务程序的方法的流程示意图。
如图1所示,该方法的整体思路包括步骤S101至步骤S102。
步骤S101、在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序。
具体的,在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号,接着根据中断号查找打断任务的所述用户中断服务程序,并将CPU现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序。可以理解的是这里备份的是中断入口函数准备调用用户中断服务程序之前的CPU现场信息。
在一个具体的实施例中,在根据中断号查找到打断任务的用户中断服务程序后,通过调用缓存setjmp函数,将CPU现场信息进行备份,备份至所述用户中断服务程序对应的缓存区中。
步骤S102、若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。
本实施例中的中断入口函数是一个统一的中断服务程序入口函数,所有的用户中断服务程序通过中断入口函数进行调用,并为每个用户中断服务程序分配一段缓存,用于保存CPU现场信息。
值得说明的是,用户中断服务程序被调用之后,在运行的过程中可能出现多种异常情况,下面将针对出现各种异常情况时强制退出中断服务程序的具体步骤进行说明。
第一种,若用户中断服务程序在运行时出现的异常情况为非法调用操作系统的服务函数,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
在一个具体的实施例中,在对CPU现场信息进行恢复时,通过所述操作系统的服务函数调用跳转longjmp函数,将备份的CPU现场信息恢复到CPU寄存器中。本实施例中的操作系统为autosar OS,操作系统的服务函数为ActivateTask。
示范性的,如图2所示,在没有发生中断嵌套的情况下,用户中断服务程序调用autosar OS的服务函数ActivateTask时,存在非法调用情况,强制退出用户中断服务程序的整体流程包括:
步骤S201、任务Task1正在运行时发生了中断;
步骤S202、程序跳转到中断入口函数运行;
步骤S203、中断入口函数获取当前发生的中断号,并根据中断号查找打断Task1的用户中断服务程序userIsr1,并调用setjmp函数将CPU现场备份到用户中断服务程序userIsr1对应的缓存区中,然后调用用户中断服务程序userIsr1;
步骤S204、进入用户中断服务程序userIsr1;
步骤S205、用户中断服务程序userIsr1调用autosar OS的服务函数ActivateTask;
步骤S206、程序进入ActivateTask,ActivateTask检查userIsr1的调用是否存在非法情况,若是,则进入步骤S207;否则ActivateTask被正常调用,userIsr1正常完成运行(如图2虚线部分);
步骤S207、ActivateTask若检查到调用异常,则调用longjmp函数将步骤S203备份的CPU现场信息恢复到CPU寄存器中,程序回到步骤S203继续运行中断入口函数,中断入口函数运行完成后回到任务Task1被打断的位置继续运行。
第二种,若所述用户中断服务程序的运行时间超过为其配置的时间阈值,被所述操作系统的系统中断程序打断,则通过所述中断入口函数调用所述系统中断程序,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
示范性的,如图3所示,autosar OS的系统中断监控到当前用户中断服务程序异常,具体为autosar OS的系统时间保护定时器监控到当前运行的中断服务程序运行时间超过配置的时间上限,需要强制退出当前运行的用户中断服务程序,具体流程包括:
步骤S301、任务Task1在运行时发生了中断;
步骤S302、程序跳转到中断入口函数运行;
步骤S303、中断入口函数获取当前发生的中断号,并根据中断号查找打断Task1的用户中断服务程序userIsr1,并调用setjmp函数将CPU现场备份到用户中断服务程序userIsr1对应的缓存区中,然后调用用户中断服务程序userIsr1;
步骤S304、进入用户中断服务程序userIsr1;
步骤S305、用户中断服务程序userIsr1运行时间超过为其配置的时间上限,autosar OS的系统中断程序TimerIsr对用户中断服务程序userIsr1的运行进行了中断;
步骤S306、程序跳转到中断入口函数运行;
步骤S307、中断入口函数获取当前发生中断的中断号,并根据中断号查找打断userIsr1对应的系统中断程序TimerIsr,然后调用TimerIsr;
步骤S308、程序进入TimerIsr;
步骤S309、TimerIsr调用longjmp函数将步骤S303备份的CPU现场恢复到CPU的寄存器,程序回到步骤S303继续运行,运行到中断入口函数结束后,返回到步骤S301处继续运行Task1。
上述流程相当于autosar OS的系统中断程序TimerIsr抢占了用户中断服务程序,要求用户中断服务程序userIsr1终止运行,这里要一次跳转退出两个中断:即同时退出autosar OS的系统中断程序本身和用户中断服务程序。可以理解的是,若用户中断服务程序userIsr1的运行时间未超过设置阈值,则userIsr1如图3虚线部分正产完成运行。
第三种,若所述用户中断服务程序在运行时,被更高优先级的优先用户中断服务程序打断,通过所述中断入口函数获取对应的中断号;根据中断号查找打断所述用户中断服务程序的优先用户中断服务程序,将CPU现场信息备份至所述优先用户中断服务程序对应的缓存区中,并在备份完成后调用所述优先用户中断服务程序;当所述优先用户中断服务程序存在非法调用所述操作系统的服务函数时,通过所述操作系统的服务函数将备份的CPU现场信息恢复至CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的所述用户中断服务程序继续运行。
示范性的,如图4所示,当发生了中断嵌套的情况时,即当前的用户中断服务程序被更高优先级的优先中断服务程序打断,而优先中断服务程序在运行时,调用autosar OS的服务函数ActivateTask时,存在非法调用情况,需要强制退出当前运行的优先中断服务程序,程序回到被打断的低优先级的中断服务程序继续运行,具体流程包括:
步骤S401、任务Task1在运行时发生了中断;
步骤S402、程序跳转到中断入口函数运行;
步骤S403、中断入口函数获取当前发生的中断号,并根据中断号查找打断Task1的用户中断服务程序userIsr1,并调用setjmp函数将CPU现场备份到用户中断服务程序userIsr1对应的缓存区中,然后调用用户中断服务程序userIsr1;
步骤S404、进入用户的中断服务程序userIsr1;
步骤S405、userIsr1运行时被更高优先级的优先中断服务程序userIsr2打断;
步骤S406、程序跳转到中断入口函数运行;
步骤S407、中断入口函数获取当前发生的中断号,并根据中断号查找打断userIsr1对应的优先用户中断服务程序userIsr2,并调用setjmp函数将CPU现场备份到该优先用户中断服务程序userIsr2对应的缓存区,然后调用优先用户中断服务程序userIsr2;
步骤S408、进入优先用户中断服务程序userIsr2;
步骤S409、userIsr2调用autosar OS的服务函数ActivateTask,程序进入ActivateTask。
步骤S410、ActivateTask检查到调用异常,将步骤S407备份的CPU现场信息恢复至CPU寄存器中,程序回到步骤S407继续运行,运行到中断入口函数结束后程序回到S405使得userIsr1继续运行。
值得说明的是,在userIsr1继续运行并运行完成后,程序可以再次回到中断入口函数,通过中断入口函数使程序回到Task1被打断的位置,使得任务Task1继续运行。如果userIsr2不存在非法调用的情况时,ActivateTask被正常调用,userIsr2正常完成运行(如图4虚线部分)。
本身申请实施例提供一种强制退出中断服务程序的方法,其有益效果在于,设置一个统一的中断服务程序入口函数,称为中断入口函数,所有的用户中断服务程序通过中断入口函数调用。为每个用户中断服务程序分配一段缓存,中断入口函数中调用用户的中断服务程序前,调用setjmp函数保存CPU的现场到该中断的缓存区。当用户的中断服务程序运行检测到异常时,调用longjmp将缓存区保存的CPU现场恢复到CPU的寄存器,程序就可以退出当前的用户中断服务程序,继续运行被打断的任务或者程序,有效的提高了操作系统的安全性和稳定性。
请参照图5,图5为本申请实施例提供的强制退出中断服务程序的装置的示意性框图。
如图5所示,该装置包括:
备份模块,其用于在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
恢复模块,其用于若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。
其中,所述备份模块还用于:
在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断任务的所述用户中断服务程序,将CPU现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序。
其中,所述恢复模块还用于:
若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
其中,所述恢复模块还用于:
若所述用户中断服务程序的运行时间超过为其配置的时间阈值,被所述操作系统的系统中断程序打断,则通过所述中断入口函数调用所述系统中断程序,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
其中,该装置还用于:
若所述用户中断服务程序在运行时,被更高优先级的优先用户中断服务程序打断,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断所述用户中断服务程序的优先用户中断服务程序,将CPU现场信息备份至所述优先用户中断服务程序对应的缓存区中,并在备份完成后调用所述优先用户中断服务程序;
当所述优先用户中断服务程序存在非法调用所述操作系统的服务函数时,通过所述操作系统的服务函数将备份的CPU现场信息恢复至CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的所述用户中断服务程序继续运行。
其中,所述备份模块还用于:
调用缓存setjmp函数,将CPU现场信息进行备份。
其中,所述恢复模块还用于:
调用跳转longjmp函数,将备份的CPU现场信息恢复到CPU寄存器中。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块及单元的具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种强制退出中断服务程序的方法,其特征在于,包括:
在任务被用户中断服务程序打断后,通过预设的统一的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行;
其中,备份的CPU现场信息为所述中断入口函数准备调用所述用户中断服务程序之前的CPU现场信息;
其中,在任务被用户中断服务程序打断后,通过预设的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序,包括:
在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断任务的所述用户中断服务程序,将CPU现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序;
其中,若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,还包括:
若所述用户中断服务程序的运行时间超过为其配置的时间阈值,被操作系统的系统中断程序打断,则通过所述中断入口函数调用所述系统中断程序,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行;
其中,若所述用户中断服务程序在运行时,被更高优先级的优先用户中断服务程序打断,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断所述用户中断服务程序的优先用户中断服务程序,将CPU现场信息备份至所述优先用户中断服务程序对应的缓存区中,并在备份完成后调用所述优先用户中断服务程序;
当所述优先用户中断服务程序存在非法调用所述操作系统的服务函数时,通过所述操作系统的服务函数将备份的CPU现场信息恢复至CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的所述用户中断服务程序继续运行。
2.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,包括:
若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
3.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,还包括
通过调用缓存setjmp函数,将CPU现场信息进行备份。
4.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,还包括:
通过调用跳转longjmp函数,将备份的CPU现场信息恢复到CPU寄存器中。
5.一种强制退出中断服务程序的装置,其特征在于,包括:
备份模块,其用于在任务被用户中断服务程序打断后,通过预设的统一的中断入口函数将CPU现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
恢复模块,其用于若所述用户中断服务程序运行存在异常,则将备份的CPU现场信息恢复到CPU寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行;
其中,备份的CPU现场信息为所述中断入口函数准备调用所述用户中断服务程序之前的CPU现场信息;
其中所述备份模块还用于:
在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断任务的所述用户中断服务程序,将CPU现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序;
其中,所述恢复模块还用于:
若所述用户中断服务程序的运行时间超过为其配置的时间阈值,被操作系统的系统中断程序打断,则通过所述中断入口函数调用所述系统中断程序,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行;
其中,所述恢复模块还用于:
若所述用户中断服务程序在运行时,被更高优先级的优先用户中断服务程序打断,通过所述中断入口函数获取对应的中断号;
根据中断号查找打断所述用户中断服务程序的优先用户中断服务程序,将CPU现场信息备份至所述优先用户中断服务程序对应的缓存区中,并在备份完成后调用所述优先用户中断服务程序;
当所述优先用户中断服务程序存在非法调用所述操作系统的服务函数时,通过所述操作系统的服务函数将备份的CPU现场信息恢复至CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的所述用户中断服务程序继续运行。
6.根据权利要求5所述的强制退出中断服务程序的装置,其特征在于,所述恢复模块还用于:
若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的CPU现场信息恢复到CPU寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311327094.9A CN117056062B (zh) | 2023-10-13 | 2023-10-13 | 一种强制退出中断服务程序的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311327094.9A CN117056062B (zh) | 2023-10-13 | 2023-10-13 | 一种强制退出中断服务程序的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117056062A CN117056062A (zh) | 2023-11-14 |
CN117056062B true CN117056062B (zh) | 2024-04-02 |
Family
ID=88655834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311327094.9A Active CN117056062B (zh) | 2023-10-13 | 2023-10-13 | 一种强制退出中断服务程序的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117056062B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783020A (zh) * | 2005-09-12 | 2006-06-07 | 浙江大学 | 基于PowerPC体系结构的嵌入式操作系统的中断管理方法 |
CN104102572A (zh) * | 2013-04-01 | 2014-10-15 | 中兴通讯股份有限公司 | 一种系统故障检测及处理方法、装置 |
CN107038116A (zh) * | 2017-03-16 | 2017-08-11 | 杭州朔天科技有限公司 | 异构多核芯片系统中通过大核调试小核程序的实现方法 |
CN107463494A (zh) * | 2017-06-30 | 2017-12-12 | 百富计算机技术(深圳)有限公司 | 中断服务程序调试方法、装置、存储介质及其计算机设备 |
CN109189598A (zh) * | 2018-08-01 | 2019-01-11 | 百富计算机技术(深圳)有限公司 | 一种中断定位的方法、处理器及终端设备 |
CN109933451A (zh) * | 2019-03-18 | 2019-06-25 | 晶晨半导体(上海)股份有限公司 | 一种基于risc-v架构的异常和中断处理系统及方法 |
CN112069020A (zh) * | 2020-08-13 | 2020-12-11 | 中国航空无线电电子研究所 | 基于嵌入式操作系统的机载航电设备软件故障监控系统 |
CN112198820A (zh) * | 2020-09-27 | 2021-01-08 | 中国第一汽车股份有限公司 | 一种中断服务实现方法、装置、设备及存储介质 |
CN114489801A (zh) * | 2022-02-11 | 2022-05-13 | 广州翼辉信息技术有限公司 | 高精度测量嵌入式系统中断时长的方法、系统及介质 |
CN115269158A (zh) * | 2022-08-15 | 2022-11-01 | 西南大学 | 软件定义中断管理控制器的方法 |
CN115480884A (zh) * | 2021-05-31 | 2022-12-16 | 比亚迪半导体股份有限公司 | 芯片、芯片的测试监控方法及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040111549A1 (en) * | 2002-12-10 | 2004-06-10 | Intel Corporation | Method, system, and program for improved interrupt processing |
JP2005190207A (ja) * | 2003-12-25 | 2005-07-14 | Matsushita Electric Ind Co Ltd | 割り込み制御装置、制御方法 |
KR20160103205A (ko) * | 2015-02-23 | 2016-09-01 | 주식회사 에이디칩스 | 다중 인터럽트 제어기를 구비하는 프로세서 시스템 |
-
2023
- 2023-10-13 CN CN202311327094.9A patent/CN117056062B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783020A (zh) * | 2005-09-12 | 2006-06-07 | 浙江大学 | 基于PowerPC体系结构的嵌入式操作系统的中断管理方法 |
CN104102572A (zh) * | 2013-04-01 | 2014-10-15 | 中兴通讯股份有限公司 | 一种系统故障检测及处理方法、装置 |
CN107038116A (zh) * | 2017-03-16 | 2017-08-11 | 杭州朔天科技有限公司 | 异构多核芯片系统中通过大核调试小核程序的实现方法 |
CN107463494A (zh) * | 2017-06-30 | 2017-12-12 | 百富计算机技术(深圳)有限公司 | 中断服务程序调试方法、装置、存储介质及其计算机设备 |
CN109189598A (zh) * | 2018-08-01 | 2019-01-11 | 百富计算机技术(深圳)有限公司 | 一种中断定位的方法、处理器及终端设备 |
CN109933451A (zh) * | 2019-03-18 | 2019-06-25 | 晶晨半导体(上海)股份有限公司 | 一种基于risc-v架构的异常和中断处理系统及方法 |
CN112069020A (zh) * | 2020-08-13 | 2020-12-11 | 中国航空无线电电子研究所 | 基于嵌入式操作系统的机载航电设备软件故障监控系统 |
CN112198820A (zh) * | 2020-09-27 | 2021-01-08 | 中国第一汽车股份有限公司 | 一种中断服务实现方法、装置、设备及存储介质 |
CN115480884A (zh) * | 2021-05-31 | 2022-12-16 | 比亚迪半导体股份有限公司 | 芯片、芯片的测试监控方法及计算机可读存储介质 |
CN114489801A (zh) * | 2022-02-11 | 2022-05-13 | 广州翼辉信息技术有限公司 | 高精度测量嵌入式系统中断时长的方法、系统及介质 |
CN115269158A (zh) * | 2022-08-15 | 2022-11-01 | 西南大学 | 软件定义中断管理控制器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117056062A (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601493B2 (en) | Application controlling apparatus and storage medium which stores software for the apparatus | |
CN110532197B (zh) | 内存回收方法及装置、电子设备、存储介质 | |
US7689749B2 (en) | Interrupt control function adapted to control the execution of interrupt requests of differing criticality | |
US20110197193A1 (en) | Device and method for controlling communication between bios and bmc | |
EP2541407A1 (en) | Multi-core processor system, control program, and control method | |
CN108874549B (zh) | 资源复用方法、装置、终端和计算机可读存储介质 | |
EP2280348B1 (en) | Method and system for saving operational state of running applications when unexpected shutdown events occur | |
CN104573529A (zh) | 一种bios固件的划分、更新方法和系统 | |
CN111538585B (zh) | 一种基于node.js的服务器进程调度方法、系统和装置 | |
CN117056062B (zh) | 一种强制退出中断服务程序的方法和装置 | |
CN105224403A (zh) | 一种中断处理方法及装置 | |
CN113467981A (zh) | 异常处理的方法和装置 | |
CN112363828B (zh) | 内存碎片管理方法、装置、车载系统及车辆 | |
CN107315631B (zh) | 一种任务调度方法及装置 | |
CN111400087A (zh) | 一种操作系统的控制方法、终端以及存储介质 | |
CN112540871A (zh) | 通用寄存器保留恢复的实现方法 | |
CN115454515A (zh) | 系统处理方法、装置、电子设备 | |
CN104252385A (zh) | Android系统的事件快速响应方法 | |
CN109062718B (zh) | 一种服务器及数据处理方法 | |
CN109189562B (zh) | 控制进程运行的方法和装置 | |
CN113296803A (zh) | 数据处理方法、装置、智能网卡和服务器 | |
CN106020960B (zh) | 一种调用方法及装置 | |
CN111857689A (zh) | 一种框架、框架的功能配置方法、终端及存储介质 | |
CN110727528A (zh) | 存储器故障恢复方法、装置、电子设备和存储介质 | |
KR102300712B1 (ko) | 스택 결함 원인을 진단하는 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |