CN105474125B - 用于跟踪唤醒锁定使用的技术 - Google Patents

用于跟踪唤醒锁定使用的技术 Download PDF

Info

Publication number
CN105474125B
CN105474125B CN201380079156.7A CN201380079156A CN105474125B CN 105474125 B CN105474125 B CN 105474125B CN 201380079156 A CN201380079156 A CN 201380079156A CN 105474125 B CN105474125 B CN 105474125B
Authority
CN
China
Prior art keywords
locking
wake
calling
component
data
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
Application number
CN201380079156.7A
Other languages
English (en)
Other versions
CN105474125A (zh
Inventor
M.Y.林
R.P.奈特
G.乌帕亚亚
N.沙马
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN105474125A publication Critical patent/CN105474125A/zh
Application granted granted Critical
Publication of CN105474125B publication Critical patent/CN105474125B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)

Abstract

各种实施例通常针对生成记录与在应用和内核级的唤醒锁定相关的事件的日志,并且然后在视觉呈现中时间对准那些事件的图以使得能够调试唤醒锁定。一种调试唤醒锁定的装置包括:处理器组件;捕获组件,拦截与应用级唤醒锁定相关联的调用,拦截的调用由操作系统的应用功率管理器从应用例程接收;以及中继组件,与应用功率管理器合作以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示,系统日志生成器生成系统日志数据,所述系统日志数据包括与通过处理器组件的操作系统的执行相关联的事件的指示以及拦截的调用的指示。其它实施例被描述和要求保护。

Description

