一种功能调用方法和装置制造方法及图纸

技术编号:34768935 阅读:24 留言:0更新日期:2022-08-31 19:26
本申请公开了一种功能调用方法和装置,应用于包含至少一个驱动程序的系统,且每个所述驱动程序被拆分成至少一个相互独立的功能模块,每个所述功能模块都被注册到相应的模块管理器,所述方法包括:接收第一模块发送的第一请求消息,所述第一请求消息中包括第一功能服务的标识;根据第一功能服务的标识在模块注册表中查找目标模块,所述模块注册表中包括第一功能服务的标识与目标模块的对应关系,所述目标模块用于为第一模块提供第一功能服务,获得目标模块的调用接口;向第一模块发送该目标模块的调用接口。本方法,由于拆分后的各个功能模块互相独立,功能代码只依赖由模块管理器提供的功能模块访问接口,所以功能模块可以被任意裁剪和部署。意裁剪和部署。意裁剪和部署。

【技术实现步骤摘要】
一种功能调用方法和装置
[0001]本申请要求于2020年8月31日提交中国专利局、申请号为202010895994.3、专利技术名称为“一种处理方法及移动设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。


[0002]本申请涉及系统内部交互方法,更具体地,本申请涉及一种功能调用方法和装置。

技术介绍

[0003]现代操作系统通常会创建两个或两个以上地址空间,这些地址空间可被用于运行不同的程序以保证系统安全性。其中,可直接访问物理地址的地址空间被称为“内核空间”,内核空间通常用于运行操作系统内核和驱动程序。除此之外的地址空间可被称为“用户空间”,用户空间可用于运行应用程序。
[0004]设备驱动程序(简称驱动程序)用于管理设备,实现各种功能,驱动程序只能运行在内核态。随着设备的功能越来越丰富,驱动程序也变得越来越复杂。实际上并不是所有产品都需要全部的设备功能,其中有些功能是需要的,有些功能是不需要的,对于不需要的功能所对应的驱动程序则可以被删除掉,该删除操作通常被称为驱动的裁剪。
[0005]随着外设、操作外设使用的协议复杂化,驱动程序也随着变得越来越复杂。若将每个驱动编写成内核模块,则操作系统中包含多个内核模块,每个内核模块可以通过特定方法向用户空间提供一个或多个接口,如图1中的某一接口为“InterfaceFunX”,该接口通过调用一系列内部方法,如图1中任一方法“InnerFuncX”来完成相应的功能。当两个或两个以上内核模块间存在交互时,会导致代码之间相互耦合,比如驱动A1需要调用驱动A2时,会调用驱动A2中的接口“InterfaceFunc”,因此接口“InterfaceFunc”对于驱动A1而言存在依赖。又比如接口“InterfaceFunA”可以直接调用方法“InnerFunc1”和方法“InnerFunc2”,则接口A与方法1和方法2之间也存在相互耦合的关系。
[0006]当对驱动进行裁剪时,一般只能裁剪那些不被其他接口所依赖的接口、方法。对于那些有依赖的接口、方法,如果被才减掉,就会导致在编译、链接时出现错误,导致未被裁剪掉的驱动程序发生异常,所以在越来越复杂的驱动程序之间,会产生构建难、裁剪难、维护难、部署难的问题。

技术实现思路

