用于跟踪唤醒锁定使用的技术的制作方法

文档序号:9713493阅读:195来源:国知局
用于跟踪唤醒锁定使用的技术的制作方法
【技术领域】
[0001]本文所述的实施例通常涉及跟踪唤醒锁定(wakelock)的使用以控制计算设备进入较低功率状态的能力。
【背景技术】
[0002]对于计算设备来说合并功率管理特征以支持在各种功率状态下操作是司空见惯的,各种功率状态均在执行各种任务的特征的可用性和电功率消耗之间取得不同的平衡。特别地,便携式计算设备趋于具有相当复杂的功率管理形式,其中向各种组件提供可从电池得到的有限的电功率是单独可控的。
[0003]对于计算设备可应用于的许多使用,经常可能的是,允许功率管理组件将计算设备置于较低功率状态中。然而,以下情况确实出现:其中可能期望将计算设备维持在较高功率状态,并且因此,可能期望防止功率管理组件将计算设备置于较低功率状态中。通过示例的方式,计算设备可操作成执行运动视频的回放,从而需要不间断地使用足够的处理资源来对运动视频进行解码,并且不间断地使用显示器来视觉呈现运动视频。此外,可能需要这样的资源的这样的不间断地使用,尽管可用电功率的有限供应接近耗尽(例如,尽管计算设备的电池正消耗殆尽)。
[0004]因此,提供函数调用以允许应用例程和/或操作系统的各种部分请求计算设备的功率管理组件避免将计算设备置于较低功率状态中已经变得司空见惯。这已经成为通常被称为请求或“获得” “唤醒锁定”,其中计算设备被“锁定”到较高功率状态中或“保持清醒”,使得它不能进入较低功率状态或“睡眠模式”。各种实现方式包括支持请求唤醒锁定的调用,释放唤醒锁定的调用和/或请求时间受限以使得其在指定时间段的结束处到期的唤醒锁定的调用。
[0005]遗憾的是,提供对应用例程的这样的支持以利用唤醒锁定已经伴随有所谓的“无睡眠唤醒锁定程序错误(bug)”的出现,其中导致唤醒锁定的过度使用的应用例程中的错误和/或其它意外情况出现,从而导致可用电功率的过早耗尽。这些情况有时被称为“意外电池耗尽”,并且导致识别莫名其妙地请求和授予唤醒锁定但从未释放的方式的调试(debug)努力。
[0006]遗憾的是,许多便携式计算设备合并未以促进这样的唤醒锁定程序错误源的快速检测的方式来进行架构的操作系统。各种操作系统确实支持系统日志数据的生成,所述系统日志数据详细描述随着时间的各种事件的发生。各种操作系统还确实支持“转储(dump)”寄存器和各种数据结构的当前状态以提供操作系统的组件的状态的详细视图的能力,包括是否存在早期请求但尚未被释放的唤醒锁定。然而,没有做出任何规定来记录或提供对于识别什么例程或操作系统组件可能已经错误地请求唤醒锁定和/或忽略释放唤醒锁定所必需的数据。
【附图说明】
[0007]图1图示唤醒锁定调试系统的实施例。
[0008]图2图示唤醒锁定调试系统的替代实施例。
[0009]图3图示根据实施例的生成日志数据的示例。
[0010]图4-6均图示根据实施例的促进对唤醒锁定进行调试的示例性图像。
[0011]图7-9均图示唤醒锁定调试系统的实施例的一部分。
[0012 ]图10-12均图示根据实施例的逻辑流程。
[0013]图13图示根据实施例的处理架构。
【具体实施方式】
[0014]各种实施例通常针对生成记录与操作系统的以应用和内核(kernel)级的唤醒锁定相关的事件的日志,并且然后在视觉呈现中时间对准那些事件的图,以使得能够调试唤醒锁定。更具体地,操作系统的应用功率管理器用日志补丁例程来扩增,以增强通常由操作系统生成的系统日志数据中的事件的记录。日志设备驱动器也耦合到操作系统的内核功率管理器以生成记录内核级唤醒锁定事件的补充日志数据。此外,在时间对准的图中视觉呈现在系统日志数据和补充日志数据中记录的唤醒锁定事件和相关的事件,以使得能够查看指示唤醒锁定程序错误的事件之间的关联。
[0015]操作系统通常生成系统日志数据,其中选择的事件的发生贯穿由操作系统被合并到其中的计算设备的处理器组件的操作系统的执行被记录在加时间戳的条目中。经常由计算设备的操作者使得什么事件在被选择以被记录在系统日志数据中的那些之中可变更。更具体地,通常存在其中记录事件的更有限的选择的“正常模式”,以及在其中记录事件的更大的选择的“调试模式”,并且经常有在这样的计算设备的操作者的控制下在这些模式之间动态切换的能力。然而,甚至在调试模式中,通常只不过有存在仍然未决(pending)的唤醒锁定的指示(例如还未被释放的早前请求的唤醒锁定,使得防止进入到较低功率状态中),并且没有哪个(些)应用例程或者多少应用例程请求和/或释放唤醒锁定的指示。什么少量信息被典型地记录在系统日志数据中由应用功率管理器提供。
[0016]在操作系统内,可由应用功率管理器在应用级以及由应用功率管理器与其通信的分离且不同的内核功率管理器在内核级二者处理功率管理。应用功率管理器从应用例程接收调用,该应用例程在应用级请求或者释放唤醒锁定。由应用功率管理器接收的请求或释放应用级唤醒锁定的调用典型地包括识别指示什么应用例程正在发送调用的信息。此外,在多线程处理环境中,应用功率管理器典型地能够确定每个调用从哪个线程接收。应用功率管理器典型地使用这样的信息,该信息识别应用例程和/或线程来识别当接收调用以释放应用级唤醒锁定之一时将释放在应用级的哪个先前请求的唤醒锁定。然而,应用功率管理器典型地不提供这样的信息以供在系统日志数据中记录。为了补救系统日志数据中特性的这种缺乏,应用功率管理器用日志补丁例程来扩增。日志补丁例程将指令序列添加到应用功率管理器,以使应用功率管理器提供关于请求或释放应用级唤醒锁定的每个调用的信息,连同识别什么应用例程和/或线程与那些调用中的每一个相关联的信息。
[0017]应用功率管理器典型地不具有自身直接控制计算设备的当前功率状态(例如将计算设备置于任何特定的较低功率或较高功率状态)的能力。代替地,应用功率管理器将它接收以在应用级请求或释放唤醒锁定的调用聚合成它发送到内核功率管理器以在内核级请求或释放与应用功率管理器相关联的较少数量的唤醒锁定的调用。对内核功率管理器的这些调用典型地缺乏识别在应用级请求或释放唤醒锁定的原始调用所源自的应用和/或线程的信息。经常在从应用功率管理器到内核功率管理器的这些调用中包括的唯一识别信息是作为调用的源的应用功率管理器的指示。
[0018]内核功率管理器在内核级从应用功率管理器以及从操作系统的其它组件和/或从设备驱动器接收请求或释放内核级唤醒锁定的调用。内核功率管理器典型地被配置成不提供或提供与内核级唤醒锁定或相关事件相关的非常少的信息以供记录在系统日志数据中。为了补救关于与内核级唤醒锁定相关的事件的信息的提供的这种完全缺乏,添加日志设备驱动器以生成记录与内核级唤醒锁定相关的事件的补充日志数据,其包括请求或释放内核级唤醒锁定的调用的发生以及什么操作系统组件做出每个调用(包括应用功率管理器)。日志设备驱动器与内核功率管理器通信,以请求它被通知由内核功率管理器接收以请求或释放内核级唤醒锁定的所有调用。日志设备驱动器还对它在补充日志数据中记录的每个这样的事件的指示加时间戳。
[0019]在生成系统日志数据(具有关于应用级唤醒锁定的增强的信息)和补充日志数据之后,调试例程解析二者以提取关于唤醒锁定事件和其它相关事件的信息。调试例程采用与在每个日志中的那些事件相关联的时间戳,以时间对准它们并在显示器上视觉呈现那些事件的时间线的时间对准的图,以使得导致唤醒锁定程序错误的事件之间的相关性能够被识别。调试例程可由唤醒锁定程序错误在其上发生的相同计算设备上的处理器组件来执行,和/或可由分离的调试设备的处理器组件来执行。
[0020]通常参考本文所用的符号和命名法,可在计算机或计算机网络上执行的程序过程方面呈现随后的详细描述的部分。这些过程描述和表示由本领域技术人员用来向本领域其他技术人员最有效地传达其工作的实质。过程在这里并且通常被认为是导致期望结果的操作的自一致的序列。这些操作是需要物理量的物理操纵的操作。通常,虽然不是必要的,但这些量采用能够被存储、传输、组合、比较和以其它方式操纵的电、磁或光信号的形式。将这些信号称为位、值、元素、符号、字符、术语、数字等等有时证明是方便的,主要由于共同使用的原因。然而,应当指出的是:这些和类似术语中的全部将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。
[0021]此外,这些操纵经常明确地指代,诸如添加或比较,这通常与由人类操作者执行的精神操作相关联。然而,在本文所述的形成一个或多个实施例的部分的任何操作中,没有任何人类操作者的这样的能力是必要的,或在大多数情况下是期望的。相反,这些操作是机器操作。用于执行各种实施例的操作的有用机器包括由根据本文教导来编写的存储在其内的计算机程序选择性地激活或配置的通用数字计算机,和/或包括为了所需目的而专门构造的装置。各种实施例还涉及用于执行这些操作的装置或系统。这些装置可被专门构造以用于所需目的,或者可包括通用计算机。用于各种各样的这些机器的所需的结构将从给出的描述中显而易见。
[0022]现在对附图做出参考,其中相同的附图标记在全文中用于指代相同的元件。在下面的描述中,为了解释的目的,阐述许多具体的细节,以便提供其透彻理解。然而,可能显而易见的是:可在没有这些具体细节的情况下实践新颖的实施例。在其它实例中,以框图形式示出公知的结构和设备,以便促进其描述。意图是覆盖在权利要求范围内的所有修改、等同物和替代方案。
[0023]图1是唤醒锁定调试系统1000的实施例的框图,唤醒锁定调试系统1000合并服务器100、计算设备300和调试设备500中的一个或多个。这些计算设备100、300和500中的每一个可能是任何的各种各样类型的计算设备,所述各种类型的计算设备包括而不限于:台式计算机系统、数据输入终端、膝上型计算机、上网本计算机、平板计算机、手持式个人数字助理、智能电话、数字相机、合并到衣物中的体戴计算设备、集成到车辆(例如汽车、自行车、轮椅等)中的计算设备、服务器,服务器集群、服务器场等。
[0024]如所描绘的,这些计算设备100、300和500的子集可经由网络999交换信号,该信号与由计算设备300上执行的一个或多个例程请求的唤醒锁定的调试相关联。然而,这些计算设备中的一个或多个可经由网络999彼此和/或与再另外的计算设备(未示出)交换与这样的调试完全无关的其它数据。在各种实施例中,网络999可以是可能限于在单个建筑物或其它相对有限的区域内延伸的单个网络、可能延伸相当大的距离的互连的网络的组合,和/或可包括因特网。因此,网络999可基于可通过其交换信号的任何的各种各样的通信技术(或组合),包括而不限于:使用电和/或光导线缆的有线技术,以及使用红外线、射频或其它形式的无线传输的无线技术。
[0025]在各种实施例中,计算设备300合并处理器组件350、时钟351、储存器360和将计算设备300到耦合网络999的接口 390中的一个或多个。储存器360存储操作系统340、设备驱动器310、系统数据330、应用例程340、日志补丁例程177、日志设备驱动器171、系统日志数据337和补充日志数据331中的一个或多个。操作系统340、设备驱动器310、应用例程370、日志补丁例程177和日志设备驱动器171中的每一个合并指令序列,指令序列在其作为计算设备300的主处理器组件的角色中可在处理器组件350上操作,以实现执行各种功能的逻辑。
[0026]在执行操作系统340和设备驱动器310时,处理器组件350还对执行应用例程370提供各种形式的支持。更具体地,处理器组件350使得应用编程接口(API)可用,应用编程接口使得能够在应用例程370的执行期间进行各种函数调用以提供操作环境,在所述操作环境中可运行应用例程370以执行应用例程370被配置用于的任何功能。每个应用例程370可以是任何的各种各样类型的应用级例程,所述应用级例程被选择以供处理器组件350在操作系统340的支持下在计算设备300上运行以执行任何的各种各样的个人和/或专业目的,包括字处理器、网站查看器、照片编辑器、会议日程管理、CAD/CAM等。还使处理器组件350通过计算设备300的组件管理电功率的消耗,并通过使计算设备300在各种较低功率和较高功率状态之间转变来这样做。如本领域技术人员所熟悉的,在至少一些较低功率状态期间,可以各种方式降低计算设备300的功能性,包括从计算设备300的各种组件撤回电功率和/或降低时钟速度。
[0027]请求和释放唤醒锁定的调用在至少由操作系统340向应用例程370提供的可调用函数之中。如先前所讨论的,唤醒锁定的请求是对操作系统340避免将计算设备300转变成至少一些形式的较低功率模式以使得一个或多个应用例程370能够继续利用由计算设备300提供的功能性的更充分水平的请求。应用例程370中的一个或多个可向操作系统340发送调用,以至少部分地基于由应用例程370执行的功能、由于任何的各种各样的原因而请求唤醒锁定。通过示例的方式,应用例程370之一可执行经由网络999从另一个设备接收的数据的实时监视,使得由处理器组件350的降低的时钟速度或接口 390的降低的功能性表征的较低功率模式可禁用应用例程370执行该功能的能力。通过另一个示例的方式,应用例程370之一可执行储存器360内存储的运动视频的解码
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1