用于跟踪唤醒锁定使用的技术
技术领域
本文所述的实施例通常涉及跟踪唤醒锁定(wakelock)的使用以控制计算设备进入较低功率状态的能力。
背景技术
对于计算设备来说合并功率管理特征以支持在各种功率状态下操作是司空见惯的,各种功率状态均在执行各种任务的特征的可用性和电功率消耗之间取得不同的平衡。特别地,便携式计算设备趋于具有相当复杂的功率管理形式,其中向各种组件提供可从电池得到的有限的电功率是单独可控的。
对于计算设备可应用于的许多使用,经常可能的是,允许功率管理组件将计算设备置于较低功率状态中。然而,以下情况确实出现:其中可能期望将计算设备维持在较高功率状态,并且因此,可能期望防止功率管理组件将计算设备置于较低功率状态中。通过示例的方式,计算设备可操作成执行运动视频的回放,从而需要不间断地使用足够的处理资源来对运动视频进行解码,并且不间断地使用显示器来视觉呈现运动视频。此外,可能需要这样的资源的这样的不间断地使用,尽管可用电功率的有限供应接近耗尽(例如,尽管计算设备的电池正消耗殆尽)。
因此,提供函数调用以允许应用例程和/或操作系统的各种部分请求计算设备的功率管理组件避免将计算设备置于较低功率状态中已经变得司空见惯。这已经成为通常被称为请求或“获得”“唤醒锁定”,其中计算设备被“锁定”到较高功率状态中或“保持清醒”,使得它不能进入较低功率状态或“睡眠模式”。各种实现方式包括支持请求唤醒锁定的调用,释放唤醒锁定的调用和/或请求时间受限以使得其在指定时间段的结束处到期的唤醒锁定的调用。
遗憾的是,提供对应用例程的这样的支持以利用唤醒锁定已经伴随有所谓的“无睡眠唤醒锁定程序错误(bug)”的出现,其中导致唤醒锁定的过度使用的应用例程中的错误和/或其它意外情况出现,从而导致可用电功率的过早耗尽。这些情况有时被称为“意外电池耗尽”,并且导致识别莫名其妙地请求和授予唤醒锁定但从未释放的方式的调试(debug)努力。
遗憾的是,许多便携式计算设备合并未以促进这样的唤醒锁定程序错误源的快速检测的方式来进行架构的操作系统。各种操作系统确实支持系统日志数据的生成,所述系统日志数据详细描述随着时间的各种事件的发生。各种操作系统还确实支持“转储(dump)”寄存器和各种数据结构的当前状态以提供操作系统的组件的状态的详细视图的能力,包括是否存在早期请求但尚未被释放的唤醒锁定。然而,没有做出任何规定来记录或提供对于识别什么例程或操作系统组件可能已经错误地请求唤醒锁定和/或忽略释放唤醒锁定所必需的数据。
附图说明
图1图示唤醒锁定调试系统的实施例。
图2图示唤醒锁定调试系统的替代实施例。
图3图示根据实施例的生成日志数据的示例。
图4-6均图示根据实施例的促进对唤醒锁定进行调试的示例性图像。
图7-9均图示唤醒锁定调试系统的实施例的一部分。
图10-12均图示根据实施例的逻辑流程。
图13图示根据实施例的处理架构。
具体实施方式
各种实施例通常针对生成记录与操作系统的以应用和内核(kernel)级的唤醒锁定相关的事件的日志,并且然后在视觉呈现中时间对准那些事件的图,以使得能够调试唤醒锁定。更具体地,操作系统的应用功率管理器用日志补丁例程来扩增,以增强通常由操作系统生成的系统日志数据中的事件的记录。日志设备驱动器也耦合到操作系统的内核功率管理器以生成记录内核级唤醒锁定事件的补充日志数据。此外,在时间对准的图中视觉呈现在系统日志数据和补充日志数据中记录的唤醒锁定事件和相关的事件,以使得能够查看指示唤醒锁定程序错误的事件之间的关联。
操作系统通常生成系统日志数据,其中选择的事件的发生贯穿由操作系统被合并到其中的计算设备的处理器组件的操作系统的执行被记录在加时间戳的条目中。经常由计算设备的操作者使得什么事件在被选择以被记录在系统日志数据中的那些之中可变更。更具体地,通常存在其中记录事件的更有限的选择的“正常模式”,以及在其中记录事件的更大的选择的“调试模式”,并且经常有在这样的计算设备的操作者的控制下在这些模式之间动态切换的能力。然而,甚至在调试模式中,通常只不过有存在仍然未决(pending)的唤醒锁定的指示(例如还未被释放的早前请求的唤醒锁定,使得防止进入到较低功率状态中),并且没有哪个(些)应用例程或者多少应用例程请求和/或释放唤醒锁定的指示。什么少量信息被典型地记录在系统日志数据中由应用功率管理器提供。
在操作系统内,可由应用功率管理器在应用级以及由应用功率管理器与其通信的分离且不同的内核功率管理器在内核级二者处理功率管理。应用功率管理器从应用例程接收调用,该应用例程在应用级请求或者释放唤醒锁定。由应用功率管理器接收的请求或释放应用级唤醒锁定的调用典型地包括识别指示什么应用例程正在发送调用的信息。此外,在多线程处理环境中,应用功率管理器典型地能够确定每个调用从哪个线程接收。应用功率管理器典型地使用这样的信息,该信息识别应用例程和/或线程来识别当接收调用以释放应用级唤醒锁定之一时将释放在应用级的哪个先前请求的唤醒锁定。然而,应用功率管理器典型地不提供这样的信息以供在系统日志数据中记录。为了补救系统日志数据中特性的这种缺乏,应用功率管理器用日志补丁例程来扩增。日志补丁例程将指令序列添加到应用功率管理器,以使应用功率管理器提供关于请求或释放应用级唤醒锁定的每个调用的信息,连同识别什么应用例程和/或线程与那些调用中的每一个相关联的信息。
应用功率管理器典型地不具有自身直接控制计算设备的当前功率状态(例如将计算设备置于任何特定的较低功率或较高功率状态)的能力。代替地,应用功率管理器将它接收以在应用级请求或释放唤醒锁定的调用聚合成它发送到内核功率管理器以在内核级请求或释放与应用功率管理器相关联的较少数量的唤醒锁定的调用。对内核功率管理器的这些调用典型地缺乏识别在应用级请求或释放唤醒锁定的原始调用所源自的应用和/或线程的信息。经常在从应用功率管理器到内核功率管理器的这些调用中包括的唯一识别信息是作为调用的源的应用功率管理器的指示。
内核功率管理器在内核级从应用功率管理器以及从操作系统的其它组件和/或从设备驱动器接收请求或释放内核级唤醒锁定的调用。内核功率管理器典型地被配置成不提供或提供与内核级唤醒锁定或相关事件相关的非常少的信息以供记录在系统日志数据中。为了补救关于与内核级唤醒锁定相关的事件的信息的提供的这种完全缺乏,添加日志设备驱动器以生成记录与内核级唤醒锁定相关的事件的补充日志数据,其包括请求或释放内核级唤醒锁定的调用的发生以及什么操作系统组件做出每个调用(包括应用功率管理器)。日志设备驱动器与内核功率管理器通信,以请求它被通知由内核功率管理器接收以请求或释放内核级唤醒锁定的所有调用。日志设备驱动器还对它在补充日志数据中记录的每个这样的事件的指示加时间戳。
在生成系统日志数据(具有关于应用级唤醒锁定的增强的信息)和补充日志数据之后,调试例程解析二者以提取关于唤醒锁定事件和其它相关事件的信息。调试例程采用与在每个日志中的那些事件相关联的时间戳,以时间对准它们并在显示器上视觉呈现那些事件的时间线的时间对准的图,以使得导致唤醒锁定程序错误的事件之间的相关性能够被识别。调试例程可由唤醒锁定程序错误在其上发生的相同计算设备上的处理器组件来执行,和/或可由分离的调试设备的处理器组件来执行。
通常参考本文所用的符号和命名法,可在计算机或计算机网络上执行的程序过程方面呈现随后的详细描述的部分。这些过程描述和表示由本领域技术人员用来向本领域其他技术人员最有效地传达其工作的实质。过程在这里并且通常被认为是导致期望结果的操作的自一致的序列。这些操作是需要物理量的物理操纵的操作。通常,虽然不是必要的,但这些量采用能够被存储、传输、组合、比较和以其它方式操纵的电、磁或光信号的形式。将这些信号称为位、值、元素、符号、字符、术语、数字等等有时证明是方便的,主要由于共同使用的原因。然而,应当指出的是:这些和类似术语中的全部将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。
此外,这些操纵经常明确地指代,诸如添加或比较,这通常与由人类操作者执行的精神操作相关联。然而,在本文所述的形成一个或多个实施例的部分的任何操作中,没有任何人类操作者的这样的能力是必要的,或在大多数情况下是期望的。相反,这些操作是机器操作。用于执行各种实施例的操作的有用机器包括由根据本文教导来编写的存储在其内的计算机程序选择性地激活或配置的通用数字计算机,和/或包括为了所需目的而专门构造的装置。各种实施例还涉及用于执行这些操作的装置或系统。这些装置可被专门构造以用于所需目的,或者可包括通用计算机。用于各种各样的这些机器的所需的结构将从给出的描述中显而易见。
现在对附图做出参考,其中相同的附图标记在全文中用于指代相同的元件。在下面的描述中,为了解释的目的,阐述许多具体的细节,以便提供其透彻理解。然而,可能显而易见的是:可在没有这些具体细节的情况下实践新颖的实施例。在其它实例中,以框图形式示出公知的结构和设备,以便促进其描述。意图是覆盖在权利要求范围内的所有修改、等同物和替代方案。
图1是唤醒锁定调试系统1000的实施例的框图,唤醒锁定调试系统1000合并服务器100、计算设备300和调试设备500中的一个或多个。这些计算设备100、300和500中的每一个可能是任何的各种各样类型的计算设备,所述各种类型的计算设备包括而不限于:台式计算机系统、数据输入终端、膝上型计算机、上网本计算机、平板计算机、手持式个人数字助理、智能电话、数字相机、合并到衣物中的体戴计算设备、集成到车辆(例如汽车、自行车、轮椅等)中的计算设备、服务器,服务器集群、服务器场等。
如所描绘的,这些计算设备100、300和500的子集可经由网络999交换信号,该信号与由计算设备300上执行的一个或多个例程请求的唤醒锁定的调试相关联。然而,这些计算设备中的一个或多个可经由网络999彼此和/或与再另外的计算设备(未示出)交换与这样的调试完全无关的其它数据。在各种实施例中,网络999可以是可能限于在单个建筑物或其它相对有限的区域内延伸的单个网络、可能延伸相当大的距离的互连的网络的组合,和/或可包括因特网。因此,网络999可基于可通过其交换信号的任何的各种各样的通信技术(或组合),包括而不限于:使用电和/或光导线缆的有线技术,以及使用红外线、射频或其它形式的无线传输的无线技术。
在各种实施例中,计算设备300合并处理器组件350、时钟351、储存器360和将计算设备300到耦合网络999的接口390中的一个或多个。储存器360存储操作系统340、设备驱动器310、系统数据330、应用例程340、日志补丁例程177、日志设备驱动器171、系统日志数据337和补充日志数据331中的一个或多个。操作系统340、设备驱动器310、应用例程370、日志补丁例程177和日志设备驱动器171中的每一个合并指令序列,指令序列在其作为计算设备300的主处理器组件的角色中可在处理器组件350上操作,以实现执行各种功能的逻辑。
在执行操作系统340和设备驱动器310时,处理器组件350还对执行应用例程370提供各种形式的支持。更具体地,处理器组件350使得应用编程接口(API)可用,应用编程接口使得能够在应用例程370的执行期间进行各种函数调用以提供操作环境,在所述操作环境中可运行应用例程370以执行应用例程370被配置用于的任何功能。每个应用例程370可以是任何的各种各样类型的应用级例程,所述应用级例程被选择以供处理器组件350在操作系统340的支持下在计算设备300上运行以执行任何的各种各样的个人和/或专业目的,包括字处理器、网站查看器、照片编辑器、会议日程管理、CAD/CAM等。还使处理器组件350通过计算设备300的组件管理电功率的消耗,并通过使计算设备300在各种较低功率和较高功率状态之间转变来这样做。如本领域技术人员所熟悉的,在至少一些较低功率状态期间,可以各种方式降低计算设备300的功能性,包括从计算设备300的各种组件撤回电功率和/或降低时钟速度。
请求和释放唤醒锁定的调用在至少由操作系统340向应用例程370提供的可调用函数之中。如先前所讨论的,唤醒锁定的请求是对操作系统340避免将计算设备300转变成至少一些形式的较低功率模式以使得一个或多个应用例程370能够继续利用由计算设备300提供的功能性的更充分水平的请求。应用例程370中的一个或多个可向操作系统340发送调用,以至少部分地基于由应用例程370执行的功能、由于任何的各种各样的原因而请求唤醒锁定。通过示例的方式,应用例程370之一可执行经由网络999从另一个设备接收的数据的实时监视,使得由处理器组件350的降低的时钟速度或接口390的降低的功能性表征的较低功率模式可禁用应用例程370执行该功能的能力。通过另一个示例的方式,应用例程370之一可执行储存器360内存储的运动视频的解码和回放,使得通过从耦合到计算设备300的显示器撤回功率或通过降低处理器组件350的时钟速度表征的较低功率模式可中断该应用例程370执行任一功能的能力。
图3描绘用于使用和调试唤醒锁定的计算设备300的组件的操作的实施例。如所描绘的,操作系统340可合并管理应用级唤醒锁定的应用功率管理器347和管理包括与应用功率管理器347相关联的内核级唤醒锁定的内核级唤醒锁定的内核功率管理器341二者。操作系统340可还合并系统日志生成器344以生成系统日志数据337,并且可另外合并系统监视器345以监视计算设备300的操作的各种参数以供记录在系统日志数据337中。
在应用例程370之一的正常执行期间,其中应用例程370之一需要唤醒锁定,应用例程370之一向应用功率管理器347发送请求唤醒锁定的调用。所使用的调用是由应用功率管理器347提供以供应用例程370使用的API的函数调用。调用包括识别信息,该识别信息将进行调用的应用例程370之一识别为请求唤醒锁定并且与该唤醒锁定相关联的例程。识别信息可包括直接由应用例程370提供作为调用的参数的应用例程370之一的标识符,和/或从其接收调用并且在其上由处理器组件350执行应用例程370中的那一个应用例程的一部分的线程的标识符。操作系统340可在系统数据330内维持映射数据,所述映射数据将调用可接收自的线程的标识符与在那些线程上执行的应用例程370(和其他例程)中的特定一些相关。系统数据330包含操作系统340的正常操作所需的各种数据片,并且可存储在储存器360内的位置中,对储存器360的访问被极大地限制以防止意外或恶意更改。
响应于接收对于唤醒锁定的请求,应用功率管理器347使应用级唤醒锁定实例化,并且同样地,将其与请求它的应用例程370之一相关联。在这样做时,应用功率管理器347可创建在系统数据330内维持的唤醒锁定数据中的条目,其将所请求的应用唤醒锁定与请求它的应用例程370之一相关并包括应用唤醒锁定当前未决的指示。在应用级唤醒锁定的实例化的情况下,应用级唤醒锁定然后是“活动的”或“未决的”,并且甚至存在一个未决的唤醒锁定防止计算设备300转变成较低功率状态的事实。为了允许计算设备300转变到较低功率状态,必须首先释放活动或未决的任何和所有唤醒锁定。在接收随后的调用以释放与应用例程370之一相关联的唤醒锁定时,该随后的调用的识别信息用于识别要释放哪个应用唤醒锁定,并且可用该唤醒锁定不再未决的指示清除或标记唤醒锁定中的条目。因此,释放未决的唤醒锁定的调用导致该唤醒锁定不再活动,使得不再能够防止计算设备转变成较低功率状态,虽然可能存在仍然可防止转变成较低功率状态的仍然未决的一个或多个其它唤醒锁定。如先前所讨论的,每当任何应用级唤醒锁定未决时,应用功率管理器347将所有未决的应用级唤醒锁定聚合成内核功率管理器341的它请求的较少数量的内核级唤醒锁定。换句话说,只要存在任何未决的应用级唤醒锁定,应用功率管理器就与内核功率管理器通信,以使与应用功率管理器347相关联的有限数量的内核级唤醒锁定也未决。在一些实施例中,可能仅存在与应用功率管理器347相关联的一个内核级唤醒锁定。
因此,如果在当没有任何应用级唤醒锁定已经未决时由应用功率管理器347接收针对唤醒锁定的请求,则应用功率管理器347用针对与应用功率管理器347相关联的内核级唤醒锁定的请求发信号通知内核功率管理器341。否则,如果在当至少一个应用级唤醒锁定已经未决时由应用功率管理器347接收对唤醒锁定的请求,则应用功率管理器347可不再次用针对与应用功率管理器347相关联的内核级唤醒锁定的请求发信号通知内核功率管理器341,因为内核级唤醒锁定应当已经未决。只有当不再存在任何未决的应用唤醒锁定(例如已经释放曾经未决的所有应用级唤醒锁定)时,应用功率管理器347才向内核功率管理器341发送调用,以释放与应用功率管理器347相关联的内核级唤醒锁定。
从应用功率管理器347到内核功率管理器341以请求或释放与应用功率管理器341相关联的内核级唤醒锁定的调用包括识别信息,该识别信息将应用功率管理器341识别为调用的源。该相同调用机制也可由操作系统340的其它内核级组件和/或由设备驱动器310使用,以直接请求内核级唤醒锁定或释放它们。不是不象与由应用功率管理器347接收的唤醒锁定相关的调用,在与由内核功率管理器341接收的唤醒锁定相关的至少一些调用中的识别信息可包括:由发送调用的任何物作为调用的参数所提供的标识符,和/或从其接收调用的线程或操作系统过程的标识符。系统数据330的映射信息可由内核功率管理器341用于将线程或操作系统过程的标识符与应用功率管理器347、操作系统340的内核级组件、或者设备驱动器310之一相关。然而,在一些实施例中,提供这样的信息的这样的调用的仅一个可以是来自应用功率管理器347的调用,并且那些可能仅仅将应用功率管理器347识别为调用的源。内核功率管理器341还可做出和清除系统数据330的唤醒锁定数据中的条目,作为跟踪哪些内核级唤醒锁定当前未决及其与请求它们的无论什么操作系统组件或设备驱动器310的关联的机制。如先前所讨论的,内核功率管理器341可能是操作系统340的部分,其通过使计算设备300在各种较低和/或较高功率状态之间转变而至少作用于未决的唤醒锁定的存在或不存在。
应当指出的是:用于至少请求唤醒锁定的调用可合并一个或多个指示器标志作为参数,以指示所请求的唤醒锁定中期望的特定特征。通过示例的方式,请求唤醒锁定的调用可指定唤醒锁定限于针对被置于较低功率状态而锁定计算设备300的特定资源或组件(例如显示器、特定的存储介质设备等)。还应当指出的是:各种调试标志或消息可被合并到与唤醒锁定相关的调用中,以提供应用例程的一部分的状态的某个指示和/或应用例程的什么部分需要唤醒锁定的某个指示。这样的调试标志或消息的这样的合并可作为这样的调用中传送的参数。应当进一步指出的是:至少内核级唤醒锁定可被请求以成为自到期(self-expiring)的唤醒锁定,其在选择的时间段已经过去之后、由于响应于被请求而被实例化而自动地停止未决。这样的选择的时间段可被指定为请求唤醒锁定的调用的参数,或者可能是预定的时间段(例如可能通过将不同的时间段指定为参数而被覆盖的默认时间段)。
在操作系统340的正常执行期间,系统日志生成器344循环地将条目添加到记录事件的所选集的发生的系统日志数据337。在所选集中可能是在计算设备300的功率状态之间的改变的发生、系统错误的发生、尝试对储存器360的特定部分(例如其中存储系统数据330的部分)的不适当访问的发生等。系统监视器345可监视计算设备300的操作的各种方面(例如其当前功率状态),以给系统日志生成器344供应它在系统日志数据337中记录的信息中的至少一些。系统日志生成器344也可例行地与时钟351通信,以获得当前时间,以供在对其添加到系统日志数据337中的条目加时间戳中使用。
如先前所讨论的,提供对唤醒锁定的支持可由唤醒锁定程序错误伴随,在唤醒锁定程序错误中唤醒锁定被错误地维持得长得足以导致计算设备300的诸如电池(未具体示出)之类的有限的电功率源的耗尽。如先前也讨论过的,由操作系统提供的用于调试唤醒锁定程序错误的典型支持是在系统日志数据中仅仅包括唤醒锁定是否未决的指示,而没有哪个应用例程、操作系统组件或设备驱动器具有未决的唤醒锁定的指示。
然而,如图3中所描绘,应用功率管理器347被扩增有日志补丁例程177以克服系统日志数据337中信息的这种缺乏。在一些实施例中,日志补丁例程177可链接(动态或静态地)到应用功率管理器347(例如日志补丁例程177可实现替代另一个库的可调用函数的可调用函数库),以经由调用机制耦合它们。在其它实施例中,日志补丁例程177可在编译之前被合并到应用功率管理器347中(例如可组合二者的指令序列以经由编译有效地创建单个组合例程),以更彻底地耦合它们。本领域技术人员可以想到再其他的扩增机制。
日志补丁例程177合并指令序列,所述指令序列在被添加到应用功率管理器347的指令序列时向系统日志生成器344提供附加的应用级唤醒锁定信息以供记录为系统日志数据337中的附加数据334。具体地,日志补丁例程177捕获由应用功率管理器347从应用例程370接收的调用,以请求或释放唤醒锁定。日志补丁例程177然后与应用功率管理器347合作(例如使用已在应用功率管理器347和系统日志生成器344之间就位的通信),以向系统日志生成器344提供那些调用中的每一个的指示以使得系统日志生成器344能够将它们记录为附加数据334的部分。这些指示可包括识别信息,该识别信息识别如那些调用中包括的参数中所指示的和/或如源自指代系统数据330内维持的映射数据的进行那些调用的应用例程370中的每一个。另外,可由处理器组件350通过执行日志补丁例程177使应用功率管理器347另外向系统日志生成器344提供由应用功率管理器347向内核功率管理器341做出的每个调用的指示以供记录为附加数据334的一部分。与在系统日志数据337中做出的其它条目一样,也对组成附加数据334的附加条目加时间戳。
此外,也如图3中所描绘,日志设备驱动器171被添加到经由至少部分地由内核功率管理器341提供的驱动器编程接口(DPI)与内核功率管理器341通信的设备驱动器310的集以支持来自设备驱动器(例如设备驱动器310)的唤醒锁定调用。至少部分地由内核功率管理器341提供的DPI可包括对回调(callback)机制的支持,至少关于唤醒锁定的由内核功率管理器341接收的调用可通过所述回调机制而被重发给设备驱动器。日志设备驱动器171合并指令序列,该指令序列在由处理器组件350执行时向内核功率管理器341发送调用,以请求恰恰这样的机制的调入(invoke),使得由内核功率管理器341接收以请求或释放唤醒锁定的每个调用被中继到日志设备驱动器171。进而,日志设备驱动器171分析中继给它的唤醒锁定调用,以生成具有指示那些调用中每一个的发生的条目的补充日志数据331。这些指示可包括识别信息,该识别信息识别如那些调用中包括的参数中所指示的和/或如可从指代系统数据330内维持的映射数据导出的进行那些调用的设备驱动器310中的每一个。与由系统日志生成器344做出的条目一样,在补充日志数据331中做出的条目由日志设备驱动器171加时间戳。在这样做时,日志设备驱动器171可依赖于时钟351,以提供当前时间,正如系统日志生成器344所做的一样。
用附加数据334的条目扩增系统日志数据337和/或生成补充日志数据331可由启用或者禁用“调试模式”的相同的模式设置选择性地触发,“调试模式”导致在系统日志数据337中包括记录较大事件集的条目。如先前所讨论的,可提供支持以用于在计算设备300的操作者的控制下切换到调试模式中和切换出调试模式。因此,在实现日志补丁例程177和/或日志设备驱动器171的功能性之前,操作系统340可在一些时间内由处理器组件350执行,使得一个或多个应用级或内核级唤醒锁定可能已经在适当位置。在一些实施例中,日志补丁例程177在被实现时可使应用功率管理器347向系统日志生成器344提供所有应用级唤醒锁定已经未决的指示以供记录为附加数据334的一部分。可替代地或另外,日志设备驱动器171在被实现时可请求关于已经未决的任何内核级唤醒锁定的内核功率管理器的信息,并且可在补充记录数据331中记录这样的信息。此外,至少日志补丁例程177可使应用功率管理器347检索系统数据330的映射数据中的至少一些,并将其提供给系统日志生成器344以供记录为附加数据334的一部分。
返回到图1,计算设备300可经由网络999和/或通过另一个机制(例如通过使用可移除存储介质)从服务器100接收日志补丁例程171和日志设备驱动器177。可替代地,并且虽然未具体示出,计算设备300可从调试设备500接收日志补丁例程171和日志设备驱动器177,如果存在的话。此外,给定日志补丁例程171可与应用功率管理器347被编译在一起,使得它们可能是集成的,计算设备300可通过接收其中集成有日志补丁例程171的应用功率管理器347的版本来接收日志补丁例程171。
在各种实施例中,调试设备500(如果存在)合并处理器组件550、储存器560、控制520、显示器580和接口590中的一个或多个,以将调试设备500耦合到网络999。储存器560存储系统日志数据337、补充日志数据331、对准的跟踪数据534和调试例程570。调试例程570合并指令序列,该指令序列在其作为远程计算设备500的主处理器组件的角色中可在处理器组件550上操作,以实现执行各种功能的逻辑。
在执行调试例程570时,处理器组件550经由网络999或者经由另一个机制(例如通过使用可移除存储介质)从计算设备300接收系统日志数据337和补充日志数据331。处理器组件550解析系统日志数据337(其中包括附加数据334)和补充日志数据331中的每一个,以提取与唤醒锁定相关联的事件或其它信息的所有指示以及任何映射数据。处理器组件550也可提取关于计算设备300的各种组件的活动的级或类型的信息(例如处理器组件350的利用级和/或时钟速度,通过接口390的数据流的速率,从存储设备的可移除介质的数据检索的速率等)。处理器组件550可利用包括在系统日志数据337或补充日志数据331中的任何映射数据,以将有关于唤醒锁定的条目中的识别信息与应用例程370和/或操作系统340的组件中特定的一些相关。处理器组件550通过其时间戳将传达这些事件的指示的条目时间上相关,并且将它们存储为对准的跟踪数据534。
处理器组件550随后检索对准的跟踪数据534的时间对准的条目的各种组合,并在显示器580上将它们视觉呈现为在共同时间段内发生的事件的时间线的时间对准图。处理器组件550可监视控制520以由调试设备500的操作者接收来自控制520的操作的输入,以选择将显示时间对准图的什么组合和/或将显示由对准的跟踪数据534覆盖的什么时间段。
图4、5和6每个都描绘图像880的示例性实施例,图像880可被视觉呈现在事件的时间对准图的组合的显示器580上,该事件与计算设备300的操作期间随着时间发生的唤醒锁定的使用相关联。如所描绘的,并且如将被解释的,这样的时间对准帮助识别与唤醒锁定相关联的事件之间的可能的因果相关性,从而帮助调试唤醒锁定程序错误的实例。
图4描绘多个唤醒锁定图881、884和887的视觉呈现,每个都呈现与唤醒锁定相关的事件的时间线,诸如响应于对唤醒锁定的请求的唤醒锁定的实例化和/或响应于释放唤醒锁定的请求的唤醒锁定的释放。具体描绘的是在时间段期间三个不同的唤醒锁定的实例化和释放的三个时间对准的唤醒锁定图887,包括每个都与不同的应用例程(例如应用例程370中的每一个)相关联的两个应用级唤醒锁定以及与应用功率管理器347相关联的内核级唤醒锁定。还描绘的是在相同的时间段期间与设备驱动器(例如设备驱动器310之一)相关联的内核级唤醒锁定的实例化和释放的唤醒锁定图881,使得唤醒锁定图881与三个唤醒锁定图887时间对准。此外描绘的是在相同时间段期间与操作系统的内核级组件相关联的内核级唤醒锁定的实例化和释放的唤醒锁定图884,使得唤醒锁定图884与唤醒锁定图887和881时间对准。此外还描绘的是在相同时间段期间处理器组件350、接口390和可移除介质存储设备(例如盘介质读取器,在前述任何图中未具体示出)的活动级的时间线的三个活动图885,使得这些活动图与前述的唤醒锁定图时间对准。此外仍然描绘的是在相同时间段期间在功率状态之间转变计算设备300的时间线的功率状态图883,使得功率状态图883与上述唤醒锁定图时间对准。
三个唤醒锁定图887的时间对准使得两个应用级唤醒锁定的实例化和释放的因果关系可见,两个应用级唤醒锁定使表示与应用功率管理器347相关联的两个应用级唤醒锁定的聚合的内核级唤醒锁定的实例化和释放发生。更具体地,可以看出:当两个应用级唤醒锁定中的任一个未决时,内核级唤醒锁定保持未决。此外,唤醒锁定图881与针对接口390的活动图885之一(例如“网络活动”的活动图885)的时间对准提供在设备驱动器的内核级唤醒锁定与接口390的活动之间存在的关系的视觉提示。应当指出的是:尽管描绘计算设备300的三个具体组件的活动,可包括用于其它组件和/或用于更多或更少组件的活动。此外,可为其示出活动的组件可能是物理分立的组件和/或单个(或少量)半导体器件的电路的功能块(例如“片上系统”或SOC)。如可看到的,开始一些量的网络活动,并且然后其显然由与需要唤醒锁定的接口390相关联的设备驱动器来确定,使设备驱动器请求唤醒锁定。然后,一旦停止网络活动,该内核级唤醒锁定就由设备驱动器释放。此外,功率状态图883与唤醒锁定图881、884和887的时间对准使得计算设备的功率状态和唤醒锁定的未决之间的因果关系可见。具体地,在没有任何未决的唤醒锁定的情况下,允许计算设备300进入较低功率状态(在具有对角交叉阴影的功率状态图883中所指示),并且在有至少一个未决的唤醒锁定的情况下,迫使计算设备300保持在较高功率状态(在具有正方形交叉影线的功率状态图883中所指示)。
图5描绘与应用例程相关联的应用级唤醒锁定的单个唤醒锁定图887的视觉呈现的更简单示例,其与关联于可移除存储介质设备的单个活动图885(例如“盘读取器”的活动图)时间对准。这两个图的时间对准使得能够在盘读取器的部分上的活动的开始和在唤醒锁定图887上标记的调用之间看到因果关系,所述调用请求唤醒锁定以允许盘读取器的活动继续而没有来自到较低功率状态的可能的转变的中断。然而,这两个图的时间对准还使得释放唤醒锁定的调用的缺少一旦盘读取器的活动停止就能够被看见。如本领域技术人员所熟悉的,这可提供唤醒锁定程序错误的“无睡眠代码程序错误”版本的指示,其中指令序列中的错误导致唤醒锁定被请求但永远不被释放。指令序列可缺乏所需的调用来释放唤醒锁定,或者指令序列的逻辑可能以导致对唤醒锁定的释放的调度的指令从未被执行的方式是有故障的。
图6描绘事件的三个时间对准的唤醒锁定图887的视觉呈现的更简单的示例,该事件与关联于应用例程(例如应用例程370之一)的单个应用级唤醒锁定相关联。这些唤醒锁定图887中的两个视觉描绘了由与相同的应用例程相关联的两个单独的线程做出以请求唤醒锁定和释放它的调用。这两个唤醒锁定图887的时间对准使得唤醒锁定程序错误的可能的“无睡眠竞态条件”版本容易可视,其中两个线程之间的指令的执行的时序导致请求唤醒锁定的调用在释放它的调用之后发生。这两个唤醒锁定图887与这些唤醒锁定图887中的第三个的时间对准进一步描绘以其做出两个调用的次序的因果关系和请求的唤醒锁定的所得到的实例化以及随后释放的缺乏。
图2描绘包括计算设备300的替代实施例的唤醒锁定调试系统1000的替代的实施例的框图。图2的唤醒锁定调试系统1000的替代实施例在许多方面类似于图1的实施例,并且因此,相同的参考标号在全文中用于指代相同的组件。然而,不像图1的计算设备300,图2的计算设备300另外合并图1的调试设备500的特征。因此,正是图2的计算设备300的处理器组件350解析、时间对准和视觉呈现与随着时间而发生的唤醒锁定的使用相关联的事件的时间对准的时间线图,代替分离和不同的调试设备500来这样做。也正是图2的计算设备300的显示器380和控制320用于提供和控制这样的视觉呈现,代替分离和不同的调试设备500的控制520和显示器580来这样做。
在各种实施例中,处理器组件350和550中的每一个可包括任何的各种各样的商业可得到的处理器。此外,这些处理器组件中的一个或多个可包括多个处理器、多线程处理器、多核处理器(无论多个核共存于相同还是分离的管芯上)和/或多个物理分离的处理器通过其以一些方式链接的一些其它变化性的多处理器架构。
在各种实施例中,储存器360和560中的每一个可基于任何的各种各样的信息存储技术,可能包括需要不间断地提供电功率的易失性技术,并可能包括使需要使用可能是或可能不可移除的机器可读存储介质的技术。因此,这些储存器中的每一个可包括任何的各种各样类型的存储设备(或类型的组合),包括而不限于:只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器(例如铁电聚合物存储器)、奥氏存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁或光卡、一个或多个单独的铁磁盘驱动器或被组织成一个或多个阵列的多个存储设备(例如被组织成独立磁盘阵列的冗余阵列或RAID阵列的多个铁磁盘驱动器)。应当指出的是:虽然这些储存器中的每一个被描绘为单个块,但是这些中的一个或多个可包括可基于不同存储技术的多个存储设备。因此,例如,这些描绘的储存器的每一个中的一个或多个可表示程序和/或数据可通过其存储并传送在某种形式的机器可读存储介质上的光驱动器或闪速存储器卡读取器、在相对延长的时段内本地存储程序和/或数据的铁磁盘驱动器以及使得能够相对快速访问程序和/或数据的一个或多个易失性固态存储器设备(例如SRAM或DRAM)的组合。还应当指出的是:这些储存器中的每一个可由基于相同的存储技术的多个存储组件组成,但是其可作为使用的专业化的结果而被分别维持(例如一些DRAM设备被用为主储存器,而其它DRAM设备被用作图形控制器的不同帧缓冲器)。
在各种实施例中,接口390和590中的每一个可采用任何的各种各样的信令技术,该信令技术使得计算设备能够耦合到其它设备,如已经描述的。这些接口中的每一个可包括提供至少一些必要的功能性以实现这样的耦合的电路。然而,这些接口中的每一个也可用由处理器组件的对应组件执行的指令序列来至少部分地实现(例如实现协议栈或其它特征)。在采用电和/或光导的布线的情况下,这些接口可采用符合任何各种各样的行业标准的信令和/或协议,包括而不限于:RS-232C、RS-422、USB、以太网(IEEE-802.3)或者IEEE-1394。在使需要使用无线信号传输的情况下,这些接口可采用符合任何各种各样的行业标准的信令和/或协议,包括而不限于:IEEE 802.11a、802.11b、802.11g、802.16、802.20(通常被称为“移动宽带无线接入”);蓝牙;ZigBee;或者蜂窝无线电话服务,诸如具有通用分组无线服务的GSM(GSM/GPRS)、CDMA/1xRTT、增强型数据速率全球演进(EDGE)、仅/优化数据演进(EV-DO)、数据和语音演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行链路分组接入(HSUPA)、4G LTE等。
图7、8和9每个都更详细地图示图1或者图2的异构核处理系统1000的实施例的一部分的框图。更具体地,图7描绘计算设备300的操作环境的方面,其中处理器组件350在执行操作系统340和日志补丁例程177时以增强的特性在系统日志数据337中记录与应用级唤醒锁定相关联的事件。图8描绘计算设备300的操作环境的方面,其中处理器组件350在执行操作系统340和日志设备驱动器171时在补充日志数据331中记录与内核级唤醒锁定相关联的事件。图9描绘计算设备300或者调试设备500的操作环境的方面,其中处理器组件350或550分别在执行调试例程570时采用系统日志数据337和补充日志数据334来视觉呈现事件的时间对准的时间线图,以帮助调试唤醒锁定。
如本领域技术人员可认识到的,包括其各自包含的组件的操作系统340、日志补丁例程177、日志设备驱动器171和调试例程570被选为可在被选择以实现处理器组件350或550的可应用组件的任何类型的一个或多个处理器上操作。在各种实施例中,组成每个的指令序列可包括操作系统、设备驱动器和/或应用级例程(例如在盘介质上提供的所谓“软件套件”,从远程服务器获得的“小应用程序”等)中的一个或多个。在包括操作系统的情况下,操作系统可能是适合处理器组件350或550的任何对应组件的任何各种各样的可用操作系统。在包括一个或多个设备驱动器的情况下,那些设备驱动器可提供对计算设备300或500的对应设备的任何各种各样的其它组件(无论是硬件还是软件组件)的支持。
操作系统340和调试例程540中的每一个可包括由处理器组件350或550可执行的通信组件349或549,以分别操作接口390或590来经由网络999发送和接收信号,如已经描述的。在所交换的信号之中的可能是或者从服务器100或者从调试设备500向计算设备300传送日志补丁例程177和/或日志设备驱动器171的信号。可替代地或另外,在所交换的信号之中的可能是从计算设备300向调试设备500传送系统日志数据337和补充日志数据331的信号。如将由本领域技术人员认识到的,这些通信组件被选择成用被选择为实现接口390和590的对应接口的任何类型的接口技术可操作的。
更具体地转向图7,日志补丁例程177可包括由处理器组件350可执行的捕获组件1777,以拦截来自应用例程370的传入调用来请求或释放唤醒锁定。捕获组件1777捕获在那些调用中传送的参数中的一个或多个,包括而不限于:发送调用的应用例程370中的无论哪个的识别信息,发送调用的应用例程370之一的无论哪个过程的识别信息,或者指示唤醒锁定所应用于的计算设备300的一个或多个特定组件的一个或多个标志。可替代地或另外,捕获组件1777可识别发送调用的应用例程370的部分由处理器组件350在其上执行的线程。
日志补丁例程177可包括由处理器组件350可执行的收集组件1773,以与应用功率管理器347的一部分合作来从系统数据330检索当前未决的唤醒锁定的映射数据和/或唤醒锁定数据。如先前所讨论的,操作系统340在系统数据330中维持其正常操作所需的各种数据片,并且系统数据330可被维持在储存器360的一部分中,对储存器360的访问受到极大限制以防止其内容讹误。如先前所解释的,映射数据将过程的标识符与在其上执行那些过程的线程的标识符(至少在多线程环境中执行操作系统340的情况下)以及与过程中的至少一些是其部分的应用例程的一些的标识符相关。还如先前所解释的,唤醒锁定数据可包括与将未决的应用级唤醒锁定中的每一个关联到应用例程370之一的标识符相关的至少未决的应用级唤醒锁定的指示。
日志补丁例程177可包括由处理器组件350可执行的中继组件1774,以向系统日志生成器344提供请求或释放应用级唤醒锁定的调用的接收的指示、当前未决的唤醒锁定的映射数据和/或唤醒锁定数据,以被记录为系统日志数据337的附加数据334的部分。虽然在一些实施例中,系统日志生成器344可提供它在生成系统日志数据337时创建的所有条目的所有时间戳,中继组件1774可替代地或另外更直接地从时钟351接收当前时间的指示,以用于对与被传送到系统日志生成器344的唤醒锁定相关的事件的指示加时间戳。
更具体地转向图8,日志设备驱动器171可包括由处理器组件350可执行的调用组件1713以用调用发信号通知内核功率管理器341,所述调用请求使用由内核功率管理器341提供的DPI的回调机制以安排请求或释放对内核功率管理器341做出的内核级唤醒锁定的所有调用以被中继到日志设备驱动器171。这将包括针对由设备驱动器310、应用功率管理器347和操作系统340的其它组件中的一个或多个进行的内核级唤醒锁定的调用。在一些实施例中,调用组件1713也可用调用连同识别信息发信号通知内核功率管理器341,所述调用请求指示什么内核级唤醒锁定已经未决,所述识别信息指示设备驱动器310中的哪个(些)和/或操作系统340的哪些组件请求它们。这可导致内核功率管理器341检索被维持为系统数据330的部分的唤醒锁定数据的至少一部分,所述系统数据330包括相关于与它们相关联的无论什么设备驱动器或操作系统组件的未决内核级唤醒锁定(例如请求它们的无论什么设备驱动器或操作系统组件)的指示。
日志设备驱动器171可包括由处理器组件350可执行的接收组件1711,以从内核功率管理器341接收内核功率管理器341接收以请求或释放内核级唤醒锁定的调用的指示。由内核功率管理器341提供这些指示可响应于由调用组件1713对内核功率管理器341做出的调用,以调入回调机制,如前所讨论的。接收组件1711也可捕获从内核功率管理器341接收的指示:什么内核级唤醒锁定当前未决和/或设备驱动器310中的哪些和/或操作系统340中的哪些组件请求它们。
日志设备驱动器171可包括由处理器组件350可执行的记录(logging)组件1714,以生成补充日志数据331。在这样做时,记录组件1714在补充日志数据331中存储请求或释放内核级唤醒锁定的调用的指示和/或当前未决的唤醒锁定的唤醒锁定数据。记录组件1714从时钟351接收当前时间的指示,以用于对与补充日志数据331中记录的内核级唤醒锁定相关的事件(诸如请求或释放内核级唤醒锁定的调用)的指示加时间戳。
更具体地转向图9,调试例程570可包括由处理器组件350或550中的任一个可执行的相关组件574,以解析系统日志数据337和补充日志数据331的条目来提取与唤醒锁定相关联的条目,以及指示计算设备300的组件的活动的方面的条目。相关组件574时间对准所提取的条目,并将它们组合以生成对准的跟踪数据534。在这样做时,相关组件574还可提取系统日志数据337或补充日志数据331的任一个中包括的任何映射数据,以将操作系统340等的例程、过程、线程、组件等的识别信息与应用级和/或内核级唤醒锁定相关,以识别和使用它们之间的关联,以进一步将对准的跟踪数据534中的条目相关。
调试例程570可包括由处理器组件350或550中任一个可执行的呈现组件578,以分别在显示器380或580上视觉呈现与唤醒锁定相关联的事件、计算设备300的组件的活动和/或在对准的跟踪数据534中指示的计算设备300的功率状态之间的转变的时间对准的时间线图的图像880。如已经讨论的,呈现组件578可监视控制320或520来分别由计算设备300或调试设备500的操作者接收那些控制的操作的指示,以选择与唤醒锁定相关联的各种事件中的哪些事件、哪些组件的活动级等以使其在图像880中视觉呈现。可替代地或另外,可监视控制320或520以接收操作的指示,以选择由对准的跟踪数据534覆盖的时间段的一部分,以在图像880中视觉呈现。
图10图示逻辑流程2100的实施例。逻辑流程2100可表示由本文所述的一个或多个实施例执行的操作的一些或全部。更具体地,逻辑流程2100可图示在至少执行操作系统340和日志补丁例程177时由处理器组件350执行和/或由计算设备300的一个或多个其它组件执行的操作。
在2110处,唤醒锁定调试系统的计算设备的处理器组件(例如唤醒锁定调试系统1000的计算设备300的处理器组件350)执行由指令序列组成以扩增应用功率管理器的指令序列的补丁例程(例如扩增操作系统340的应用功率管理器347的日志补丁例程177)。在这样做时,在两个指令序列之间实现合作,以收集在实现补丁例程的功能性时已经未决的任何应用级唤醒锁定的指示。如已经讨论的,这可使应用功率管理器需要访问由操作系统维持的数据结构(例如被维持为系统数据330的部分的唤醒锁定数据),以检索数据结构的条目,所述条目将未决的唤醒锁定与作为请求它们的结果而与其相关联的任何应用例程的标识符相关。这样的数据结构的这样的条目还可维持那些唤醒锁定中的哪个未决的指示,或者可仅仅包括用于未决的唤醒锁定的条目。
在2120处,在由操作系统的系统日志生成器(例如操作系统340的系统日志生成器344)生成的系统日志数据中记录在实现补丁程序时已经未决的任何唤醒锁定的指示。如先前所讨论的,应用功率管理器通常已经与系统日志生成器通信,以仅提供存在未决的唤醒锁定的非常有限的指示,但是没有多少唤醒锁定未决或它们与哪些应用例程相关联的任何指示。
在2130处,在补丁例程和应用功率管理器之间引起进一步的合作,以收集将应用例程映射到由处理器组件执行的过程和/或线程的映射信息。如已经讨论的,这可使应用功率管理器需要访问由操作系统维持的另一个数据结构(例如被维持为系统数据330的部分的映射数据),以检索提供这样的相关性的指示的映射数据的条目。在2140处,在系统日志数据中记录收集的任何映射信息的指示。
在2150处,拦截由应用功率管理器接收以请求或释放唤醒锁定的调用。如先前所讨论的,在拦截这样的调用时,补丁例程接收在那些调用中传送的参数,所述参数可包括:将调用与请求它的应用例程相关联的识别信息,指示唤醒锁定所应用到的计算设备的特定组件的一个或多个标志,和/或可被包括为参数的调试信息。
在2160处,在补丁程序和应用功率管理器之间引起再更多的合作,以采用应用功率管理器和系统数据生成器之间的通信来为系统数据生成器提供拦截的调用的指示。如先前所讨论的,这导致系统数据生成器针对那些拦截的调用在系统日志数据中创建条目,包括参数信息。
图11图示逻辑流程2200的一个实施例。逻辑流程2200可表示由本文所述的一个或多个实施例可执行的操作中的一些或全部。更具体地,逻辑流程2200可图示在至少执行控制例程340和日志设备驱动器171时由处理器组件350执行的和/或由计算设备300的一个或多个其它组件执行的操作。
在2210处,唤醒锁定调试系统的计算设备的处理器组件(例如唤醒锁定调试系统1000的计算设备300的处理器组件350)执行耦合到内核功率管理器的日志设备驱动器(例如与操作系统340的内核功率管理器341通信的日志设备驱动器171)。在这样做时,处理器组件用请求发信号通知内核功率管理器,所述请求提供在实现日志设备驱动器的功能性时已经未决的任何内核级唤醒锁定的指示。如已经讨论的,这可使内核功率管理器需要访问由操作系统维持的数据结构(例如被维持为系统数据330的部分的唤醒锁定数据),以检索数据结构的条目,其将未决的唤醒锁定与作为请求它们的结果而与它们相关联的无论什么设备驱动器或操作系统组件的标识符相关。这样的数据结构的这样的条目还可维持那些唤醒锁定中的哪个未决的指示,或者可仅仅包括用于未决的唤醒锁定的条目。在2220处,在由日志设备驱动器生成的补充日志数据中记录在实现日志设备驱动器时已经未决的任何内核唤醒锁定的指示。
在2230处,由日志设备驱动器使处理器组件通过驱动器编程接口(DPI)用调用发信号通知内核功率管理器,所述调用请求由内核功率管理器接收以请求或释放内核级唤醒锁定的所有调用被中继到日志设备驱动器。如先前所讨论的,对内核功率管理器的这样的调用可能是调入由DPI提供的回调机制的调用,关于唤醒锁定的调用通过所述回调机制而被反射回一个或多个设备驱动器。在2240处,日志设备驱动器可在补充日志数据中针对请求和释放内核唤醒锁定的每个调用创建条目,所述调用被内核功率管理器反射回日志设备驱动器的内核唤醒锁定。同样地,调用的这种反射回可响应于早前的调用以调入回调机制。
图12图示逻辑流程2300的一个实施例。逻辑流程2300可表示由本文所述的一个或多个实施例执行的操作的一些或全部。更具体地,逻辑流程2300可图示在至少运行调试例程570时由处理器组件350或550执行的和/或分别由计算设备300或调试设备500的一个或多个其它组件执行的操作。
在2310处,计算设备或调试设备的处理器组件(例如唤醒锁定调试系统1000的计算设备300或调试设备500的处理器组件350或550)从在计算设备的操作期间生成的系统日志数据和补充日志数据提取与唤醒锁定和计算设备的组件的活动级相关联的条目。如已经讨论的,提取的条目可包括:请求和/或释放唤醒锁定的调用的指示,计算设备的一个或多个组件的活动级的指示,在计算设备的功率状态之间的转变的指示等。在2320处,时间对准所提取的条目以生成对准的跟踪数据(例如从提取自系统日志数据337和补充日志数据331的条目生成的对准的跟踪数据534)。
在2330处,还提取在系统日志数据和补充日志数据的一个或另一个中包括的任何映射数据。在2340处,这样提取的映射数据被用于将来自所提取的条目的识别信息相关以将唤醒锁定与过程、线程、设备驱动器、计算设备的操作系统的组件或应用例程相关。
在2350处,对准的跟踪数据的条目用于生成唤醒锁定事件、组件的活动级方面的改变、计算设备的功率状态方面的改变等的时间线。此外,然后以在计算设备的操作中将其时间对准到共同时间段的方式在显示器上视觉呈现这些时间线。在2360处,可监视控制以接收那些控制的操作的指示,以传达命令来选择显示哪些时间线和/或选择显示由对准的跟踪数据的条目覆盖的时间的什么部分,并且相应地改变时间对准的时间线的视觉呈现。
图13图示适于实现如先前所述的各种实施例的处理架构3000的实施例。更具体地,处理架构3000(或其变型)可被实现为计算设备100、300或500中的一个或多个的部分。应当指出的是:处理架构3000的组件被给出附图标记,其中最后两位数字对应于早前描绘和被描述为这些计算设备的部分的至少一些组件的附图标记的最后两位数字。这样做是作为将每一个的组件相关的帮助。
处理架构3000可包括在数字处理中通常采用的各种元件,包括而不限于:一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外设、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件、功率供应等。如在本申请中所使用的,术语“系统”和“组件”旨在指代在其中执行数字处理的计算设备的实体,该实体是硬件、硬件和软件的组合、软件或执行中的软件,其示例由该描绘的示例性处理架构提供。例如,组件可以是但不限于:在处理器组件上运行的过程、处理器组件本身、可采用光和/或磁存储介质的存储设备(例如硬盘驱动器、阵列中的多个储存器驱动器等)、软件对象、可执行的指令序列、执行的线程、程序和/或整个计算设备(例如整个计算机)。通过图示的方式,在服务器上运行的应用和服务器二者可以是组件。一个或多个组件可驻留在执行的进程和/或线程内,并且组件可以定位在一个计算设备上和/或分布在两个或更多个计算设备之间。此外,组件可通过各种类型的通信介质通信地彼此耦合以协调操作。协调可涉及单向或双向的信息交换。例如,组件可以以通过通信介质传送的信号的形式传送信息。信息可被实现为被分配给一个或多个信号线的信号。消息(包括命令、状态、地址或数据消息)可以是这样的信号之一,或者可以是多个这样的信号,并且可通过任何的各种各样的连接和/或接口而被或者串行地或者大体上并行地发送。
如所描绘的,在实现处理架构3000时,计算设备可至少包括处理器组件950、储存器960、到一个或多个其它设备的接口990、以及耦合959。如将要解释的,取决于实现处理架构3000的计算设备的各种方面,包括其预期用途和/或使用条件,这样的计算设备可进一步包括附加组件,例如而不限于:显示接口985,或者一个或多个处理子系统900。在可实现处理架构3000的无论什么计算设备中,用电路实现的各种描绘的组件之一可用分立组件来实现和/或被实现为单个或相对小数量的半导体器件(例如“片上系统”或SOC)内的电路的块。
耦合959可包括至少将处理器组件950通信地耦合到储存器960的一个或多个总线、点到点互连、收发器、缓冲器、交叉点开关和/或其它导体和/或逻辑。耦合959可进一步将处理器组件950耦合到接口990、音频子系统970和显示接口985中的一个或多个(取决于这些和/或其它组件中的哪些也存在)。在处理器组件950通过耦合959而这样耦合的情况下,处理器组件950能够执行对于其实现处理架构3000的前述计算设备的哪个(哪些)的以上详细地描述的任务中的各种任务。耦合959可用通过其而光和/或电传送信号的任何各种各样的技术或技术组合来实现。此外,耦合959的至少部分可采用符合任何各种各样的工业标准的定时和/或协议,包括而不限于:加速图形端口(AGP)、卡总线(CardBus)、扩展工业标准架构(E-ISA)、微通道架构(MCA)、NuBus、外围组件互连(扩展)(PCI-X)、快速PCI(PCI-E)、个人计算机存储卡国际协会(PCMCIA)总线、HyperTransport™、快速通路(QuickPath)等等。
如先前所讨论的,处理器组件950(对应于处理器组件350或550中的一个或多个)可包括任何的各种各样的商业可得到的处理器,采用任何的各种各样的技术,并用许多方式中的任何方式物理组合的一个或多个核来实现。
如先前所讨论的,基于任何的各种各样的技术或技术组合,储存器960(对应于储存器360或560中的一个或多个)可由一个或多个不同的存储设备组成。更具体地,如所描绘的,储存器960可包括易失性储存器961(例如基于RAM技术的一个或多个形式的固态储存器)、非易失性储存器962(例如不需要不断提供电功率以保存其内容的固态、铁磁或其它储存器)和可移除介质储存器963(例如可通过其在计算设备之间传送信息的可移除盘或固态存储器卡储存器)中的一个或多个。如可能包括多种不同类型的储存器的储存器960的此描绘认识到计算设备中的多于一种类型的存储设备的司空见惯的用途,其中一种类型提供相对快的读取和写入能力,其使得能够实现由处理器组件950更迅速地操纵数据(但是可能使用不断需要电功率的“易失性”技术),而另一个类型提供相对高密度的非易失性储存器(但是可能提供相对慢的读取和写入能力)。
假设不同的存储设备的经常不同的特性采用不同的技术,通过经由不同的接口耦合到其不同的存储设备的不同的储存器控制器耦合到计算设备的其它部分对于这样的不同的存储设备来说也是司空见惯的。通过示例的方式,在易失性储存器961存在并且基于RAM技术的情况下,易失性储存器961可通过储存器控制器965a通信地耦合到耦合959,所述储存器控制器965a向也许采用行和列寻址的易失性储存器961提供适当的接口,并且其中储存器控制器965a可执行行刷新和/或其它维持任务来帮助保存易失性储存器961内存储的信息。通过另一个示例的方式,在非易失性储存器962存在且包括一个或多个铁磁和/或固态盘驱动器的情况下,非易失性储存器962可通过储存器控制器965b通信地耦合到耦合959,储存器控制器965b向也许采用信息的块和/或柱面和扇区的寻址的非易失性储存器962提供适当的接口。通过又一个示例的方式,在可移除介质储存器963存在且包括采用一片或多片机器可读存储介质969的一个或多个光和/或固态盘驱动器的情况下,可移除介质储存器963可通过储存器控制器965c通信地耦合到耦合959,储存器控制器965c向也许采用信息块的寻址的可移除介质储存器963提供适当的接口,并且其中储存器控制器965c可以对延长机器可读存储介质969的寿命特定的方式协调读取、擦除和写入操作。
易失性储存器961或非易失性储存器962中的一个或另一个可包括以机器可读存储介质形式的制品,在该介质上可存储包括由处理器组件950可执行以实现各种实施例的指令序列的例程,这取决于每一个所基于的技术。通过示例的方式,在非易失性储存器962包括基于铁磁的盘驱动器(例如所谓的“硬驱动器”)的情况下,每个这样的盘驱动器典型地采用一个或多个旋转盘片,在其上沉积并以各种图案磁定向磁响应粒子的涂层而以类似于诸如软盘之类的存储介质的方式存储诸如指令序列之类的信息。通过另一个示例的方式,非易失性储存器962可由固态存储设备的库组成而以类似于压缩闪存卡的方式存储诸如指令序列之类的信息。同样地,在不同时间在计算设备中采用不同类型的存储设备来存储可执行例程和/或数据是司空见惯的。因此,包括将由处理器组件950执行以实现各种实施例的指令序列的例程最初可存储在机器可读存储介质969上,并且可移除介质储存器963随后可用在将该例程拷贝到非易失性储存器962以供不需要继续存在机器可读存储介质969和/或易失性储存器961的长期存储以使得能够实现在执行该例程时通过处理器组件950的更迅速的访问。
如先前所讨论的,接口990(对应于接口390或590中的一个或多个)可采用对应于可用于将计算设备通信地耦合到一个或多个其它设备的任何的各种各样的通信技术的任何的各种各样的信令技术。同样地,各种形式的有线或无线信令中的一个或二者可用于使得处理器组件950能够可能通过网络(例如网络999)或网络的互连的集合与输入/输出设备(例如所描绘的示例性键盘920或打印机925)和/或其它计算设备交互。在识别必须经常由任何一个计算设备支持的多个类型的信令和/或协议的经常极大地不同的特性中,接口990被描绘为包括多个不同的接口控制器995a、995b和995c。接口控制器995a可采用任何的各种各样类型的有线数字串行接口或射频无线接口来接收从诸如描绘的键盘920之类的用户输入设备串行发送的消息。接口控制器995b可采用任何的各种各样的基于布线或无线信令、定时和/或协议来通过描绘的网络999(也许由一个或多个链路组成的网络、较小的网络或者也许是因特网)访问其它计算设备。接口995c可采用任何的使得能够使用或者串行或者并行的信号传输各种各样的导电性布线来传送数据到描绘的打印机925。可通过接口990的一个或多个接口控制器通信地耦合的设备的其它示例包括而不限于:麦克风、远程控制、指示笔、读卡器、指纹读取器、虚拟现实交互手套、图形输入平板、操纵杆、其它键盘、视网膜扫描仪、触摸屏的触摸输入组件、轨迹球、各种传感器、相机或相机阵列,以监视人的运动来接受由那些人经由手势和/或面部表情、激光打印机、喷墨打印机、机械机器人、铣床等所发信号的命令和/或数据。
在计算设备通信地耦合到(或者也许实际上合并)显示器(例如描绘的示例性显示器980,对应于显示器580)的情况下,实现处理架构3000的这样的计算设备还可包括显示接口985。虽然更通用化类型的接口可用于通信地耦合到显示器,在显示器上视觉显示各种形式的内容中经常需要的有些具体化的附加处理,以及使用的基于布线的接口的有些具体化的性质经常使得提供不同的显示界面是期望的。可由显示接口985在显示器980的可通信耦合中采用的有线和/或无线信令技术可利用符合任何各种各样的行业标准的信令和/或协议,包括而不限于:任何各种各样的模拟视频接口、数字视频接口(DVI)、显示端口等。
更通常地,本文所述和描绘的计算设备的各种元件可包括各种硬件元件、软件元件或二者的组合。硬件元件的示例可包括设备、逻辑设备、组件、处理器、微处理器、电路、处理器组件、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件元件的示例可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口,应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。然而,确定是否使用硬件元件和/或软件元件来实现实施例可根据任何数量的因素而改变,诸如期望的计算速率、功率级、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其它设计或性能约束,如对于给定实现方式所期望的。
一些实施例可使用表达“一个实施例”或“实施例”连同它们的派生词来描述。这些术语意味着:连同实施例描述的特定特征、结构或特性包括在至少一个实施例中。在说明书中各个地方中短语“在一个实施例”的出现不一定全部指代相同实施例。此外,一些实施例可使用表达“耦合”和“连接”连同它们的派生词来描述。这些术语不一定旨在作为彼此的同义词。例如,一些实施例可使用术语“连接”和/或“耦合”来描述,以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可意味着:两个或更多个元件彼此不直接接触,但是仍然彼此合作或交互。此外,可组合来自不同实施例的方面或元件。
强调的是:提供本公开的摘要以允许读者快速地确定技术公开的性质。在理解摘要将不用于解释或限制权利要求的范围或含义的情况下提交所述摘要。另外,在前述的具体实施方式中,可以看到:为了简化本公开的目的,各种特征在单个实施例中集合在一起。公开的此方法将不被解释为反映意图:要求保护的实施例需要比在每个权利要求中清楚陈述的更多的特征。相反,如下面的权利要求所反映的,发明的主题在于少于单个公开的实施例的所有特征。因此,下面的权利要求由此被合并到具体实施方式中,其中每个权利要求本身作为单独的实施例。在所附权利要求中,术语“包括”和“在其中”分别用作相应术语“包括”和“其中”的纯英语等同物。此外,术语“第一”、“第二”和“第三”等等仅用作标签,并不旨在对其对象强加数字要求。
以上已经描述的包括公开的架构的示例。当然,不可能描述组件和/或方法的每个可想到的组合,但本领域普通技术人员可认识到:许多进一步的组合和置换是可能的。因此,新颖的架构旨在涵盖落入所附权利请求的精神和范围内的所有这样的更改、修改和变型。详细的公开现在转向提供涉及进一步的实施例的示例。下面提供的示例并不旨在是限制性的。
在一些示例中,一种跟踪唤醒锁定事件的装置可包括:处理器组件;捕获组件,用于由处理器组件执行以拦截与应用级唤醒锁定相关联的调用,拦截的调用由操作系统的应用功率管理器从应用例程接收;以及中继组件,用于由处理器组件执行以与应用功率管理器合作,以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示,系统日志生成器生成系统日志数据,所述系统日志数据包括与通过处理器组件的操作系统执行相关联的事件的指示以及拦截的调用的指示。
另外或可替代地,该装置可包括收集组件,用于由处理器组件执行以与应用功率管理器合作来收集唤醒锁定数据,所述唤醒锁定数据提供未决的应用级唤醒锁定的指示并将未决的应用级唤醒锁定与应用例程相关。
另外或可替代地,中继组件可与应用功率管理器合作以向系统日志生成器提供未决的应用级唤醒锁定的指示,系统日志生成器在系统日志数据中包括未决的应用级唤醒锁定的指示。
另外或可替代地,该装置可包括收集组件,用于由处理器组件执行以与应用功率管理器合作来收集映射数据,所述映射数据将应用例程与由处理器组件执行的过程或在其上执行应用例程的部分的线程相关。
另外或可替代地,中继组件可与应用功率管理器合作以向系统日志生成器提供映射数据,所述系统日志生成器在系统日志数据中包括映射数据。
另外或可替代地,拦截的调用可包括请求唤醒锁定的调用或释放未决的唤醒锁定的调用。
另外或可替代地,该装置可包括应用功率管理器,所示应用功率管理器被扩增以包括捕获组件和中继组件。
另外或可替代地,该装置可包括日志设备驱动器的调用组件,用于由处理器组件执行以发信号通知操作系统的内核功率管理器以向日志设备驱动器中继与内核级唤醒锁定相关联的调用,中继的调用由内核功率管理器从设备驱动器或操作系统的组件接收。
另外或可替代地,操作系统的组件可包括应用功率管理器,应用功率管理器耦合到内核功率管理器以用关联于内核级唤醒锁定的调用发信号通知内核功率管理器。
另外或可替代地,该装置可包括:接收组件,用于由处理器组件执行以在日志设备驱动器处接收中继的调用;以及记录组件,用于由处理器组件执行以生成包括中继的调用的指示的补充日志数据。
另外或可替代地,该装置可包括:相关组件,用于从系统日志数据提取与应用级唤醒锁定相关联的条目,从补充日志数据提取与内核级唤醒锁定相关联的条目,从系统日志数据提取指示包括处理器组件的计算设备的组件的活动级的条目,并且时间对准所提取的条目;以及呈现组件,用于在显示器上生成和视觉呈现与应用级唤醒锁定和内核级唤醒锁定相关联的事件以及计算设备的组件的活动级的时间对准的时间线图,事件和活动级在所提取的条目中被指示。
另外或可替代地,该装置可包括接口,用于向调试设备发送系统日志数据和补充日志数据。
在一些示例中,一种跟踪唤醒锁定事件的装置可包括:处理器组件;相关组件,从系统日志数据提取与针对操作系统的应用功率管理器的应用级唤醒锁定相关联的调用的指示,从补充日志数据提取与针对操作系统的内核功率管理器的内核级唤醒锁定相关联的调用的指示,并从系统日志数据提取在其上执行操作系统的计算设备的组件的活动级的指示;以及呈现组件,在显示器上生成和视觉呈现与应用级唤醒锁定相关联的调用、与内核级唤醒锁定相关联的调用以及计算设备的组件的活动级方面的改变的时间对准的时间线图。
另外或可替代地,相关组件可从系统日志数据和补充日志数据之一提取映射信息,所述映射信息包括在计算设备上执行的应用例程与在计算设备上执行的过程和计算设备的执行的线程之一的相关性的指示。
另外或可替代地,相关组件可采用相关性的指示来将与应用级唤醒锁定相关联的调用的至少两个指示相关。
另外或可替代地,该装置可包括控制,并且呈现组件可监视控制以接收传送命令以选择时间线图所时间对准到的时间段的控制的操作的指示。
在一些示例中,一种用于将处理器组件核布置成执行任务部分的计算机实现的方法可包括:拦截与应用级唤醒锁定相关联的调用,拦截的调用由操作系统的应用功率管理器从应用例程接收;以及与应用功率管理器合作以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示,系统日志生成器生成系统日志数据,所述系统日志数据包括与操作系统的执行相关联的事件的指示以及拦截的调用的指示。
另外或可替代地,该方法可包括:与应用功率管理器合作以收集唤醒锁定数据,所述唤醒锁定数据提供未决的应用级唤醒锁定的指示并将未决的应用级唤醒锁定与应用例程相关。
另外或可替代地,该方法可包括:与应用功率管理器合作以向系统日志生成器提供未决的应用级唤醒锁定的指示,所述系统日志生成器在系统日志数据中包括未决的应用级唤醒锁定的指示。
另外或可替代地,该方法可包括:与应用功率管理器合作以收集映射数据,所示映射数据将应用例程与由处理器组件执行的过程或在其上执行应用例程的部分的线程相关。
另外或可替代地,该方法可包括:与应用功率管理器合作以向系统日志生成器提供映射数据,所述系统日志生成器在系统日志数据中包括映射数据。
另外或可替代地,拦截的调用可包括请求唤醒锁定的调用或释放未决的唤醒锁定的调用。
另外或可替代地,该方法可包括:发信号通知操作系统的内核功率管理器以向日志设备驱动器中继与内核级唤醒锁定相关联的调用,中继的调用由内核功率管理器从设备驱动器或操作系统的组件接收。
另外或可替代地,操作系统的组件可包括应用功率管理器,应用功率管理器耦合到内核功率管理器,以用与内核级唤醒锁定相关联的调用发信号通知内核功率管理器。
另外或可替代地,该方法可包括:在日志设备驱动器处接收中继的调用;并生成包括中继的调用的指示的补充日志数据。
另外或可替代地,该方法可包括:从系统日志数据提取与应用级唤醒锁定相关联的条目,从补充日志数据提取与内核级唤醒锁定相关联的条目,从系统日志数据提取指示包括处理器组件的计算设备的组件的活动级的条目;时间对准所提取的条目,并在显示器上视觉呈现与应用级唤醒锁定和内核级唤醒锁定相关联的事件以及计算设备的组件的活动级的时间对准的时间线图,事件和活动级在所提取的条目中被指示。
另外或可替代地,该方法可包括:经由网络向调试设备发送系统日志数据和补充日志数据。
在一些示例中,至少一个机器可读存储介质可包括指令,所述指令在由处理器组件执行时使处理器组件:拦截与应用级唤醒锁定相关联的调用,拦截的调用由操作系统的应用功率管理器从应用例程接收;以及与应用功率管理器合作以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示,系统日志生成器生成系统日志数据,所述系统日志数据包括与操作系统的执行相关联的事件的指示以及拦截的调用的指示。
另外或可替代地,可使处理器组件与应用功率管理器合作以收集唤醒锁定数据,所述唤醒锁定数据提供未决的应用级唤醒锁定的指示并将未决的应用级唤醒锁定与应用例程相关,以及与应用功率管理器合作以向系统日志生成器提供未决的应用级唤醒锁定的指示,系统日志生成器在系统日志数据中包括未决的应用级唤醒锁定的指示。
另外或可替代地,可使处理器组件与应用功率管理器合作以收集映射数据,所述映射数据将应用例程与由处理器组件执行的过程或在其上执行应用例程的部分的线程相关,以及与应用功率管理器合作以向系统日志生成器提供映射数据,系统日志生成器在系统日志数据中包括映射数据。
另外或可替代地,拦截的调用可包括请求唤醒锁定的调用或释放未决的唤醒锁定的调用。
另外或可替代地,可使处理器组件发信号通知操作系统的内核功率管理器以向日志设备驱动器中继与内核级唤醒锁定相关联的调用,中继的调用由内核功率管理器从设备驱动器或操作系统的组件接收。
另外或可替代地,操作系统的组件可包括应用功率管理器,应用功率管理器耦合到内核功率管理器,以用与内核级唤醒锁定相关联的调用发信号通知内核功率管理器。
另外或可替代地,可使处理器组件在日志设备驱动器处接收中继的调用,并生成包括中继的调用的指示的补充日志数据。
另外或可替代地,可使处理器组件:从系统日志数据提取与应用级唤醒锁定相关联的条目;从补充日志数据提取与内核级唤醒锁定相关联的条目;从系统日志数据提取指示包括处理器组件的计算设备的组件的活动级的条目;时间对准所提取的条目;并在显示器上视觉呈现与应用级唤醒锁定和内核级唤醒锁定相关联的事件以及计算设备的组件的活动级的时间对准的时间线图,事件和活动级在所提取的条目中被指示。
另外或可替代地,可使处理器组件经由网络向调试设备发送系统日志数据和补充日志数据。
在一些示例中,至少一个机器可读存储介质可包括指令,所述指令在由计算设备运行时使计算设备执行以上任一个。
在一些示例中,一种将处理器组件核布置成执行任务部分的装置可包括用于执行以上任一个的部件。

