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

文档序号:9713493阅读:来源:国知局
和回放,使得通过从耦合到计算设备300的显示器撤回功率或通过降低处理器组件350的时钟速度表征的较低功率模式可中断该应用例程370执行任一功能的能力。
[0028]图3描绘用于使用和调试唤醒锁定的计算设备300的组件的操作的实施例。如所描绘的,操作系统340可合并管理应用级唤醒锁定的应用功率管理器347和管理包括与应用功率管理器347相关联的内核级唤醒锁定的内核级唤醒锁定的内核功率管理器341 二者。操作系统340可还合并系统日志生成器344以生成系统日志数据337,并且可另外合并系统监视器345以监视计算设备300的操作的各种参数以供记录在系统日志数据337中。
[0029]在应用例程370之一的正常执行期间,其中应用例程370之一需要唤醒锁定,应用例程370之一向应用功率管理器347发送请求唤醒锁定的调用。所使用的调用是由应用功率管理器347提供以供应用例程370使用的API的函数调用。调用包括识别信息,该识别信息将进行调用的应用例程370之一识别为请求唤醒锁定并且与该唤醒锁定相关联的例程。识别信息可包括直接由应用例程370提供作为调用的参数的应用例程370之一的标识符,和/或从其接收调用并且在其上由处理器组件350执行应用例程370中的那一个应用例程的一部分的线程的标识符。操作系统340可在系统数据330内维持映射数据,所述映射数据将调用可接收自的线程的标识符与在那些线程上执行的应用例程370(和其他例程)中的特定一些相关。系统数据330包含操作系统340的正常操作所需的各种数据片,并且可存储在储存器360内的位置中,对储存器360的访问被极大地限制以防止意外或恶意更改。
[0030]响应于接收对于唤醒锁定的请求,应用功率管理器347使应用级唤醒锁定实例化,并且同样地,将其与请求它的应用例程370之一相关联。在这样做时,应用功率管理器347可创建在系统数据330内维持的唤醒锁定数据中的条目,其将所请求的应用唤醒锁定与请求它的应用例程370之一相关并包括应用唤醒锁定当前未决的指示。在应用级唤醒锁定的实例化的情况下,应用级唤醒锁定然后是“活动的”或“未决的”,并且甚至存在一个未决的唤醒锁定防止计算设备300转变成较低功率状态的事实。为了允许计算设备300转变到较低功率状态,必须首先释放活动或未决的任何和所有唤醒锁定。在接收随后的调用以释放与应用例程370之一相关联的唤醒锁定时,该随后的调用的识别信息用于识别要释放哪个应用唤醒锁定,并且可用该唤醒锁定不再未决的指示清除或标记唤醒锁定中的条目。因此,释放未决的唤醒锁定的调用导致该唤醒锁定不再活动,使得不再能够防止计算设备转变成较低功率状态,虽然可能存在仍然可防止转变成较低功率状态的仍然未决的一个或多个其它唤醒锁定。如先前所讨论的,每当任何应用级唤醒锁定未决时,应用功率管理器347将所有未决的应用级唤醒锁定聚合成内核功率管理器341的它请求的较少数量的内核级唤醒锁定。换句话说,只要存在任何未决的应用级唤醒锁定,应用功率管理器就与内核功率管理器通信,以使与应用功率管理器347相关联的有限数量的内核级唤醒锁定也未决。在一些实施例中,可能仅存在与应用功率管理器347相关联的一个内核级唤醒锁定。
[0031]因此,如果在当没有任何应用级唤醒锁定已经未决时由应用功率管理器347接收针对唤醒锁定的请求,则应用功率管理器347用针对与应用功率管理器347相关联的内核级唤醒锁定的请求发信号通知内核功率管理器341。否则,如果在当至少一个应用级唤醒锁定已经未决时由应用功率管理器347接收对唤醒锁定的请求,则应用功率管理器347可不再次用针对与应用功率管理器347相关联的内核级唤醒锁定的请求发信号通知内核功率管理器341,因为内核级唤醒锁定应当已经未决。只有当不再存在任何未决的应用唤醒锁定(例如已经释放曾经未决的所有应用级唤醒锁定)时,应用功率管理器347才向内核功率管理器341发送调用,以释放与应用功率管理器347相关联的内核级唤醒锁定。
[0032]从应用功率管理器347到内核功率管理器341以请求或释放与应用功率管理器341相关联的内核级唤醒锁定的调用包括识别信息,该识别信息将应用功率管理器341识别为调用的源。该相同调用机制也可由操作系统340的其它内核级组件和/或由设备驱动器310使用,以直接请求内核级唤醒锁定或释放它们。不是不象与由应用功率管理器347接收的唤醒锁定相关的调用,在与由内核功率管理器341接收的唤醒锁定相关的至少一些调用中的识别信息可包括:由发送调用的任何物作为调用的参数所提供的标识符,和/或从其接收调用的线程或操作系统过程的标识符。系统数据330的映射信息可由内核功率管理器341用于将线程或操作系统过程的标识符与应用功率管理器347、操作系统340的内核级组件、或者设备驱动器310之一相关。然而,在一些实施例中,提供这样的信息的这样的调用的仅一个可以是来自应用功率管理器347的调用,并且那些可能仅仅将应用功率管理器347识别为调用的源。内核功率管理器341还可做出和清除系统数据330的唤醒锁定数据中的条目,作为跟踪哪些内核级唤醒锁定当前未决及其与请求它们的无论什么操作系统组件或设备驱动器310的关联的机制。如先前所讨论的,内核功率管理器341可能是操作系统340的部分,其通过使计算设备300在各种较低和/或较高功率状态之间转变而至少作用于未决的唤醒锁定的存在或不存在。
[0033]应当指出的是:用于至少请求唤醒锁定的调用可合并一个或多个指示器标志作为参数,以指示所请求的唤醒锁定中期望的特定特征。通过示例的方式,请求唤醒锁定的调用可指定唤醒锁定限于针对被置于较低功率状态而锁定计算设备300的特定资源或组件(例如显示器、特定的存储介质设备等)。还应当指出的是:各种调试标志或消息可被合并到与唤醒锁定相关的调用中,以提供应用例程的一部分的状态的某个指示和/或应用例程的什么部分需要唤醒锁定的某个指示。这样的调试标志或消息的这样的合并可作为这样的调用中传送的参数。应当进一步指出的是:至少内核级唤醒锁定可被请求以成为自到期(self-expiring)的唤醒锁定,其在选择的时间段已经过去之后、由于响应于被请求而被实例化而自动地停止未决。这样的选择的时间段可被指定为请求唤醒锁定的调用的参数,或者可能是预定的时间段(例如可能通过将不同的时间段指定为参数而被覆盖的默认时间段)。
[0034]在操作系统340的正常执行期间,系统日志生成器344循环地将条目添加到记录事件的所选集的发生的系统日志数据337。在所选集中可能是在计算设备300的功率状态之间的改变的发生、系统错误的发生、尝试对储存器360的特定部分(例如其中存储系统数据330的部分)的不适当访问的发生等。系统监视器345可监视计算设备300的操作的各种方面(例如其当前功率状态),以给系统日志生成器344供应它在系统日志数据337中记录的信息中的至少一些。系统日志生成器344也可例行地与时钟351通信,以获得当前时间,以供在对其添加到系统日志数据337中的条目加时间戳中使用。
[0035]如先前所讨论的,提供对唤醒锁定的支持可由唤醒锁定程序错误伴随,在唤醒锁定程序错误中唤醒锁定被错误地维持得长得足以导致计算设备300的诸如电池(未具体示出)之类的有限的电功率源的耗尽。如先前也讨论过的,由操作系统提供的用于调试唤醒锁定程序错误的典型支持是在系统日志数据中仅仅包括唤醒锁定是否未决的指示,而没有哪个应用例程、操作系统组件或设备驱动器具有未决的唤醒锁定的指示。
[0036]然而,如图3中所描绘,应用功率管理器347被扩增有日志补丁例程177以克服系统日志数据337中信息的这种缺乏。在一些实施例中,日志补丁例程177可链接(动态或静态地)到应用功率管理器347(例如日志补丁例程177可实现替代另一个库的可调用函数的可调用函数库),以经由调用机制耦合它们。在其它实施例中,日志补丁例程177可在编译之前被合并到应用功率管理器347中(例如可组合二者的指令序列以经由编译有效地创建单个组合例程),以更彻底地耦合它们。本领域技术人员可以想到再其他的扩增机制。
[0037]日志补丁例程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的附加条目加时间戳。
[0038]此外,也如图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所做的一样。
[0039]用附加数据334的条目扩增系统日志数据337和/或生成补充日志数据331可由启用或者禁用“调试模式”的相同的模式设置选择性地触发,“调试模式”导致在系统日志数据337中包括记录较大事件集的条目。如先前所讨论的,可提供支持以用于在计算设备300的操作者的控制下切换到调试模式中和切换出调试模式。因此,在实现日志补丁例程177和/或日志设备驱动器171的功能性之前,操作系统340可在一些时间内由处理器组件350执行,使得一个或多个应用级或内核级唤醒锁定可能已经在适当位置。在一些实施例中,日志补丁例程177在被实现时可使应用功率管理器347向系统日志生成器344提供所有应用级唤醒锁定已经未决的指示以供记录为附加数据334的一部分。可替代地或另外,日志设备驱动器171在被实现时可请求关于已经未决的任何内核级唤醒锁定的内核功率管理器的信息,并且可在补充记录数据331中记录这样的信息。此外,至少日志补丁例程177可使应用功率管理器347检索系统数据330的映射数据中的至少一些,并将其提供给系统日志生成器344以供记录为附加数据334的一部分。
[0040]返回到图1,计算设备300可经由网络999和/或通过另一个机制(例如通过使用可移除存储介质)从服务器100接收日志补丁例程171和日志设备驱动器177。可替代地,并且虽然未具体示出,计算设备300可从调试设备500接收日志补丁例程171和日志设备驱动器177,如果存在的话。此外,给定日志补丁例程171可与应用功率管理器347被编译在一起,使得它们可能是集成的,计算设备300可通过接收其中集成有日志补丁例程171的应用功率管理器347的版本来接收日志补丁例程171。
[0041 ] 在各种实施例中,调试设备500(如果存在)合并处理器组件550、储存器560、控制520、显示器580和接口590中的一个或多个,以将调试设备500耦合到网络999。储存器560存储系统日志数据337、补充日志数据331、对准的跟踪数据534和调试例程570。调试例程570合并指令序列,该指令序列在其作为远程计算设备500的主处理器组件的角色中可在处理器组件550上操作,以实现执行各种功能的逻辑。
[0042]在执行调试例程570时,处理器组件550经由网络999或者经由另一个机制(例如通过使用可移除存储介质)从计算设备300接收系统日志数据337和补充日志数据331。处理器组件550解析系统日志数据337(其中包括附加数据334)和补充日志数据331中的每一个,以提取与唤醒锁定相关联的事件或其它信息的所有指示以及任何映射数据。处理器组件550也可提取关于计算设备300的各种组件的活动的级或类型的信息(例如处理器组件350的利用级和/或时钟速度,通过接口 390的数
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1