用户空间中断服务方法及系统转让专利

申请号 : CN201110048528.2

文献号 : CN102147748B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 殷建儒叶鹏王博

申请人 : 汉柏科技有限公司

摘要 :

本发明公开了一种用户空间中断服务方法,包括:S1:将用户空间的待注册中断信息发送至内核空间;S2:在内核空间中对待注册中断信息进行注册,并初始化内核空间与用户空间之间的通信机制,在用户空间中保存与待注册中断信息对应的中断服务程序的入口地址;S3:在用户空间中循环等待中断通知;S4:当中断到来时,内核空间通过通信机制向用户空间发出中断通知;S5:在用户空间中通过中断服务程序的入口地址运行对应的中断服务程序;S6:中断服务程序运行完成后,返回步骤S3。本发明能够使中断挂接过程和中断服务程序在用户空间下运行,使中断服务程序编写人员不必深入了解操作系统内核机制,减低中断服务程序的编写难度。

权利要求 :

1.一种用户空间中断服务方法,其特征在于,包括以下步骤:S1:将用户空间的待注册中断信息发送至内核空间;

S2:在所述内核空间中对所述待注册中断信息进行注册,并初始化所述内核空间与所述用户空间之间的通信机制,在所述用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址;

S3:在所述用户空间中循环等待中断通知;

S4:当中断到来时,所述内核空间通过所述通信机制向所述用户空间发出中断通知;

S5:在所述用户空间中通过所述中断服务程序的入口地址运行对应的中断服务程序;

S6:所述中断服务程序运行完成后,返回步骤S3。

2.如权利要求1所述的用户空间中断服务方法,其特征在于,所述待注册中断信息包括:中断内核清除标志位、中断设备的寄存器基地址、中断清除寄存器对应的偏移地址、中断掩码值和中断清除方法标志位。

3.如权利要求2所述的用户空间中断服务方法,其特征在于,步骤S2具体包括步骤:S21:调用所述内核空间中的应用程序编程接口;

S22:注册所述待注册中断信息至所述内核空间;

S23:初始化所述内核空间与所述用户空间之间的通信机制;

S24:在用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址。

4.如权利要求3所述的用户空间中断服务方法,其特征在于,步骤S23之前,包括步骤:根据所述中断内核清除标志位判断所述内核空间是否需要所述中断清除寄存器的相关信息,若是,则将所述中断清除寄存器的相关信息映射到内核空间,然后执行步骤S23;

若否,则直接执行步骤S23,所述中断清除寄存器的相关信息包括中断设备的寄存器基地址、中断清除寄存器对应的偏移地址和中断掩码值。

5.如权利要求4所述的用户空间中断服务方法,其特征在于,步骤S4具体包括步骤:S41:当中断到来时,判断所述中断是否为与所述待注册中断信息对应的中断,若是,则执行步骤S42,若否,则所述内核空间对所述中断进行相应处理,处理完成后返回步骤S3;

S42:通过所述通信机制向所述用户空间发出中断到来的通知。

6.如权利要求5所述的用户空间中断服务方法,其特征在于,步骤S42之前包括步骤:根据所述中断内核清除标志位判断是否在所述内核空间清除所述中断,若是在所述内核空间清除,根据所述中断清除方法标志位判断所述中断清除方式为写清除还是读清除,若是写清除,则将所述中断掩码值写入中断清除寄存器,所述中断清除寄存器的地址由所述中断设备的寄存器基地址和中断清除寄存器对应的偏移地址得到,若是读清除,则读取所述中断清除寄存器中存储的数据;若不在所述内核空间清除,则直接执行步骤S42。

7.一种用户空间中断服务系统,其特征在于,包括:

发送模块,用于将用户空间的待注册中断信息发送至内核空间;

注册存储模块,用于在所述内核空间中对所述待注册中断信息进行注册,并初始化所述内核空间与所述用户空间之间的通信机制,在所述用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址;

循环等待模块,用于在所述用户空间中循环等待中断通知;

调用通知模块,用于当中断到来时,所述内核空间通过所述通信机制向所述用户空间发出中断通知;

运行模块,用于在所述用户空间中通过所述中断服务程序的入口地址运行对应的中断服务程序;

返回模块,用于所述中断服务程序运行完成后,返回循环等待模块。

8.如权利要求7所述的用户空间中断服务系统,其特征在于,所述注册存储模块具体包括:创建映射子模块、注册子模块、初始化子模块和保存子模块;

所述创建映射子模块的输出端与所述注册子模块的输入端相连接,所述注册子模块的输出端与所述初始化子模块的输入端相连接,所述初始化子模块的输出端与所述保存子模块的输入端相连接;

所述创建映射子模块,用于调用所述内核空间中的应用程序编程接口;

所述注册子模块,用于注册所述待注册中断信息至所述内核空间;

所述初始化子模块,用于初始化所述内核空间与所述用户空间之间的通信机制;

所述保存子模块,用于在用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址。

9.如权利要求8所述的用户空间中断服务系统,其特征在于,所述调用通知模块具体包括:调用子模块和通知子模块;