Claims (34)

1.一种跟踪唤醒锁定事件的装置,包括:
处理器组件;
捕获组件,用于由处理器组件执行以拦截与应用级唤醒锁定相关联的调用,拦截的调用由操作系统的应用功率管理器从应用例程接收;
中继组件,用于由处理器组件执行以与应用功率管理器合作,以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示,系统日志生成器生成系统日志数据,所述系统日志数据包括与通过处理器组件的操作系统的执行相关联的事件的指示以及拦截的调用的指示;
相关组件,从系统日志数据提取与应用级唤醒锁定相关联的条目,从补充日志数据提取与内核级唤醒锁定相关联的条目,从系统日志数据提取指示包括处理器组件的计算设备的组件的活动级的条目,并且时间对准所提取的条目;以及
呈现组件,在显示器上生成和视觉呈现与应用级唤醒锁定和内核级唤醒锁定相关联的事件以及计算设备的组件的活动级的时间对准的时间线图,事件和活动级在所提取的条目中被指示。
2.根据权利要求1所述的装置,包括收集组件,用于由处理器组件执行以与应用功率管理器合作来收集唤醒锁定数据,所述唤醒锁定数据提供未决的应用级唤醒锁定的指示并将未决的应用级唤醒锁定与应用例程相关。
3.根据权利要求2所述的装置,所述中继组件与应用功率管理器合作,以向系统日志生成器提供未决的应用级唤醒锁定的指示,所述系统日志生成器在系统日志数据中包括未决的应用级唤醒锁定的指示。
4.根据权利要求1所述的装置,包括应用功率管理器,应用功率管理器被扩增成包括捕获组件和中继组件。
5.根据权利要求1所述的装置,包括日志设备驱动器的调用组件,用于由处理器组件执行以发信号通知操作系统的内核功率管理器以向日志设备驱动器中继与内核级唤醒锁定相关联的调用,中继的调用由内核功率管理器从设备驱动器或操作系统的组件接收。
6.根据权利要求5所述的装置,操作系统的组件包括应用功率管理器,所述应用功率管理器耦合到内核功率管理器以用与内核级唤醒锁定相关联的调用发信号通知内核功率管理器。
7.根据权利要求5所述的装置,包括:
接收组件,用于由处理器组件执行以在日志设备驱动器处接收中继的调用;以及
记录组件,用于由处理器组件执行以生成包括中继的调用的指示的补充日志数据。
8.根据权利要求7所述的装置,包括接口,向调试设备发送系统日志数据和补充日志数据。
9.一种跟踪唤醒锁定事件的装置,包括:
处理器组件;
相关组件,从系统日志数据提取与针对操作系统的应用功率管理器的应用级唤醒锁定相关联的调用的指示,从补充日志数据提取与针对操作系统的内核功率管理器的内核级唤醒锁定相关联的调用的指示,并从系统日志数据提取在其上执行操作系统的计算设备的组件的活动级的指示;以及
呈现组件,在显示器上生成和视觉呈现与应用级唤醒锁定相关联的调用、与内核级唤醒锁定相关联的调用以及计算设备的组件的活动级方面的改变的时间对准的时间线图。
10.根据权利要求9所述的装置,相关组件从系统日志数据和补充日志数据之一提取映射信息,所述映射信息包括在计算设备上执行的应用例程与在计算设备上执行的过程和计算设备的执行的线程之一的相关性的指示。
11.根据权利要求10所述的装置,相关组件采用相关性的指示来将与应用级唤醒锁定相关联的调用的至少两个指示相关。
12.根据权利要求9所述的装置,包括控制,所述呈现组件监视控制以接收传送命令以选择将时间线图所时间对准到的时间段的控制的操作的指示。
13.一种用于跟踪唤醒锁定事件的计算机实现的方法,包括:
拦截与应用级唤醒锁定相关联的调用,拦截的调用由操作系统的应用功率管理器从应用例程接收;
与应用功率管理器合作以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示,系统日志生成器生成系统日志数据,所述系统日志数据包括与操作系统的执行相关联的事件的指示以及拦截的调用的指示;
从系统日志数据提取与应用级唤醒锁定相关联的条目;
从补充日志数据提取与内核级唤醒锁定相关联的条目;
从系统日志数据提取指示包括处理器组件的计算设备的组件的活动级的条目;
时间对准所提取的条目;以及
在显示器上视觉呈现与应用级唤醒锁定和内核级唤醒锁定相关联的事件以及计算设备的组件的活动级的时间对准的时间线图,事件和活动级在所提取的条目中被指示。
14.根据权利要求13所述的计算机实现的方法,包括:与应用功率管理器合作以收集唤醒锁定数据,所述唤醒锁定数据提供未决的应用级唤醒锁定的指示并将未决的应用级唤醒锁定与应用例程相关。
15.根据权利要求14所述的计算机实现的方法,包括:与应用功率管理器合作以向系统日志生成器提供未决的应用级唤醒锁定的指示,所述系统日志生成器在系统日志数据中包括未决的应用级唤醒锁定的指示。
16.根据权利要求13所述的计算机实现的方法,包括:与应用功率管理器合作以收集映射数据,所述映射数据将应用例程与由处理器组件执行的过程或在其上执行应用例程的部分的线程相关。
17.根据权利要求16所述的计算机实现的方法,包括:与应用功率管理器合作以向系统日志生成器提供映射数据,所述系统日志生成器在系统日志数据中包括映射数据。
18.根据权利要求13所述的计算机实现的方法,拦截的调用包括请求唤醒锁定的调用或释放未决的唤醒锁定的调用。
19.根据权利要求13所述的计算机实现的方法,包括:发信号通知操作系统的内核功率管理器以向日志设备驱动器中继与内核级唤醒锁定相关联的调用,中继的调用由内核功率管理器从设备驱动器或操作系统的组件接收。
20.根据权利要求19所述的计算机实现的方法,操作系统的组件包括应用功率管理器,应用功率管理器耦合到内核功率管理器,以用与内核级唤醒锁定相关联的调用发信号通知内核功率管理器。
21.根据权利要求19所述的计算机实现的方法,包括:
在日志设备驱动器处接收中继的调用;以及
生成包括中继的调用的指示的补充日志数据。
22.根据权利要求21所述的计算机实现的方法,包括:经由网络向调试设备发送系统日志数据和补充日志数据。
23.一种接收包括用于执行根据权利要求13-22中任一项所述的方法的部件的命令的装置。
24.一种用于跟踪唤醒锁定事件的装置,包括:
用于拦截与应用级唤醒锁定相关联的调用的部件,拦截的调用由操作系统的应用功率管理器从应用例程接收;
用于与应用功率管理器合作以向耦合到应用功率管理器的操作系统的系统日志生成器提供拦截的调用的指示的部件,系统日志生成器生成系统日志数据,所述系统日志数据包括与操作系统的执行相关联的事件的指示以及拦截的调用的指示;
用于从系统日志数据提取与应用级唤醒锁定相关联的条目的部件;
用于从补充日志数据提取与内核级唤醒锁定相关联的条目的部件;
用于从系统日志数据提取指示包括处理器组件的计算设备的组件的活动级的条目的部件;
用于时间对准所提取的条目的部件;以及
用于在显示器上视觉呈现与应用级唤醒锁定和内核级唤醒锁定相关联的事件以及计算设备的组件的活动级的时间对准的时间线图的部件,事件和活动级在所提取的条目中被指示。
25.根据权利要求24所述的装置,包括:用于与应用功率管理器合作以收集唤醒锁定数据的部件,所述唤醒锁定数据提供未决的应用级唤醒锁定的指示并将未决的应用级唤醒锁定与应用例程相关。
26.根据权利要求25所述的装置,包括:用于与应用功率管理器合作以向系统日志生成器提供未决的应用级唤醒锁定的指示的部件,所述系统日志生成器在系统日志数据中包括未决的应用级唤醒锁定的指示。
27.根据权利要求24所述的装置,包括:用于与应用功率管理器合作以收集映射数据的部件,所述映射数据将应用例程与由处理器组件执行的过程或在其上执行应用例程的部分的线程相关。
28.根据权利要求27所述的装置,包括:用于与应用功率管理器合作以向系统日志生成器提供映射数据的部件,所述系统日志生成器在系统日志数据中包括映射数据。
29.根据权利要求24所述的装置,拦截的调用包括请求唤醒锁定的调用或释放未决的唤醒锁定的调用。
30.根据权利要求24所述的装置,包括:用于发信号通知操作系统的内核功率管理器以向日志设备驱动器中继与内核级唤醒锁定相关联的调用的部件,中继的调用由内核功率管理器从设备驱动器或操作系统的组件接收。
31.根据权利要求30所述的装置,操作系统的组件包括应用功率管理器,应用功率管理器耦合到内核功率管理器,以用与内核级唤醒锁定相关联的调用发信号通知内核功率管理器。
32.根据权利要求30所述的装置,包括:
用于在日志设备驱动器处接收中继的调用的部件;以及
用于生成包括中继的调用的指示的补充日志数据的部件。
33.根据权利要求32所述的装置,包括:用于经由网络向调试设备发送系统日志数据和补充日志数据的部件。
34.一种计算机可读介质,其上存储有指令,所述指令当被运行时使计算设备执行根据权利要求13-22中任一项所述的方法。
CN201380079156.7A 2013-09-27 2013-09-27 用于跟踪唤醒锁定使用的技术 Active CN105474125B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/062291 WO2015047312A1 (en) 2013-09-27 2013-09-27 Techniques for tracing wakelock usage

