一种基于linux系统的内核消息分发方法

文档序号:6382367阅读:612来源:国知局
专利名称:一种基于linux系统的内核消息分发方法
技术领域
本发明涉及Iinux平台技术领域,尤其涉及一种基于Iinux系统的内核消息分发方法。
背景技术
Linux是一种自由和开放源码的类Unix操作系统,可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux系统是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。在Iinux下内核管理着各种设备的使用并把设备的状态信息或变化事件以内核消息或事件的形式发布出去,在应用层需要通过特定途径来获得内核各种消息或事件从而实现内核与用户应用间的信息交流与传递。在实际中会有多个应用或者多个模块需要监听同一种内核消息或事件,需要在多个应用或者多个模块中进行内核事件的分发。目前,在现有技术中,对于不同应用需要监听或着获得内核事件时,在不同应用中或者不同模块中独自建立监听套接字来直接监听获得内核消息;或者使用udev来获得设备插拔等内核事件。然而,在不同应用中或者不同模块中独自建立监听套接字来直接监听获得内核消息,对于同一个内核消息的监听往往只有一个应用或者模块能得到消息;而对于udev(Iinux的设备管理器)而言,只有在Iinux内核版本高于某特定版本时才能正常工作。有鉴于此,现有技术有待改进和提闻。

发明内容
鉴于现有技术的不足,本发明目的在于提供一种基于Iinux系统的内核消息分发方法。旨在解决现有技术中Iinux系统中红对于不同需要监听的内核事件通过在不同应用中或者不同模块中独自建立监听套接字来直接监听带来的资源浪费等问题。本发明的技术方案如下
一种基于Iinux系统的内核消息分发方法,其中,包括以下步骤
51、创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息;
52、在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中;
53、当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。优选地,所述的基于Iinux系统的内核消息分发方法,其中,所述步骤S2中监听信息包括需要监听的消息类型或者消息关键字,以及消息发生后消息回调的消息ID或者套接字端口号。优选地,所述的基于Iinux系统的内核消息分发方法,其中,所述步骤S3中是否有相匹配的监听信息具体包括是否有消息类型的注册信息,及是否和消息关键字相匹配。有益效果
本申请的基于Iinux系统的内核消息分发方法,通过建立一个内核消息监听后台进程,提供了简单易用地内核消息监听注册方法和多种消息回调方法。使得在应用层中不同应用进程或模块可以简单方法来实现内核与用户应用间的信息交流与传递。


图1为本申请的基于Iinux系统的内核消息分发方法的流程图。
具体实施例方式本发明提供一种基于Iinux系统的内核消息分发方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。请参阅图1,其为本申请的基于Iinux系统的内核消息分发方法的流程图。如图所示,所述基于Iinux系统的内核消息分发方法,其中,包括以下步骤
51、创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息;
52、在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中;
53、当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。下面分别针对上述步骤进行具体描述。所述步骤SI为创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息。举例来说,可通过创建Netlink套接字以侦听所有内核信息,Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC),也是网络应用程序与内核通信的最常用的接口。Netlink套接字可以使用标准的套接字APIs来创建。socketO, bind O , sendmsgO , recvmsgO 和 close O 很容易地应用到 netlinksocket ο步骤S2为在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中,在本实施例中,所述步骤S2中监听信息包括需要监听的消息类型或者消息关键字,以及消息发生后消息回调的消息ID或者套接字端口号。
所述步骤S3为当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。具体来说,即逐一判断消息消费队列中是否有用户需要对该消息类型进行消费,如果不是则返回,如果是则进一步判断该消息是否和用户消息关键字相匹配,如果不匹配则返回,如果匹配则获取用户注册的消息回调方式,并以用户注册的消息回调方式向用户分发所述内核信息。进一步地,在本实施例中,所述步骤S3中是否有相匹配的监听信息具体包括是否有消息类型的注册信息,及是否和消息关键字相匹配。综上所述,本申请的基于Iinux系统的内核消息分发方法,其首先创建一内核消息监听后台进程及消息消费队列,然后,在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中,当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。其通过建立一个内核消息监听后台进程,提供了简单易用地内核消息监听注册方法和多种消息回调方法。使得在应用层中不同应用进程或模块可以简单方法来实现内核与用户应用间的信息交流与传递。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
1.一种基于Iinux系统的内核消息分发方法,其特征在于,包括以下步骤51、创建一内核消息监听后台进程及消息消费队列,所述内核消息监听后台进程用于监控所有内核消息或者事件,并在所述后台进程中实现对事件注册者的消息分发传送;所述消息消费队列用于存储需要用户需要监听的消息类型或者消息关键字以及消息回调方式信息;52、在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中;53、当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。
2.根据权利要求1所述的基于Iinux系统的内核消息分发方法,其特征在于,所述步骤S2中监听信息包括需要监听的消息类型或者消息关键字,以及消息发生后消息回调的消息ID或者套接字端口号。
3.根据权利要求1或2所述的基于Iinux系统的内核消息分发方法,其特征在于,所述步骤S3中是否有相匹配的监听信息具体包括是否有消息类型的注册信息,及是否和消息关键字相匹配。
全文摘要
本发明公开了一种基于linux系统的内核消息分发方法,其首先创建一内核消息监听后台进程及消息消费队列,然后,在具体应用进程中向内核消息监听后台进程注册监听信息,所述监听信息被存储到监听后台进程的消息消费队列中,当事件或者消息发生时,内核消息监听后台进程逐个检查消息消费队列中是否有相匹配的监听信息;并进行相应消息回调动作。其通过建立一个内核消息监听后台进程,提供了简单易用地内核消息监听注册方法和多种消息回调方法。使得在应用层中不同应用进程或模块可以简单方法来实现内核与用户应用间的信息交流与传递。
文档编号G06F9/38GK103019653SQ20121048974
公开日2013年4月3日 申请日期2012年11月27日 优先权日2012年11月27日
发明者彭文剑 申请人:康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1