所述调用子模块的输出端与所述通知子模块的输入端相连接;

所述调用子模块,用于当中断到来时,判断所述中断是否为与所述待注册中断信息对应的中断,若是,则执行通知子模块,若否,则返回循环等待模块;

所述通知子模块,用于通过所述通信机制向所述用户空间发出中断到来的通知。

说明书 :

用户空间中断服务方法及系统

技术领域

[0001] 本发明涉及计算机应用技术领域,特别涉及一种用户空间中断服务方法及系统。

背景技术

[0002] 计算机系统对外部事件的响应广泛采用中断机制,操作系统内核提供常用外设的中断服务程序,同时提供了内核机制,允许用户对特定外设的中断挂接用户定制的服务程序,但是挂接过程和服务程序都必须在内核空间下运行,因此中断服务程序编写人员必须深入了解操作系统内核机制,另外,由于外设种类繁多,内部寄存器编址各不相同,清除使能屏蔽中断方法亦各不相同,导致中断服务程序的编写难度很高,且内核具有较高的不稳定风险。

发明内容

[0003] (一)要解决的技术问题
[0004] 本发明要解决的技术问题是如何使中断挂接过程和中断服务程序在用户空间下运行,使中断服务程序编写人员不必深入了解操作系统内核机制,减低中断服务程序的编写难度,利于程序的调试开发,降低内核不稳定风险。
[0005] (二)技术方案
[0006] 为解决上述技术问题,本发明提供了一种用户空间中断服务方法,包括以下步骤:
[0007] S1:将用户空间的待注册中断信息发送至内核空间;
[0008] S2:在所述内核空间中对所述待注册中断信息进行注册,并初始化所述内核空间与所述用户空间之间的通信机制,在所述用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址;
[0009] S3:在所述用户空间中循环等待中断通知;
[0010] S4:当中断到来时,所述内核空间通过所述通信机制向所述用户空间发出中断通知;
[0011] S5:在所述用户空间中通过所述中断服务程序的入口地址运行对应的中断服务程序;
[0012] S6:所述中断服务程序运行完成后,返回步骤S3。
[0013] 其中,所述待注册中断信息包括:中断内核清除标志位、中断设备的寄存器基地址、中断清除寄存器对应的偏移地址、中断掩码值和中断清除方法标志位。
[0014] 其中,步骤S2具体包括步骤:
[0015] S21:调用所述内核空间中的应用程序编程接口;
[0016] S22:注册所述待注册中断信息至所述内核空间;
[0017] S23:初始化所述内核空间与所述用户空间之间的通信机制;
[0018] S24:在用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址。
[0019] 其中,步骤S24之前,包括步骤:
[0020] 根据所述中断内核清除标志位判断所述内核空间是否需要所述中断清除寄存器的相关信息,若是,则将所述中断清除寄存器的相关信息映射到内核空间,若否,则直接执行步骤S23,所述中断清除寄存器的相关信息包括中断设备的寄存器基地址、中断清除寄存器对应的偏移地址和中断掩码值;
[0021] 其中,步骤S4具体包括步骤:
[0022] S41:当中断到来时,判断所述中断是否为与所述待注册中断信息对应的中断,若是,则执行步骤S42,若否,则所述内核空间对所述中断进行相应处理,处理完成后返回步骤S3;
[0023] S42:通过所述通信机制向所述用户空间发出中断到来的通知。
[0024] 其中,步骤S42之前包括步骤:
[0025] 根据所述中断内核清除标志位判断是否在所述内核空间清除所述中断,若是在所述内核空间清除,根据所述中断清除方法标志位判断所述中断清除方式为写清除还是读清除,若是写清除,则将所述中断掩码值写入中断清除寄存器,所述中断清除寄存器的地址由所述中断设备的寄存器基地址和中断清除寄存器对应的偏移地址得到,若是读清除,则读取所述中断清除寄存器中存储的数据;若不在所述内核空间清除,则直接执行步骤S42。
[0026] 本发明还公开了一种用户空间中断服务系统,包括:
[0027] 发送模块,用于将用户空间的待注册中断信息发送至内核空间;
[0028] 注册存储模块,用于在所述内核空间中对所述待注册中断信息进行注册,并初始化所述内核空间与所述用户空间之间的通信机制,在所述用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址;
[0029] 循环等待模块,用于在所述用户空间中循环等待中断通知;
[0030] 调用通知模块,用于当中断到来时,所述内核空间通过所述通信机制向所述用户空间发出中断通知;
[0031] 运行模块,用于在所述用户空间中通过所述中断服务程序的入口地址运行对应的中断服务程序;
[0032] 返回模块,用于所述中断服务程序运行完成后,返回循环等待模块。
[0033] 其中,所述注册存储模块具体包括:
[0034] 创建映射子模块,用于调用所述内核空间中的应用程序编程接口;
[0035] 注册子模块,用于注册所述待注册中断信息至所述内核空间;
[0036] 初始化子模块,用于初始化所述内核空间与所述用户空间之间的通信机制;
[0037] 保存子模块,用于在用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址。
[0038] 其中,所述调用通知模块具体包括:
[0039] 调用子模块,用于当中断到来时,判断所述中断是否为与所述待注册中断信息对应的中断,若是,则执行通知子模块,若否,则返回循环等待模块;
[0040] 通知子模块,用于通过所述通信机制向所述用户空间发出中断到来的通知。
[0041] (三)有益效果
[0042] 本发明能够使中断挂接过程和中断服务程序在用户空间下运行,使中断服务程序编写人员不必深入了解操作系统内核机制,减低中断服务程序的编写难度,利于程序的调试开发,降低内核不稳定风险。