Publications (2)

Publication Number Publication Date
CN105474125A CN105474125A (zh) 2016-04-06
CN105474125B true CN105474125B (zh) 2019-01-01

Family

ID=52741369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380079156.7A Active CN105474125B (zh) 2013-09-27 2013-09-27 用于跟踪唤醒锁定使用的技术

Country Status (6)

Country Link
US (1) US9965014B2 (zh)
EP (1) EP3049886A4 (zh)
JP (1) JP6333965B2 (zh)
KR (1) KR101873794B1 (zh)
CN (1) CN105474125B (zh)
WO (1) WO2015047312A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9516127B2 (en) 2013-03-25 2016-12-06 Seven Networks, Llc Intelligent alarm manipulator and resource tracker
US9351254B2 (en) * 2014-01-22 2016-05-24 Seven Networks, Llc Method for power saving in mobile devices by optimizing wakelocks
EP3062142B1 (en) 2015-02-26 2018-10-03 Nokia Technologies OY Apparatus for a near-eye display
CN105183123B (zh) * 2015-09-21 2018-01-09 北京元心科技有限公司 一种在基于容器的多系统中进行电源管理的方法和装置
CN106662907B (zh) * 2015-10-29 2019-10-22 华为技术有限公司 基于终端的唤醒锁控制方法、装置及终端
CN105530377B (zh) * 2015-12-14 2019-03-15 Oppo广东移动通信有限公司 一种唤醒锁的处理方法、装置及系统
US10095305B2 (en) * 2016-06-18 2018-10-09 Qualcomm Incorporated Wake lock aware system wide job scheduling for energy efficiency on mobile devices
CN106125891A (zh) * 2016-06-24 2016-11-16 北京奇虎科技有限公司 终端电量优化方法、装置及终端
CN106372543A (zh) * 2016-08-31 2017-02-01 上海摩软通讯技术有限公司 一种基于移动终端的资源控制方法及装置
US10650552B2 (en) 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
EP4300160A2 (en) 2016-12-30 2024-01-03 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
EP3410285B1 (en) 2017-04-17 2019-09-25 Shenzhen Goodix Technology Co., Ltd. Electronic device and detection method
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
CN107484022B (zh) * 2017-08-07 2020-06-30 四川长虹电器股份有限公司 Android智能电视上实现系统全局屏保的方法
CN107547742B (zh) * 2017-08-30 2020-10-02 深圳辉烨物联科技有限公司 一种用于移动终端的唤醒锁释放方法和装置
US11280937B2 (en) 2017-12-10 2022-03-22 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
WO2019126331A1 (en) 2017-12-20 2019-06-27 Magic Leap, Inc. Insert for augmented reality viewing device
US10755676B2 (en) 2018-03-15 2020-08-25 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
JP7319303B2 (ja) 2018-05-31 2023-08-01 マジック リープ, インコーポレイテッド レーダ頭部姿勢位置特定
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
WO2020010226A1 (en) 2018-07-03 2020-01-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
WO2020023543A1 (en) 2018-07-24 2020-01-30 Magic Leap, Inc. Viewing device with dust seal integration
JP7426982B2 (ja) 2018-07-24 2024-02-02 マジック リープ, インコーポレイテッド 移動検出デバイスの温度依存較正
CN112740665A (zh) 2018-08-02 2021-04-30 奇跃公司 基于头部运动的瞳孔间距离补偿的观察系统
CN116820239A (zh) 2018-08-03 2023-09-29 奇跃公司 图腾在用户交互系统中的融合姿势的基于未融合姿势的漂移校正
US10914949B2 (en) 2018-11-16 2021-02-09 Magic Leap, Inc. Image size triggered clarification to maintain image sharpness
EP3921720A4 (en) * 2019-02-06 2022-06-29 Magic Leap, Inc. Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors
EP3939030A4 (en) 2019-03-12 2022-11-30 Magic Leap, Inc. REGISTRATION OF LOCAL CONTENT BETWEEN FIRST AND SECOND VIEWERS OF AUGMENTED REALITY
CN114127837A (zh) 2019-05-01 2022-03-01 奇跃公司 内容提供系统和方法
CN114174895A (zh) 2019-07-26 2022-03-11 奇跃公司 用于增强现实的系统和方法
JP2023502927A (ja) 2019-11-15 2023-01-26 マジック リープ, インコーポレイテッド 外科手術環境において使用するための視認システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779187B1 (en) * 1999-04-08 2004-08-17 Novadigm, Inc. Method and system for dynamic interception of function calls to dynamic link libraries into a windowed operating system
CN102023887A (zh) * 2009-09-21 2011-04-20 联想(北京)有限公司 一种计算机系统的电源管理方法及计算机系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374369B1 (en) * 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor
US8368697B2 (en) * 2002-07-02 2013-02-05 Wind River Systems, Inc. Providing an overview of a large event sample period that supports triage and navigation
JP4886188B2 (ja) * 2004-12-16 2012-02-29 キヤノン株式会社 情報処理装置及びその制御方法、コンピュータプログラム及び記憶媒体
US8476787B2 (en) * 2009-03-27 2013-07-02 Schneider Electric It Corporation System and method for changing power states of a power device
US8280456B2 (en) * 2009-08-14 2012-10-02 Google Inc. Providing a user with feedback regarding power consumption in battery-operated electronic devices
JP5503365B2 (ja) * 2010-03-25 2014-05-28 キヤノン株式会社 デバイス管理システム、管理装置、デバイス管理方法及びプログラム
US8806246B1 (en) * 2010-05-05 2014-08-12 Crimson Corporation Enforcing and complying with a computing device power policy
CN101895975A (zh) 2010-07-22 2010-11-24 中兴通讯股份有限公司 一种进入待机模式的方法及其应用的移动终端
KR20120091551A (ko) 2011-02-09 2012-08-20 엘지전자 주식회사 이동 단말기 및 그 제어 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779187B1 (en) * 1999-04-08 2004-08-17 Novadigm, Inc. Method and system for dynamic interception of function calls to dynamic link libraries into a windowed operating system
CN102023887A (zh) * 2009-09-21 2011-04-20 联想(北京)有限公司 一种计算机系统的电源管理方法及计算机系统

