一种热插拨事件的处理方法及系统技术方案

技术编号:19821543 阅读:86 留言:0更新日期:2018-12-19 14:37
本申请实施例公开了一种热插拨事件的处理方法及系统,用于在用户态驱动处理热插拔事件,保证用户态功能组件的有效运作,避免系统因为热插拔事件而发生异常。本申请实施例方法包括:通过内核态驱动获取热插拔事件;通过套接字netlink机制将所述热插拔事件发送至用户态驱动;通过所述用户态驱动对所述热插拔事件进行处理。

【技术实现步骤摘要】
一种热插拨事件的处理方法及系统
本申请涉及存储领域,尤其涉及一种热插拨事件的处理方法及系统。
技术介绍
PCI-Express(peripheralcomponentinterconnectexpress,PCIe)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。PCIE交由PCI-SIG(PCI特殊兴趣组织)认证发布后改名为“PCI-Express”,简称“PCIe”,它的主要优势就是数据传输速率高。在服务器结构体系中,PCIe是标准的外部设备接口,通过PCIe接口可以扩展出网卡,显卡,存储卡多种标准PCIe设备。PCIe支持热插拔及热交换的特性,也就是说,你可以在不必关闭系统和电源的情况下更换PCIe槽的版卡和各种硬件设备。netlink是一种Linux特有的套接字,用于实现用户进程与内核进程之间通信的一种特殊的进程间通信方式(IPC),是一种异步通信机制,也是网络应用程序与内核通信的最常用的接口。netlink是一种在内核和用户应用间进行双向数据传输的良好方式,用户态应用使用标准的套接字应用程序接口就能使用netlink提供的强大功能,内核态需要使用专门的内核应用程序接口来使用netlink。目前Linux系统下的PCIe设备热插拔流程均在内核态处理,包括热插拔终端响应、设备内存释放管理等,而针对用户态驱动未做有效消息传递和支持,系统有可能会因为热插拔事件而发生异常。
技术实现思路
本申请实施例提供了一种热插拨事件的处理方法及系统,用于在用户态驱动处理热插拔事件,保证用户态功能组件的有效运作,避免系统因为热插拔事件而发生异常。本申请实施例的第一方面提供了一种热插拨事件的处理方法,具体包括:通过内核态驱动获取热插拔事件;通过套接字netlink机制将所述热插拔事件发送至用户态驱动;通过所述用户态驱动对所述热插拔事件进行处理。在一种可能的设计中,在本申请实施例第一方面的第一种实现方式中,所述热插拔事件包括插入动作信息或拔出动作信息。在一种可能的设计中,在本申请实施例第一方面的第二种实现方式中,所述通过所述用户态驱动对所述热插拔事件进行处理包括:在所述用户态驱动中根据所述热插拔事件进行设备私有资源的分配操作或释放操作,所述分配操作与所述插入动作相对应,所述释放操作与所述拔出动作相对应。在一种可能的设计中,在本申请实施例第一方面的第三种实现方式中,当热插拔事件中包含的动作信息为所述拔出动作信息时,所述通过所述用户态驱动对所述热插拔事件进行处理之后,所述方法还包括:在用户态驱动中通过信号异常处理接口处理所述热插拔事件对应的信号异常事件。在一种可能的设计中,在本申请实施例第一方面的第四种实现方式中,通过netlink机制将所述热插拔事件发送至用户态驱动之前,所述方法还包括:在所述内核态驱动中根据所述热插拔事件进行设备外设部件互连标准PCI资源的分配操作或释放操作。本申请实施例的第二方面提供了一种热插拨事件的处理系统,具体包括:获取单元,用于通过内核态驱动获取热插拔事件;发送单元,用于通过套接字netlink机制将所述热插拔事件发送至用户态驱动;处理单元,用于通过所述用户态驱动对所述热插拔事件进行处理。在一种可能的设计中,在本申请实施例第二方面的第一种实现方式中,所述热插拔事件包括插入动作信息或拔出动作信息。在一种可能的设计中,在本申请实施例第二方面的第二种实现方式中,所述处理单元具体用于:在所述用户态驱动中根据所述热插拔事件进行设备私有资源的分配操作或释放操作,所述分配操作与所述插入动作相对应,所述释放操作与所述拔出动作相对应。在一种可能的设计中,在本申请实施例第二方面的第三种实现方式中,当热插拔事件中包含的动作信息为所述拔出动作信息时,所述处理单元还用于:在用户态驱动驱动中通过信号异常处理接口处理所述热插拔事件对应的信号异常事件。在一种可能的设计中,在本申请实施例第二方面的第四种实现方式中,所述处理单元具体还用于:在所述内核态驱动中根据所述热插拔事件进行设备外设部件互连标准PCI资源的分配操作或释放操作。本申请的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。从以上技术方案可以看出,本申请实施例具有以下优点:本申请实施例中,热插拨事件的处理系统通过内核态驱动获取热插拔事件;然后通过套接字netlink机制将所述热插拔事件发送至用户态驱动;再通过所述用户态驱动对所述热插拔事件进行处理。由于热插拔事件可以在用户态驱动上进行处理,故可以保证用户态功能组件的有效运作,避免系统因为热插拔事件而发生异常。附图说明图1为本申请实施例中模块初始化的一个流程示意图;图2为本申请实施例中热插拨事件的处理方法的一个实施例示意图;图3为本申请实施例中热插拨事件的处理方法的另一个实施例示意图;图4为本申请实施例中热插拨事件的处理系统的一种结构示意图;图5为本申请实施例中热插拨事件的处理系统的另一种结构示意图。具体实施方式本申请实施例提供了一种热插拨事件的处理方法及系统,用于在用户态驱动处理热插拔事件,保证用户态功能组件的有效运作,避免系统因为热插拔事件而发生异常。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。需要说明的是,本申请实施例中的用户态驱动软件框架上可以分为事件管理层、资源管理层和信号管理层三部分,其中,事件管理层主要负责接收处理内核态热插拔驱动上报的热插拔事件,并进行事件解析等操作;资源管理层主要负责PCIe资源创建/释放、有效性管理等操作;信号管理层主要负责SIGBUS等异常信号处理操作。在实行本申请中的用户态驱动热插拨的方法之前,还会提供初始化处理,如图1所示,在初始化阶段用户态需要101、注册uevent处理接口(即注册netlink的监听任务),uevent处理接口的该注册动作在事件管理层上发生;同时需要102、注册signal处理接口,signal处理接口的注册动作在信号管理层上发生,流程完成之后用户态驱动即可处理热插拔事件。请参阅图2,本专利技术实施例中一种用户态驱动热插拨的方法的一个实施例包括:201、通过内核态驱动获取热插拔事件。本实施例中,内核态驱动热插拔驱动中的pciehp模块会接本文档来自技高网
...