附图说明

[0043] 图1是按照本发明一种实施方式的用户空间中断服务方法的流程图;
[0044] 图2是按照本发明一种实施方式的用户空间中断服务系统的结构框图。

具体实施方式

[0045] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0046] 图1是按照本发明一种实施方式的用户空间中断服务方法的流程图,包括以下步骤:
[0047] S1:将用户空间的待注册中断信息发送至内核空间;
[0048] S2:在所述内核空间中对所述待注册中断信息进行注册,并初始化所述内核空间与所述用户空间之间的通信机制,在所述用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址;
[0049] S3:在所述用户空间中循环等待中断通知;
[0050] S4:当中断到来时,所述内核空间通过所述通信机制向所述用户空间发出中断通知;
[0051] S5:在所述用户空间中通过所述中断服务程序的入口地址运行对应的中断服务程序;
[0052] S6:所述中断服务程序运行完成后,返回步骤S3。
[0053] 其中,所述待注册中断信息包括:系统分配的中断号、用户空间进程号、中断内核清除标志位、中断设备的寄存器基地址、中断清除寄存器对应的偏移地址、中断掩码值和中断清除方法标志位。
[0054] 其中,步骤S2具体包括步骤:
[0055] S21:调用所述内核空间中的应用程序编程接口;
[0056] S22:注册所述待注册中断信息至至所述内核空间;
[0057] S23:初始化所述内核空间与所述用户空间之间的通信机制;
[0058] S24:在用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址。
[0059] 其中,步骤S24之前,包括步骤:
[0060] 根据所述中断内核清除标志位判断所述内核空间是否需要所述中断清除寄存器的相关信息,若是,则将所述中断清除寄存器的相关信息映射到内核空间,若否,则直接执行步骤S23,所述中断清除寄存器的相关信息包括中断设备的寄存器基地址、中断清除寄存器对应的偏移地址和中断掩码值;
[0061] 其中,步骤S4具体包括步骤:
[0062] S41:当中断到来时,判断所述中断是否为与所述待注册中断信息对应的中断,若是,则执行步骤S42,若否,则所述内核空间对所述中断进行相应处理,处理完成后返回步骤S3;
[0063] S42:通过所述通信机制向所述用户空间发出中断到来的通知。
[0064] 其中,步骤S42之前包括步骤:
[0065] 根据所述中断内核清除标志位判断是否在所述内核空间清除所述中断,若是在所述内核空间清除,根据所述中断清除方法标志位判断所述中断清除方式为写清除还是读清除,若是写清除,则将所述中断掩码值写入中断清除寄存器,所述中断清除寄存器的地址由所述中断设备的寄存器基地址和中断清除寄存器对应的偏移地址得到,若是读清除,则读取所述中断清除寄存器中存储的数据;若不在所述内核空间清除,则直接执行步骤S42。
[0066] 本发明还公开了一种用户空间中断服务系统,如图2所示,包括:
[0067] 发送模块,用于将用户空间的待注册中断信息发送至内核空间;
[0068] 注册存储模块,用于在所述内核空间中对所述待注册中断信息进行注册,并初始化所述内核空间与所述用户空间的之间通信机制,在所述用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址;
[0069] 循环等待模块,用于在所述用户空间中循环等待中断通知;
[0070] 调用通知模块,用于当中断到来时,所述内核空间通过所述通信机制向所述用户空间发出中断通知;
[0071] 运行模块,用于在所述用户空间中通过所述中断服务程序的入口地址运行对应的中断服务程序;
[0072] 返回模块,用于所述中断服务程序运行完成后,返回循环等待模块。
[0073] 其中,所述注册存储模块具体包括:
[0074] 创建映射子模块,调用所述内核空间中的应用程序编程接口;
[0075] 注册子模块,用于注册所述待注册中断信息至所述内核空间;
[0076] 初始化子模块,用于初始化所述内核空间与所述用户空间之间的通信机制;
[0077] 保存子模块,用于在用户空间中保存与所述待注册中断信息对应的中断服务程序的入口地址。
[0078] 其中,所述调用通知模块具体包括:
[0079] 调用子模块,用于当中断到来时,判断所述中断是否为与所述待注册中断信息对应的中断,若是,则执行通知子模块,若否,则返回循环等待模块;
[0080] 通知子模块,用于通过所述通信机制向所述用户空间发出中断到来的通知。
[0081] 以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。