Also Published As

Publication number Publication date
KR20160033767A (ko) 2016-03-28
WO2015047312A1 (en) 2015-04-02
CN105474125A (zh) 2016-04-06
KR101873794B1 (ko) 2018-07-03
US9965014B2 (en) 2018-05-08
EP3049886A1 (en) 2016-08-03
EP3049886A4 (en) 2017-05-17
US20150095682A1 (en) 2015-04-02
JP2016540268A (ja) 2016-12-22
JP6333965B2 (ja) 2018-05-30

Similar Documents

Publication Publication Date Title
CN105474125B (zh) 用于跟踪唤醒锁定使用的技术
CN101292226B (zh) 用于线程通信和同步的设备、系统和方法
CN104025050A (zh) 在图形处理单元上虚拟机之间变化
CN102289388B (zh) 服务器管理ipmi接口协议的扩展方法
US9552221B1 (en) Monitoring application execution using probe and profiling modules to collect timing and dependency information
CN108885775B (zh) 一种显示方法及终端
CN109064538A (zh) 视图渲染方法、装置、存储介质及智能终端
CN108681498A (zh) 一种cpu占用率的监测方法、装置以及移动终端
CN107545067A (zh) 日志信息上报方法、装置及存储介质、adsp和终端
CN106462329A (zh) 轻解除管理器
Delabrida et al. Building wearables for geology: An operating system approach
CN108664285A (zh) 应用程序预加载方法、装置、存储介质及移动终端
US20150200807A1 (en) Dynamic server to server configuration and initialization
CN110032429A (zh) 信息处理方法、装置、移动终端及计算机可读存储介质
CN114463163A (zh) 一种异构多核的图像处理方法及装置
CN107562602B (zh) 日志信息上报方法、装置及存储介质、adsp和终端
CN107609114A (zh) 日志信息上报方法、装置及存储介质、adsp和终端
US20140082228A1 (en) Remotely located timing method and device for a processing unit in an information processing system
US10962593B2 (en) System on chip and operating method thereof
JP7017959B2 (ja) 自動取引装置及びそれを含んだサイネージシステム
CN110347639A (zh) 片上系统及其操作方法
Chen et al. A User-Centric CPU-GPU Governing Framework for 3-D Mobile Games
CN113806183A (zh) 应用卡顿处理方法、装置、设备、存储介质和程序产品
CN109144844A (zh) 追踪方法、装置、设备和机器可读介质
US10936047B2 (en) Power state management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant