一种基于linux的硬件事件处理方法及系统与流程

文档序号:20838349发布日期:2020-05-22 17:09阅读:610来源:国知局
一种基于linux的硬件事件处理方法及系统与流程

本申请涉及物联网领域,具体而言,涉及一种基于linux的硬件事件处理方法。



背景技术:

现有的基于linux的嵌入式智能设备,在开发基于硬件事件上报处理(电池电量事件,u盘插拔事件,网络连接事件等等)的功能时,需要基于现有linux事件框架包括:uevent框架,socket框架,netlink框架等进行开发。uevent框架包括:电池电量事件,按键按下抬起事件等;

socket框架包括:网络连接事件,网络地址分配事件等;netlink框架包括:u盘插拔事件,sd卡插拔事件等。目前基于linux的硬件事件的应用开发,在需要处理各种硬件事件时需要分别基于各种linux的框架进行开发,每种框架都有一套自己的软件接口和使用方式,造成在开发多种功能的设备时适配各个框架工作量大,性能低,实现复杂,容易产生bug。



技术实现要素:

本申请的主要目的在于提供一种基于linux的硬件事件处理方法,包括:

通过统一接收接口,监听所述硬件事件的句柄数组,所述句柄数组包括多个硬件事件的文件句柄;

通过统一监听接口,监听所述句柄数组,并获取监听结果;

通过统一处理接口,根据所述监听结果处理相应硬件事件。

可选地,所述文件句柄包括:uevent,socket或netlink。

可选地,通过epoll方法对所述句柄数组进行监听。

可选地,通过统一处理接口,根据所述监听结果处理相应硬件事件为:当所述句柄数组中有文件句柄可读,则通过该文件句柄读出相应的事件返回给用户,并调用用户指定的方法进行事件处理。

根据本申请的一方面,还提供了一种基于linux的硬件事件处理系统,包括:

统一接收接口,用于监听所述硬件事件的句柄数组,所述句柄数组包括多个硬件事件的文件句柄;

统一监听接口,用于监听所述句柄数组,并获取监听结果;

统一处理接口,用于根据所述监听结果处理相应硬件事件。

本申请还公开了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。

本申请还公开了一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现上述任一项所述的方法。

本申请还公开了一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述任一项所述的方法。

与现有技术相比,本申请具有如下有益效果:

用户开发各种各样的硬件事件时可以基于一套统一的框架实现,开发成本低,实现简单,质量高。

用epoll统一处理事件,因为是epoll本身的异步实现机制,性能高。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和有益效果变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请一个实施例的基于linux的硬件事件处理方法的流程示意图;

图2是根据本申请一个实施例的计算机设备的示意图;以及

图3是根据本申请一个实施例的计算机可读存储介质的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参照图1,本申请一实施例提供了一种基于linux的硬件事件处理方法,包括:

通过统一接收接口,监听所述硬件事件的句柄数组,所述句柄数组包括多个硬件事件的文件句柄;

通过统一监听接口,监听所述句柄数组,并获取监听结果;

通过统一处理接口,根据所述监听结果处理相应硬件事件。

在本申请一实施例中,所述文件句柄包括:uevent,socket或netlink。

在本申请一实施例中,通过epoll方法对所述句柄数组进行监听。

在本申请一实施例中,通过统一处理接口,根据所述监听结果处理相应硬件事件为:当所述句柄数组中有文件句柄可读,则通过该文件句柄读出相应的事件返回给用户,并调用用户指定的方法进行事件处理。

例如,本方法抽象出一个硬件事件处理的统一接口供用户使用:

提供事件监听的接口,可以选择需要的事件进行监听

提供事件接收的接口,接收进行监听的事件

提供事件处理接口,对于收到的指定事件,用用户指定的方法进行处理

方法内部基于linux的epoll方法进行实现,根据监听接口传递下来的参数(需要监听的事件),按照需求分别打开uevent,socket或netlink的文件句柄,并统一保存在一个句柄的数组中,然后用epoll方法对整个句柄数组进行监听,如果句柄数组中有某个句柄可读(代表有事件上报),通过该句柄读出相应的事件返回给用户,并调用用户指定的方法进行事件处理

本申请还提供了一种基于linux的硬件事件处理系统,包括:

统一接收接口,用于监听所述硬件事件的句柄数组,所述句柄数组包括多个硬件事件的文件句柄;

统一监听接口,用于监听所述句柄数组,并获取监听结果;

统一处理接口,用于根据所述监听结果处理相应硬件事件。

请参照图2,本申请还提供了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。

请参照图3,一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现上述任一项所述的方法。

一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述任一项所述的方法。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1