【技术保护点】
1.一种热插拨事件的处理方法,其特征在于,包括:通过内核态驱动获取热插拔事件;通过套接字netlink机制将所述热插拔事件发送至用户态驱动;通过所述用户态驱动对所述热插拔事件进行处理。

【技术特征摘要】
1.一种热插拨事件的处理方法,其特征在于,包括:通过内核态驱动获取热插拔事件;通过套接字netlink机制将所述热插拔事件发送至用户态驱动;通过所述用户态驱动对所述热插拔事件进行处理。2.根据权利要去1所述的方法,其特征在于,所述热插拔事件包括插入动作信息或拔出动作信息。3.根据权利要去2所述的方法,其特征在于,所述通过所述用户态驱动对所述热插拔事件进行处理包括:在所述用户态驱动中根据所述热插拔事件进行设备私有资源的分配操作或释放操作,所述分配操作与所述插入动作相对应,所述释放操作与所述拔出动作相对应。4.根据权利要去3所述的方法,其特征在于,当热插拔事件中包含的动作信息为所述拔出动作信息时,所述通过所述用户态驱动对所述热插拔事件进行处理之后,所述方法还包括:在用户态驱动中通过信号异常处理接口处理所述热插拔事件对应的信号异常事件。5.根据权利要去4所述的方法,其特征在于,通过netlink机制将所述热插拔事件发送至用户态驱动之前,所述方法还包括:在所述内核态驱动中根据所述热插拔事件进行设备外设部...

【专利技术属性】
技术研发人员:王洋张雪庆
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1