[0007]本申请提供了一种功能调用方法和装置,用于克服驱动程序复杂化带来的构建难、裁剪难、维护难、部署难的技术问题。具体地,本申请公开了以下技术方案:
[0008]第一方面,本申请提供了一种功能调用方法,该方法应用于包含至少一个驱动程序的系统,且每个所述驱动程序被拆分成至少一个相互独立的功能模块,每个所述功能模块都被注册到相应的模块管理器,所述方法包括:
[0009]模块管理器接收第一模块发送的第一请求消息,所述第一请求消息中包括第一功
能服务的标识;根据所述第一功能服务的标识在模块注册表中查找目标模块,所述模块注册表中包括所述第一功能服务的标识与目标模块的对应关系,所述目标模块用于为所述第一模块提供第一功能服务;模块管理器根据所述目标模块获得目标模块的调用接口;向所述第一模块发送所述目标模块的调用接口。
[0010]本方法,预先将系统的驱动模块拆分成更小粒度的功能模块,拆分后的功能模块之间互相独立,彼此之间没有耦合,然后通过同步消息、异步消息、单程消息方式进行通讯,使得各个功能模块之间通过调用接口来访问或者获取其他功能模块的相关功能。
[0011]此外,由于拆分后的各个功能模块互相独立,功能代码只依赖由模块管理器提供的功能模块访问接口,所以功能模块可以被任意裁剪。即使一个功能模块要访问的其他功能模块被裁剪掉了,也可以在请求目标功能模块管理器失败后作出响应处理,不会出现编译、链接和运行时的异常,克服了驱动构建难、裁剪难、维护难的问题。
[0012]结合第一方面,在第一方面的一种可能的实现方式中,根据所述第一功能服务的标识在模块注册表中查找目标模块,包括:根据所述第一功能服务的标识在模块注册表中查找能够提供所述第一功能服务的功能模块,确定所述能够提供所述第一功能服务的功能模块为所述目标模块。
[0013]结合第一方面,在第一方面的另一种可能的实现方式中,获得目标模块的调用接口,包括:确定所述目标模块所在的目标模块管理器;根据所述目标模块管理器的位置和所述第一模块管理器的位置确定调用模式,根据所述调用模式,以及调用模式和调用接口之间的对应关系确定所述目标模块的调用接口。
[0014]其中,所述调用模式包括:相同地址空间调用和不同地址空间调用。
[0015]结合第一方面,在第一方面的又一种可能的实现方式中,第一模块对应的模块管理器为第一模块管理器,该第一模块管理器的位置在内核空间或者用户空间中;当所述目标模块管理器的位置与所述第一模块管理器的位置为相同的地址空间时,所述调用模式为相同地址空间调用;确定所述目标模块的调用接口,包括:在所述调用模式为相同地址空间调用时,所述目标模块的调用接口包括:直接访问目标模块地址的方法和所述目标模块的地址。
[0016]结合第一方面,在第一方面的又一种可能的实现方式中,当所述目标模块管理器的位置与所述第一模块管理器的位置为不同的地址空间时,所述调用模式为用户空间调用内核空间,或者,内核空间调用用户空间;确定所述目标模块的调用接口,包括:
[0017]在所述调用模式为用户空间调用内核空间时,所述目标模块的调用接口包括:使用操作系统提供的方法发起对所述内核空间接口的调用,以及调用所述内核空间接口所需的接口数据。
[0018]在所述调用模式为内核空间调用用户空间时,所述目标模块的调用接口包括:使用操作系统提供的方法发起对所述用户空间接口的调用,以及调用所述用户空间接口所需的接口数据。
[0019]结合第一方面,在第一方面的又一种可能的实现方式中,当所述第一模块管理器的位置在第一用户空间,所述目标模块管理器的位置在第二用户空间时,所述调用模式为跨用户之间的地址空间调用,确定所述目标模块的调用接口,包括:在所述调用模式为跨用户之间的地址空间调用时,所述目标模块的调用接口包括:使用操作系统进程间的方法发
起对所述第二用户空间接口的调用,以及调用所述第二用户空间接口所需的接口数据。
[0020]结合第一方面,在第一方面的又一种可能的实现方式中,所述获得目标模块的调用接口之前,还包括:判断所述第一模块在第一模块管理器中是否已经注册;如果否,且所述第一模块管理器是内核空间的模块管理器,则注册并保存所述第一模块的相关信息,所述第一模块的相关信息包括:第一模块的标识、第一模块所包含的所有功能,以及每个所述功能所对应的功能标识。
[0021]本实现方式,第一模块将其对应的标识、包含的功能以及功能标识等信息注册到模块管理器中,从而为后续第一模块的功能的调用做准备,并且可通过注册,模块管理器实现对所有功能的集中管理。
[0022]结合第一方面,在第一方面的又一种可能的实现方式中,还包括:如果所述第一模块管理器本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种功能调用方法,其特征在于,应用于包含至少一个驱动程序的系统,且每个所述驱动程序被拆分成至少一个相互独立的功能模块,每个所述功能模块都被注册到相应的模块管理器,所述方法包括:第一模块管理器接收第一模块发送的第一请求消息,所述第一请求消息中包括第一功能服务的标识;所述第一模块管理器根据所述第一功能服务的标识在模块注册表中查找目标模块,所述模块注册表中包括所述第一功能服务的标识与目标模块的对应关系,所述目标模块用于为所述第一模块提供第一功能服务;所述第一模块管理器获得目标模块的调用接口;所述第一模块管理器向所述第一模块发送所述目标模块的调用接口。2.根据权利要求1所述的方法,其特征在于,所述第一模块管理器根据所述第一功能服务的标识在模块注册表中查找目标模块,包括:所述第一模块管理器根据所述第一功能服务的标识在模块注册表中查找能够提供所述第一功能服务的功能模块,确定所述能够提供所述第一功能服务的功能模块为所述目标模块。3.根据权利要求1或2所述的方法,其特征在于,所述第一模块管理器获得目标模块的调用接口,包括:所述第一模块管理器确定所述目标模块所在的目标模块管理器;所述第一模块管理器根据所述目标模块管理器的位置和所述第一模块管理器的位置确定调用模式;所述第一模块管理器根据所述调用模式,以及调用模式和调用接口之间的对应关系确定所述目标模块的调用接口。4.根据权利要求3所述的方法,其特征在于,所述第一模块对应的模块管理器为第一模块管理器,所述第一模块管理器的位置在内核空间或者用户空间中;当所述目标模块管理器的位置与所述第一模块管理器的位置为相同的地址空间时,所述调用模式为相同地址空间调用;确定所述目标模块的调用接口,包括:在所述调用模式为相同地址空间调用时,所述目标模块的调用接口包括:直接访问目标模块地址的方法和所述目标模块的地址。5.根据权利要求4所述的方法,其特征在于,当所述目标模块管理器的位置与所述第一模块管理器的位置为不同的地址空间时,所述调用模式为用户空间调用内核空间,或者,内核空间调用用户空间;确定所述目标模块的调用接口,包括:...

【专利技术属性】
技术研发人员:杜潇泊李杰翟峰伟
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1