CN113961261B - 休眠管理方法、装置、电子设备及存储介质 - Google Patents
休眠管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113961261B CN113961261B CN202111575007.2A CN202111575007A CN113961261B CN 113961261 B CN113961261 B CN 113961261B CN 202111575007 A CN202111575007 A CN 202111575007A CN 113961261 B CN113961261 B CN 113961261B
- Authority
- CN
- China
- Prior art keywords
- user
- sleep
- android
- linux
- dormancy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
本公开提出一种休眠管理方法、装置、电子设备及存储介质。其中,休眠管理方法包括:调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;在符合休眠条件的情况下,调用安卓适配层的休眠库,获取所述用户的应用在所述休眠库中持有的休眠锁;根据所述休眠锁,向内核层发起休眠操作。本公开实施例能够提高电源管理效率。
Description
技术领域
本公开涉及计算机技术,尤其涉及一种休眠管理方法、装置、电子设备及存储介质。
背景技术
电源管理是计算机系统中一个重要的部分。在Linux系统中,电源管理主要由systemd(System Demon,系统后台进程)执行。因为Linux没有自动休眠以节省耗电的需求,所以休眠方式比较简单粗暴。一般情景是systemd中设置设备无操作休眠时间,超时或者由用户按下电源键后实现休眠。
安卓(Android)是一种基于Linux内核的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑等终端。安卓系统的休眠机制与Linux系统略有不同。随着计算机技术的发展,终端设备的使用场景也越来越多,如何结合终端系统的特点,提供更好的休眠机制,是计算机软硬件改进的一个重点问题。
发明内容
本公开实施例提供一种休眠管理方法、装置、电子设备及存储介质,以解决相关技术存在的问题,技术方案如下:
第一方面,本公开实施例提供了一种休眠管理方法,包括:
调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;
在符合休眠条件的情况下,调用安卓适配层的休眠库,获取用户的应用在休眠库中持有的休眠锁;
根据休眠锁,向内核层发起休眠操作。
在一种实施方式中,根据休眠锁,向内核层发起休眠操作,包括:
对所述用户应用在所述休眠库中持有的休眠锁的有效性进行检测;
在检测结果为无效的情况下,向内核层发起休眠操作。
在一种实施方式中,在用户包括Linux根文件系统层基础上构建的安卓子系统用户,休眠信息包括第一休眠信息的情况下,方法还包括:
调用安卓子系统的第二电源管理服务,根据安卓子系统用户的应用占用休眠锁的信息,判断安卓子系统用户是否符合休眠条件;
在判断安卓子系统用户符合休眠条件的情况下,调用安卓子系统的第三电源管理服务,通过套接字管道,向第一电源管理服务发送用于发起休眠的第一休眠信息。
在一种实施方式中,在用户包括Linux根文件系统层的普通Linux用户和根用户,休眠信息包括第二休眠信息和第三休眠信息的情况下,方法还包括:
根据普通Linux用户的应用数据和桌面锁定数据,通过进程间通讯协议,发送第二休眠信息;和/或,
根据根用户的系统事件监听服务和系统桌面服务的数据,通过进程间通讯协议,发送第三休眠信息。
在一种实施方式中,休眠管理方法还包括:
调用内核层的休眠管理器,根据预设的关闭顺序,关闭硬件层需要休眠的模块。
在一种实施方式中,休眠管理方法还包括:
在不符合休眠条件的情况下,调用安卓适配层的休眠库,读取唤醒账户信息;
在唤醒账户信息的休眠锁状态为失效的情况下,写入休眠锁唤醒源启用指令。
在一种实施方式中,休眠管理方法还包括:
调用内核层驱动器,获取硬件层设备占用事件和传感器数据;
将硬件层设备占用事件和传感器数据作为设备占用数据;
向第一电源管理服务发送设备占用数据。
第二方面,本公开实施例提供一种休眠管理装置,包括:
判断模块,用于调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;
第一调用模块,用于在符合休眠条件的情况下,调用安卓适配层的休眠库,获取用户的应用在休眠库中持有的休眠锁;
发起模块,用于根据休眠锁,向内核层发起休眠操作。
在一种实施方式中,发起模块还用于:
检测单元,用于对用户应用在休眠库中持有的休眠锁的有效性进行检测;
检测结果处理单元,用于在检测结果为无效的情况下,向内核层发起休眠操作。
在一种实施方式中,在用户包括Linux根文件系统层基础上构建的安卓子系统用户,休眠信息包括第一休眠信息的情况下,装置还包括:
第二调用模块,用于调用安卓子系统的第二电源管理服务,根据安卓子系统用户的应用占用休眠锁的信息,判断安卓子系统用户是否符合休眠条件;
第三调用模块,在判断安卓子系统用户符合休眠条件的情况下,调用安卓子系统的第三电源管理服务,通过套接字管道,向第一电源管理服务发送用于发起休眠的第一休眠信息。
在一种实施方式中,在用户包括Linux根文件系统层的普通Linux用户和根用户,休眠信息包括第二休眠信息和第三休眠信息的情况下,装置还包括:
第二休眠信息发送模块,用于根据普通Linux用户的应用数据和桌面锁定数据,通过进程间通讯协议,发送第二休眠信息;和/或,
第三休眠信息发送模块,用于根据根用户的系统事件监听服务和系统桌面服务的数据,通过进程间通讯协议,发送第三休眠信息。
在一种实施方式中,休眠管理装置还包括:
关闭模块,用于调用内核层的休眠管理器,根据预设的关闭顺序,关闭硬件层需要休眠的模块。
在一种实施方式中,休眠管理装置还包括:
读取模块,用于在不符合休眠条件的情况下,调用安卓适配层的休眠库,读取唤醒账户信息;
写入模块,用于在唤醒账户信息的休眠锁状态为失效的情况下,写入休眠锁唤醒源启用指令。
在一种实施方式中,休眠管理装置还包括:
内核层调用模块,用于调用内核层驱动器,获取硬件层设备占用事件和传感器数据;
占用数据模块,用于将硬件层设备占用事件和传感器数据作为设备占用数据;
占用数据发送模块,用于向第一电源管理服务发送设备占用数据。
第三方面,本公开实施例提供了一种休眠管理装置,该装置包括:存储器和处理器。其中,该该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,使得该处理器执行上述各方面任一种实施方式中的方法。
第四方面,本公开实施例提供了一种计算机可读存储介质,计算机可读存储介质存储计算机程序,当计算机程序在计算机上运行时,上述各方面任一种实施方式中的方法被执行。
上述技术方案中的优点或有益效果至少包括:
能够统一将Linux系统中的根用户、普通用户和安卓子系统中的用户通过电源服务进行休眠管理,从而能够实现Linux系统中的用户的自动休眠,并针对所有用户采用统一的休眠策略,提高整个系统的休眠管理效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本公开进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本公开公开的一些实施方式,而不应将其视为是对本公开范围的限制。
图1为本公开一实施例的休眠管理方法示意图;
图2为本公开另一实施例的休眠管理方法示意图;
图3为本公开一示例的休眠管理方法所应用的系统示意图;
图4为本公开一实施例的休眠管理装置示意图;
图5为本公开另一实施例的休眠管理装置示意图;
图6为本公开又一实施例的休眠管理装置示意图;
图7为本公开又一实施例的休眠管理装置示意图;
图8为本公开又一实施例的休眠管理装置示意图;
图9为本公开又一实施例的休眠管理装置示意图;
图10为本公开又一实施例的休眠管理装置示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本公开的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本公开一实施例的休眠管理方法的流程图。如图1所示,该休眠管理方法可以包括:
步骤S11:调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;
步骤S12:在符合休眠条件的情况下,调用安卓适配层的休眠库,获取用户的应用在休眠库中持有的休眠锁;
步骤S13:根据休眠锁,向内核层发起休眠操作。
本实施例中,Linux根文件系统层的用户,可以包括Linux系统的根用户、普通Linux用户和Android(安卓)子系统用户中的至少一种。
一般情况下,Linux系统的根用户或普通Linux用户,均通过systemd进行休眠。而Android系统的电源管理主要是通过wakelock机制进行管理。在安卓系统的设备中,由Frameworks(框架)层的PowerManager管理,灭屏时发起休眠流程,Android的休眠策略是:如果拒绝让系统休眠,则将拒绝休眠的信息写入休眠锁,比如,可以向/sys/power/wake_lock的地址下写入xxx字符串,xxx字符串即表示设置了一个状态为名为xxx的唤醒源,在wake_unlock中写入xxx字符串表示设置xxx状态为deactive(不激活),在所有唤醒源状态都为deacvite的情况下,系统开始进入休眠。
而在本实施例中,在Linux根文件系统层的用户包含Android子系统用户的情况下,在包含Android子系统的Linux系统中创建电源管理服务(Power Manager),即步骤S11中的第一电源管理服务,取代Linux系统原有的systemd及Android子系统原有的电源管理服务的休眠唤醒策略。在Linux根文件系统层只包含Linux系统的根用户或普通Linux用户的情况下,在Linux系统中创建电源管理服务,取代Linux系统原有的systemd的电源管理服务的休眠唤醒策略。
本实施例中,在符合休眠条件的情况下,调用安卓适配层的休眠库,获取用户的应用在休眠库中持有的休眠锁,即可以包括在Linux所有用户(比如Linux系统的根用户以及普通Linux用户)及Android子系统都符合休眠条件时,调用Android适配层的libsuspend库,按照安卓系统中的autosuspend(自动休眠)流程执行休眠操作,根据休眠锁持有情况进行外接设备和CPU的休眠操作。
本实施例的休眠管理方法执行之前,取消Android子系统和Linux systemd对休眠管理路径/sys/power下面所有节点的访问权限,Linux系统的根用户和普通Linux用户对休眠锁的持有操作,在需要持有休眠锁的情况下,通过dbus(进程间通讯协议)总线向电源管理服务申请。Android子系统的用户对休眠锁的申请,在需要持有休眠锁的情况下,通过Socket(套接字)管道向电源管理服务申请。
在本实施例中,能够统一将Linux系统中的根用户、普通用户和安卓子系统中的用户通过电源服务进行休眠管理,从而能够实现Linux系统中的用户的自动休眠,并针对所有用户采用统一的休眠策略,提高整个系统的休眠管理效率。
在一种实施方式中,根据休眠锁,向内核层发起休眠操作,包括:
对用户应用在休眠库中持有的休眠锁的有效性进行检测;
在检测结果为无效的情况下,向内核层(Kernel)发起休眠操作。
在本实施例中,基于休眠锁(Wake Lock)机制执行休眠操作。若系统中存在有效休眠锁,则拒绝使系统进入休眠状态。在Linux系统的根用户、普通Linux用户、安卓子系统的用户均不存在有效的休眠锁的情况下,可以确定进入休眠状态,向内核层发起休眠操作。内核层可以在接收到发起休眠操作的通知消息后,进一步确定休眠条件。
在一种实施方式中,在用户包括Linux根文件系统层基础上构建的安卓子系统用户,休眠信息包括第一休眠信息的情况下,休眠管理方法还包括:
调用安卓子系统的第二电源管理服务,根据安卓子系统用户的应用占用休眠锁的信息,判断安卓子系统用户是否符合休眠条件;
在判断安卓子系统用户符合休眠条件的情况下,调用安卓子系统的第三电源管理服务,通过套接字管道,向第一电源管理服务发送用于发起休眠的第一休眠信息。
在本实施例中,安卓子系统内部可设置专门针对安卓子系统的用户的电源管理服务。在安卓子系统内部的电源管理服务确定安卓子系统的用户中,不存在持有有效休眠锁的应用的情况下,通过套接字管道,向第一电源管理服务发送关于发起休眠的第一休眠信息。
本实施例中,在安卓子系统内部,仍然按照安卓子系统原有的休眠机制确定休眠。在确定安卓子系统休眠的情况下,发送关于安卓子系统的休眠信息,从而无需改变安卓子系统内部原有设置,减少系统结构的变动。
在一种实施方式中,在用户包括Linux根文件系统层的普通Linux用户和根用户,休眠信息包括第二休眠信息和第三休眠信息的情况下,方法还包括:
根据普通Linux用户的应用数据和桌面锁定数据,通过进程间通讯协议,发送第二休眠信息;和/或,
根据根用户的系统事件监听服务和系统桌面服务的数据,通过进程间通讯协议,发送第三休眠信息。
本实施例中,针对Linux系统的用户中的普通Linux用户,可通过dbus进行休眠信息的发送,即在普通Linux用户的所有应用均可进入休眠状态的情况下,普通Linux用户可进入休眠状态,发送第二休眠信息。
普通Linux用户的所有应用均可进入休眠状态的确定,可不同于安卓子系统用户,由应用根据设定通过dbus生成通知,若存在一个应用需要系统保持不休眠状态,则普通Linux用户不进入休眠状态。
根用户为Linux系统的用户中具有最高权限的用户,可通过监听是否产生拒绝进入休眠状态的事件,确定根用户是否进入休眠状态。如果发生拒绝进入休眠状态的时间,则可通过系统事件监听服务或系统桌面服务等服务生成相关数据,告知当前不进入休眠状态。在不存在拒绝进入休眠状态的事件的情况下,根用户可进入休眠状态,发送第三休眠信息。
在一种实施方式中,休眠管理方法还包括:
调用内核层的休眠管理器,根据预设的关闭顺序,关闭硬件层需要休眠的模块。
在一种具体实施方式中,在休眠执行过程中,可首先尝试关闭如屏幕等一些重要性较低的设备,或者将灯光调暗以进入休眠准备状态。等到达设定时间且仍然未发生拒绝休眠的事件的情况下,可将优先级别相对较高的一些设备进行关闭。
在一种实施方式中,休眠管理方法还包括:
在不符合休眠条件的情况下,调用安卓适配层的休眠库,读取唤醒账户信息;
在唤醒账户信息的休眠锁状态为失效的情况下,写入休眠锁唤醒源启用指令。
在一种实施方式中,如图2所示,休眠管理方法还包括:
步骤S21:调用内核层驱动器,获取硬件层设备占用事件和传感器数据;
步骤S22:将硬件层设备占用事件和传感器数据作为设备占用数据;
步骤S23:向第一电源管理服务发送设备占用数据。
本实施例中,设备占用数据也可以被第一电源管理服务用于进行是否休眠的判断。若某些设备处于占用状态并拒绝休眠,则第一电源管理服务可判定当前系统不进入休眠状态。
比如,在播放音乐过程中,显示屏可以进入暂时熄屏状态。在播放视频的过程中,显示屏被占用,则可根据显示屏的占用状况,拒绝将显示屏设置为熄屏的休眠状态。
在一种示例中,为了适应移动设备的特点,将Android的autosuspend机制移植到Linux系统中,通过电源管理服务实现对Linux系统中的所有用户,包括安卓子系统用户的休眠管理。在一种具体的实现方式中,Linux系统的根用户、普通Linux用户以及安卓子系统用户均通过统一的电源管理服务(powermanager)进行休眠。Linux系统的根用户、普通Linux用户中运行Linux应用。
统一的powermanager主要负责通过dbus与Linux应用进行交互,接收Linux应用的阻止休眠请求时持wake_lock休眠锁,并在应用程序退出或者主动请求解锁时执行wake_unlock解除休眠锁。与Android子系统通过socket管道交互,将Android系统的powermangerService中原本属于电源的HAL(Hardware Abstraction Layer,硬件抽象层)的接口接管到Linux系统端powermanager中。powermanager还可以对下通过libsuspend与kernel交互,完成对/sys/power下面的wake_lock、wake_unlock、state(状态)节点的读写。同时,powermanager获取系统底层事件和传感器数据作为休眠和唤醒的辅助条件。
在一种可能的实现方式中,Android子系统用户的休眠唤醒框架主体与原安卓系统保持不变,需将原来的power HAL替换为与Linux系统下的powermangerService相关接口,以便于在Linux系统下进行统一管理状态。
在本公开另一种具体示例中,如图3所示,Linux系统用户包括Linux根文件系统层的根用户31、普通Linux用户32、Android子系统用户33。根用户31运行有系统事件监听服务、systemd服务,并通过系统事件监听服务、systemd服务发送休眠相关的数据。普通Linux用户32可运行有Linux应用、自由桌面服务(freedesktop),根据应用和自由桌面服务的数据,可确定普通Linux用户是否符合休眠条件。Android子系统用户33可运行有至少一个安卓系统应用,以及安卓子系统的电源管理服务的两个模块:powermanager和powermanagerService。powermanager和powermanager Service可以根据Android子系统用户33上运行的应用的数据,确定Android子系统是否符合休眠条件,具体可通过休眠锁机制确定。
在统一的Linux根文件系统的电源管理服务34确定Linux根文件系统中的所有用户均符合修满条件的情况下,向安卓适配层发起休眠请求,调用休眠库(libsuspend)进行休眠判断。根用户31、普通Linux用户32分别通过dbus与电源管理服务34通信。Android子系统用户33通过socket pipe(套接字管道)与电源管理服务34通信。电源管理服务34可通过/sys/power/*下的唤醒源确定是否存在有效唤醒源,在不存在的情况下,控制硬件层35的各硬件进行顺序休眠。硬件层35可包括调制解调器、电源集成管理电路(Power ManagementIC,PMIC)等。电源管理服务34除了从用户获得休眠判断所需要的数据之外,还通过传感器、灯、按键等硬件驱动通过安卓HAL提供的数据或者硬件设备直接通过/dev/*提供的数据进行综合判断。其中,休眠库、安卓HAL可位于安卓适配层,休眠管理服务、硬件驱动可位于Linux内核层。
需要说明的是,尽管以安卓系统的休眠锁机制作为示例介绍了休眠管理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定休眠机制,只要能够实现Linux系统的用户的统一管理即可。
这样,通过将基于Linux系统的用户与安卓子系统的用户进行统一管理,根据本公开上述实施例的休眠管理方法能够实现整个Linux系统的统一休眠。
图4示出根据本公开一实施例的休眠管理装置的结构框图。如图4所示,该装置可以包括:
判断模块41,用于调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;
第一调用模块42,用于在符合休眠条件的情况下,调用安卓适配层的休眠库,获取用户的应用在休眠库中持有的休眠锁;
发起模块43,用于根据休眠锁,向内核层发起休眠操作。
在一种实施方式中,发起模块还用于:
检测单元,用于对用户应用在休眠库中持有的休眠锁的有效性进行检测;
检测结果处理单元,用于在检测结果为无效的情况下,向内核层发起休眠操作。
在一种实施方式中,在用户包括Linux根文件系统层基础上构建的安卓子系统用户,休眠信息包括第一休眠信息的情况下,如图5所示,休眠管理装置还包括:
第二调用模块51,用于调用安卓子系统的第二电源管理服务,根据安卓子系统用户的应用占用休眠锁的信息,判断安卓子系统用户是否符合休眠条件;
第三调用模块52,在判断安卓子系统用户符合休眠条件的情况下,调用安卓子系统的第三电源管理服务,通过套接字管道,向第一电源管理服务发送用于发起休眠的第一休眠信息。
在一种实施方式中,在用户包括Linux根文件系统层的普通Linux用户和根用户,休眠信息包括第二休眠信息和第三休眠信息的情况下,如图6所示,休眠管理装置还包括:
第二休眠信息发送模块61,用于根据普通Linux用户的应用数据和桌面锁定数据,通过进程间通讯协议,发送第二休眠信息;和/或,
第三休眠信息发送模块62,用于根据根用户的系统事件监听服务和系统桌面服务的数据,通过进程间通讯协议,发送第三休眠信息。
在一种实施方式中,如图7所示,休眠管理装置还包括:
关闭模块71,用于调用内核层的休眠管理器,根据预设的关闭顺序,关闭硬件层需要休眠的模块。
在一种实施方式中,如图8所示,休眠管理装置还包括:
读取模块81,用于在不符合休眠条件的情况下,调用安卓适配层的休眠库,读取唤醒账户信息;
写入模块82,用于在唤醒账户信息的休眠锁状态为失效的情况下,写入休眠锁唤醒源启用指令。
在一种实施方式中,如图9所示,休眠管理装置还包括:
内核层调用模块91,用于调用内核层驱动器,获取硬件层设备占用事件和传感器数据;
占用数据模块92,用于将硬件层设备占用事件和传感器数据作为设备占用数据;
占用数据发送模块93,用于向第一电源管理服务发送设备占用数据。
本公开实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图10示出根据本公开一实施例的休眠管理电子设备的结构框图。如图10所示,该休眠管理电子设备包括:存储器1010和处理器1020,存储器1010内存储有可在处理器1020上运行的计算机程序。处理器1020执行该计算机程序时实现上述实施例中的休眠管理方法。存储器1010和处理器1020的数量可以为一个或多个。
该休眠管理电子设备还包括:
通信接口1030,用于与外界设备进行通信,进行数据交互传输。
如果存储器1010、处理器1020和通信接口1030独立实现,则存储器1010、处理器1020和通信接口1030可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent Interconnect ,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture ,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1010、处理器1020及通信接口1030集成在一块芯片上,则存储器1010、处理器1020及通信接口1030可以通过内部接口完成相互间的通信。
本公开实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本公开实施例中提供的方法。
本公开实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本公开实施例提供的方法。
本公开实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory ,DRAM) 、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本公开的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本公开的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种休眠管理方法,其特征在于,包括:
调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;所述第一电源管理服务不同于Linux系统原有的systemd电源管理服务,以及不同于安卓子系统原有的电源管理服务;
在符合休眠条件的情况下,调用安卓适配层的休眠库,获取所述用户应用在所述休眠库中持有的休眠锁;
根据所述休眠锁,向内核层发起休眠操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述休眠锁,向内核层发起休眠操作,包括:
对所述用户应用在所述休眠库中持有的休眠锁的有效性进行检测;
在检测结果为无效的情况下,向所述内核层发起休眠操作。
3.根据权利要求1所述的方法,其特征在于,在所述用户包括Linux根文件系统层基础上构建的安卓子系统用户,所述休眠信息包括第一休眠信息的情况下,所述方法还包括:
调用安卓子系统的第二电源管理服务,根据所述安卓子系统用户的应用占用休眠锁的信息,判断所述安卓子系统用户是否符合休眠条件;
在判断所述安卓子系统用户符合休眠条件的情况下,调用安卓子系统的第三电源管理服务,通过套接字管道,向所述第一电源管理服务发送用于发起休眠的第一休眠信息。
4.根据权利要求1或2所述的方法,其特征在于,在所述用户包括Linux根文件系统层的普通Linux用户和根用户,所述休眠信息包括第二休眠信息和第三休眠信息的情况下,所述方法还包括:
根据所述普通Linux用户的应用数据和桌面锁定数据,通过进程间通讯协议,发送第二休眠信息;和/或,
根据所述根用户的系统事件监听服务和系统桌面服务的数据,通过进程间通讯协议,发送第三休眠信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用所述内核层的休眠管理器,根据预设的关闭顺序,关闭硬件层需要休眠的模块。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在不符合休眠条件的情况下,调用所述安卓适配层的休眠库,读取唤醒账户信息;
在所述唤醒账户信息的休眠锁状态为失效的情况下,写入休眠锁唤醒源启用指令。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用内核层驱动器,获取硬件层设备占用事件和传感器数据;
将所述硬件层设备占用事件和所述传感器数据作为所述设备占用数据;
向第一电源管理服务发送所述设备占用数据。
8.一种休眠管理装置,其特征在于,包括:
判断模块,用于调用Linux根文件系统层的第一电源管理服务,根据Linux根文件系统层的用户发送的休眠信息以及从Linux内核中读取的设备占用数据,判断是否符合休眠条件;所述第一电源管理服务不同于Linux系统原有的systemd电源管理服务,以及不同于安卓子系统原有的电源管理服务;
第一调用模块,用于在符合休眠条件的情况下,调用安卓适配层的休眠库,获取所述用户的应用在所述休眠库中持有的休眠锁;
发起模块,用于根据所述休眠锁,向内核层发起休眠操作。
9.根据权利要求8所述的装置,其特征在于,所述发起模块还包括:
检测单元,用于对所述用户应用在所述休眠库中持有的休眠锁的有效性进行检测;
检测结果处理单元,用于在检测结果为无效的情况下,向所述内核层发起休眠操作。
10.根据权利要求8所述的装置,其特征在于,在所述用户包括Linux根文件系统层基础上构建的安卓子系统用户,所述休眠信息包括第一休眠信息的情况下,所述装置还包括:
第二调用模块,用于调用安卓子系统的第二电源管理服务,根据所述安卓子系统用户的应用占用休眠锁的信息,判断所述安卓子系统用户是否符合休眠条件;
第三调用模块,在判断所述安卓子系统用户符合休眠条件的情况下,调用安卓子系统的第三电源管理服务,通过套接字管道,向所述第一电源管理服务发送用于发起休眠的第一休眠信息。
11.根据权利要求8或9所述的装置,其特征在于,在所述用户包括Linux根文件系统层的普通Linux用户和根用户,所述休眠信息包括第二休眠信息和第三休眠信息的情况下,所述装置还包括:
第二休眠信息发送模块,用于根据所述普通Linux用户的应用数据和桌面锁定数据,通过进程间通讯协议,发送第二休眠信息;和/或,
第三休眠信息发送模块,用于根据所述根用户的系统事件监听服务和系统桌面服务的数据,通过进程间通讯协议,发送第三休眠信息。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
关闭模块,用于调用所述内核层的休眠管理器,根据预设的关闭顺序,关闭硬件层需要休眠的模块。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
读取模块,用于在不符合休眠条件的情况下,调用所述安卓适配层的休眠库,读取唤醒账户信息;
写入模块,用于在所述唤醒账户信息的休眠锁状态为失效的情况下,写入休眠锁唤醒源启用指令。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
内核层调用模块,用于调用内核层驱动器,获取硬件层设备占用事件和传感器数据;
占用数据模块,用于将所述硬件层设备占用事件和所述传感器数据作为所述设备占用数据;
占用数据发送模块,用于向第一电源管理服务发送所述设备占用数据。
15.一种休眠管理电子设备,其特征在于,包括:处理器和存储器,所述存储器中存储指令,所述指令由处理器加载并执行,以实现如权利要求1至7任一项所述的方法。
16.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111575007.2A CN113961261B (zh) | 2021-12-22 | 2021-12-22 | 休眠管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111575007.2A CN113961261B (zh) | 2021-12-22 | 2021-12-22 | 休眠管理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113961261A CN113961261A (zh) | 2022-01-21 |
CN113961261B true CN113961261B (zh) | 2022-04-19 |
Family
ID=79473539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111575007.2A Active CN113961261B (zh) | 2021-12-22 | 2021-12-22 | 休眠管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961261B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115826731B (zh) * | 2022-10-19 | 2023-07-11 | 科东(广州)软件科技有限公司 | 休眠控制方法及装置、存储介质和计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101893932A (zh) * | 2010-06-22 | 2010-11-24 | 中科方德软件有限公司 | 基于linux系统下的电源管理装置及其管理方法 |
CN103905653A (zh) * | 2014-03-24 | 2014-07-02 | 小米科技有限责任公司 | 移动设备数据业务控制方法及装置 |
CN105744604A (zh) * | 2014-12-09 | 2016-07-06 | 航天信息股份有限公司 | 基于android系统的WIFI模块功耗控制装置及方法 |
CN108650384A (zh) * | 2018-05-15 | 2018-10-12 | Oppo(重庆)智能科技有限公司 | 信息处理方法、装置、移动终端和计算机可读存储介质 |
CN113220105A (zh) * | 2021-03-19 | 2021-08-06 | 珠海全志科技股份有限公司 | 基于Android的电子书及其阅读控制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942020B (zh) * | 2014-03-10 | 2017-02-15 | 北京君正集成电路股份有限公司 | 一种系统休眠状态下的信息显示方法与装置 |
US10185670B2 (en) * | 2015-09-15 | 2019-01-22 | Gatekeeper Ltd. | System and method for securely connecting to a peripheral device |
-
2021
- 2021-12-22 CN CN202111575007.2A patent/CN113961261B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101893932A (zh) * | 2010-06-22 | 2010-11-24 | 中科方德软件有限公司 | 基于linux系统下的电源管理装置及其管理方法 |
CN103905653A (zh) * | 2014-03-24 | 2014-07-02 | 小米科技有限责任公司 | 移动设备数据业务控制方法及装置 |
CN105744604A (zh) * | 2014-12-09 | 2016-07-06 | 航天信息股份有限公司 | 基于android系统的WIFI模块功耗控制装置及方法 |
CN108650384A (zh) * | 2018-05-15 | 2018-10-12 | Oppo(重庆)智能科技有限公司 | 信息处理方法、装置、移动终端和计算机可读存储介质 |
CN113220105A (zh) * | 2021-03-19 | 2021-08-06 | 珠海全志科技股份有限公司 | 基于Android的电子书及其阅读控制方法 |
Non-Patent Citations (3)
Title |
---|
linux电源管理 唤醒,Android4.0中的PowerManager(电源管理--休眠唤醒);回忆的眼泪;《https://blog.csdn.net/weixin_29471541/article/details/116876186》;20210512;第1-3页 * |
基于Android平台的电源管理机制的优化与实现;胡飞;《中国优秀硕士学位论文全文数据库 (信息科技)》;20150415;第I137-11页 * |
基于Linux的低功耗手持设备系统的设计与实现;张国琛;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20110915;第I138-586页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113961261A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4481511B2 (ja) | 情報機器、情報機器の制御方法及び制御方法のプログラム | |
KR101343704B1 (ko) | 공유된 비휘발성 메모리 아키텍쳐 | |
JP5606633B2 (ja) | オペレーティングシステム(os)不在サービス環境においてファームウェアをプロビジョニングする方法 | |
EP3158452B1 (en) | Firmware interface with durable memory storage | |
JP2014197408A (ja) | ロックインジケータを有するマルチスレッドプロセッサ | |
KR20070108060A (ko) | 빠른 부팅 웨이크-업을 실행하는 시스템 | |
JP2010123125A (ja) | プラットフォームの高速リスタートを可能にする方法およびシステム | |
JP2007520777A (ja) | リソースを節約するマルチタスク計算装置を可能にする方法 | |
TWI358635B (en) | Power managing method for a multi-microprocessor s | |
CN113961261B (zh) | 休眠管理方法、装置、电子设备及存储介质 | |
US10628168B2 (en) | Management with respect to a basic input/output system policy | |
US7310725B2 (en) | Common platform pre-boot and run-time firmware services | |
JP2005316599A (ja) | 割込制御装置 | |
US7779239B2 (en) | User opt-in processor feature control capability | |
JP4409681B2 (ja) | 情報処理装置及び情報処理装置のメモリ制御方法 | |
WO2011131003A1 (zh) | 实现手机缓冲存储器机制的系统及手机操作系统加载方法 | |
US20130275791A1 (en) | Method and System for Tracking and Selecting Optimal Power Conserving Modes of a PCD | |
CN112988375A (zh) | 进程管理方法和装置、电子设备 | |
CN110018911B (zh) | 进程管理及进程间通信方法、装置、计算设备及存储介质 | |
JP2014106950A (ja) | 半導体装置及びアクセス制限方法 | |
JP2004326331A (ja) | 不正メモリアクセス検知方法及びそのプログラム | |
US11544412B2 (en) | Protection against unintended content change in DRAM during standby mode | |
US10776214B1 (en) | System protecting data stored on NVDIMM devices after BIOS update | |
WO2007000670A1 (en) | Information updating method, program for the same and information processing unit | |
US7434231B2 (en) | Methods and apparatus to protect a protocol interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220429 Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Patentee after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. Address before: 2005, floor 2, No. 39, West Street, Haidian District, Beijing 100080 Patentee before: Beijing jingling Information System Technology Co.,Ltd. |