一种基于android容器的输入设备隔离方法与流程

文档序号:11215665阅读:309来源:国知局
一种基于android容器的输入设备隔离方法与流程

本发明涉及隔离方法,尤其涉及一种基于android容器的输入设备隔离方法。



背景技术:

随着android的发展,在android上基于容器的多系统方案已经被提了出来,其中实现了进程隔离,文件系统隔离,网络隔离等。android容器方案是基于linuxkernel(操作系统内核)提供的namespace(命名空间)和cgroups技术,在单个kernel上隔离出来多个完整的虚拟空间。

android系统上经常使用多种input(输入)设备,触屏,按键,各种sensor等,都属于这种设备。在基于android容器的多系统方案中,如何让多个系统共享input设备是必须要解决的一个问题。

在中国专利<<基于单linux内核的多android系统共享输入显示设备的方法>>(公开号为103593185b)中提出在eventhub上作判断来达到多个容器共享input设备的目的。但该方案存在以下问题:

(1)该方案只能解决多个android系统的方案,没有解决移动设备上的多个系统中含有其他如megoo,ubuntu等系统上共享input设备的问题;

(2)该方案对于当前不需要使用input设备的系统,依然需要inputmanager通过eventhub监听和处理input事件的上报,增加了移动设备的功耗。

还有一个方案是在具体的设备驱动中作判断,是否要将input事件上报给指定的容器,但由于每个系统上支持的input设备不同,那么对于不同的input设备都需要作特殊处理。



技术实现要素:

为了解决现有技术中的问题,本发明提供了一种基于android容器的输入设备隔离方法。

本发明提供了一种基于android容器的输入设备隔离方法,在inputeventdriver层维护一个数据结构,将输入设备分为以下三种顾类型:

(1)所要上报的空间无论是激活的还是非激活的,都需要上报;

(2)只有激活的空间上报,非激活的空间的数据则直接丢弃;

(3)如果是激活的空间则上报,如果是非激活的空间则缓存;待非激活的空间转换成激活状态后将缓存的事件上报。

作为本发明的进一步改进,在user层作系统切换时,通过sys节点设置要激活的pidnamespace,操作系统内核收到这个信息后,,判断每个pidnamespace是要切换到激活状态,还是要切换到非激活状态。

本发明的有益效果是:上层inputmanager在空间处于非激活状态时不需要作接受和处理input事件,提高了系统的性能,有利于减少功耗的消耗。

附图说明

图1是不做处理时多android系统上的input架构图。

图2是本发明一种基于android容器的输入设备隔离方法的示意图。

具体实施方式

下面结合附图说明及具体实施方式对本发明作进一步说明。

如图1所示,在不做任何处理时,touchscreen将自己注册成input设备,有触屏信息需要上报时将输入事件上报给指定类型的inputeventdriver(通常是evdev),然后inputeventdriver将事件通过/dev/input/*下的设备节点上报给正在监听事件的inputmanager。

此时由于input设备上报的事件container1和container2都可以收到,起不到安全和隔离的效果。

如图2所示,一种基于android容器的输入设备隔离方法,在inputeventdriver层维护一个数据结构,将input设备分为三种:

(1)无论是所要上报的空间是激活的还是非激活的,都需要上报;

(2)只有激活的上报,非激活的空间的数据则直接丢弃;

(3)如果是激活的空间则上报,如果是非激活的空间则缓存;待非激活的空间转换成激活状态后将缓存的事件上报。

input设备上报事件,会由不同类型的的inputeventdriver统一处理,在inputeventdriver要发送事件时,判断正在上报给的空间的pidnamespace是否是active的.如果是active的,则直接上报;如果是非active的,则根据设备类型判断是上报,丢弃还是缓存下来。

在user层作系统切换时,可以通过sys节点设置要激活的pidnamespace,内核收到这个信息后,判断哪个pidnamespace要切换到激活状态,哪个pidnamespace要切换到非激活状态。

本发明提供的一种基于android容器的输入设备隔离方法,综合考虑了系统的兼容性、性能和功耗的基础上,制定了单kernel多系统上的input设备隔离方案,具有以下优点:

(1)对于新添加的设备,不需要在具体驱动中为支持input设备的隔离做修改。

(2)支持基于linuxkernel的多系统的兼容,很好的支持了多系统中一个android系统和一个其他linux发行版的情况。

(3)上层inputmanager在空间处于非激活状态时不需要作接受和处理input事件,提高了系统的性能,有利于减少功耗的消耗。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。



技术特征:

技术总结
本发明提供了一种基于android容器的输入设备隔离方法,在input event driver层维护一个数据结构,将输入设备分为以下三种顾类型:(1)所要上报的空间无论是激活的还是非激活的,都需要上报;(2)只有激活的空间上报,非激活的空间的数据则直接丢弃;(3)如果是激活的空间则上报,如果是非激活的空间则缓存;待非激活的空间转换成激活状态后将缓存的事件上报。本发明的有益效果是:上层InputManager在空间处于非激活状态时不需要作接受和处理input事件,提高了系统的性能,有利于减少功耗的消耗。

技术研发人员:王晓华;张韵;江滨;邓永德
受保护的技术使用者:北京海杭通讯科技有限公司
技术研发日:2017.05.10
技术公布日:2017.10.10
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1