一种软实时定时器调度的方法及软实时定时器模块的制作方法

文档序号:6462104阅读:150来源:国知局
专利名称:一种软实时定时器调度的方法及软实时定时器模块的制作方法
技术领域
本发明涉及手机领域,尤其涉及一种在手机平台架构中软实时定时器调 度的方法及软实时定时器模块。
背景技术
应用于手机领域中的各种操作系统本身提供一组定时器函数接口 ,利用 硬件时钟中断,在中断上下文或线程上下文执行用户实体函数,实现定时器执行及调度;但各个操作系统提供的定时器函数接口不尽相同,不能直接满 足手机平台要求及可移植性,更不能满足手机平台上层用户的诸多需求,如 对定时器使用量大、占用系统资源少、函数接口入参丰富、方便编程使用及 能够对定时器进行暂停继续操作。因此当前需要一种软实时定时器调度的技 术方案。发明内容本发明所要解决的技术问题是提供一种软实时定时器调度的方法及软 实时定时器模块,通过消息机制,当定时器到期时向上层用户发送指定消息, 能够满足手机平台可移植性及手机平台上层用户的诸多需求。为了解决上述问题,本发明提供了一种软实时定时器模块,包括中断单元、调度单元、初始化单元和管理单元,其中,调度单元,用于对创建的软实时定时器进行定时器调度线程的控制,内 部为一无P艮循环体,循环体内一直获取计数信号量;中断单元,用于对创建的软实时定时器进行定时器中断控制,释放计数 信号量;其中,调度单元与中断单元通过一个计数信号量进行同步;初始化单元,用于对软实时定时器的全局变量进行初始化,4吏中断单元与硬件时钟中断号进行挂接,并初始化调度单元;所述软实时定时器的全局 变量包括计数信号量;管理单元,是用户控制软实时定时器的前台窗口,用户通过管理单元来 创建各种软实时定时器,并对该软实时定时器设定各种操作指令。进一步地,上述软实时定时器模块还可包括,所述管理单元设定的操作 指令包括删除软实时定时器、暂停软实时定时器、继续软实时定时器;以及所述管理单元创建的各种软实时定时器包括创建相对非周期性软实时 定时器、相对周期性软实时定时器、绝对非周期性软实时定时器。进一步地,上述软实时定时器模块还可包括,所述调度单元还用于存放 一维双向链表头数组的时刻表;其中数组元素个数代表时刻总数,数组元素 个数乘以时刻间隔时间所得时间数即为定时器调度线程循环一圈所代表的 时间数;所述调度单元对创建的软实时定时器进行定时器调度线程的控制是指, 对于设定时间小于一圈代表的时间数的短时相对软实时定时器,只需将设定 时间除以时刻间隔时间所得商,再加上当前时刻所得和,对时刻总数求余, 即得出在何时刻调度该软实时定时器,将该软实时定时器挂接到该时刻代表 的链表尾;对于设定时间大于一圈代表的时间数的长时相对软实时定时器转 换成短时相对软实时定时器,^L需对软实时定时器增加一圈数的参凄t,当圈 数为0时才调度该软实时定时器,当圈数不为0时,仅对圈数减一;对于绝 对非周期性软实时定时器,则根据当前时间、时刻转换成相对软实时定时器 进行存放;对于周期性软实时定时器,则仅需在软实时定时器结构体内增加 一周期性标志的参数,当周期性软实时定时器时间到期,根据创建软实时定 时器时的输入参数及当前时刻重新计算下一次调度时刻,将该软实时定时器 重新挂接到对应链表尾。进一步地,上述软实时定时器模块还可包括,所述调度单元与中断单元 通过一个计数信号量进行同步是指,中断单元释放计数信号量多少次,同时 调度单元就能够获取计数信号量多少次,并在定时器调度线程内更新当前时刻。本发明还提供了5、 一种软实时定时器调度的方法,包括,对软实时定时器的全局变量进行初始化,使软实时定时器的中断服务程序与硬件时钟中断号进行挂接,并创建一个软实时定时器调度线程;用户创建各种软实时定时器,并对该软实时定时器设定各种操作指令;根据创建的软实时定时器,软实时定时器调度线程一直获取计数信号 量,中断服务程序释放计数信号量,执行该软实时定时器的调度,其中软实 时定时器调度线程与中断服务程序通过一个计数信号量进行同步。进一步地,上述方法还可包括,所述操作指令包括删除软实时定时器、 暂停软实时定时器、继续软实时定时器;所述创建各种软实时定时器包括创 建相对非周期性软实时定时器、相对周期性软实时定时器、绝对非周期性软 实时定时器。进一步地,上述方法还可包括,所述对软实时定时器的全局变量进行初 始化是指,调用通用链表初始化函数,初始化静态全局链表头数组,创建一 个计数信号量并初始化为不可获取,创建一个互斥体并初始化为可获取,初 始化时间游标。进一步地,上述方法还可包括,软实时定时器调度线程与中断服务程序 通过一个计数信号量进行同步是指,中断服务程序释放计数信号量多少次, 同时软实时定时器调度线程就能够获取计数信号量多少次,并在调度线程内 更新当前时刻。进一步地,上述方法还可包括,所述软实时定时器调度线程一直获取计 数信号量,中断服务程序释放计数信号量,执行软实时定时器的调度的过程 中,进一步包括,软实时定时器调度线程根据创建软实时定时器输入参数及当前时刻,计 算出下一次调度的时刻及时间圈数,根据计算出来的调度时刻,挂接到调度时刻对应的链表尾;软实时定时器调度线程采用游标方式来控制短时长的软实时定时器,采 用一时间数组,游标移动一次所需时间为软实时定时器设置的最小单位,数组元素个数即为游标转一 圈所需要时间除以时刻间隔时间,用游标来表示当前时刻;其中每个数组元素都是一个链表头,该时刻到期的软实时定时器都添加到对应的链表下;软实时中断服务程序只负责释放计数信号量,与软实时定时器调度线程 进行同步;软实时定时器调度线程不停地等待获取计数信号量, 一旦获取到 计数信号量,则查询当前时刻对应的链表,对挂接在链表下的软实时定时器 进行更新,如果软实时定时器时间未到期,则仅更新时间参数;如果到期, 则更新时间参数的同时向创建软实时定时器任务宏发送指定消息,并根据软 实时定时器类型做相应处理;整个链表查询完毕后,再继续等待获取计数信 号量。进一步地,上述方法还可包括,如果直接使用手机操作系统提供的软实 时定时器,则需设置系统软实时定时器为最小单位的周期性软实时定时器, 在系统软实时定时器内部执行软实时定时器中断控制。与现有技术相比,应用本发明,通过消息机制,当定时器到期时向上层 用户发送指定消息,能够满足手机平台可移植性及手机平台上层用户的诸多 需求,如对定时器使用量大、占用系统资源少、函数接口入参丰富、方便编 程使用及能够对定时器进行暂停继续操作;而且定时器中断函数只负责释放 信号量,操作简单,CPU占用时间短,定时器超时也不会造成系统问题, 用户不需要编写定时器回调函数。


图1为本发明的软实时定时器模块的结构示意图;图2为本发明的软实时定时器调度的方法的流程图;图3为本发明的创建软实时定时器的流程图;图4为本发明的暂停软实时定时器的流程图;图5为本发明的继续软实时定时器的流程图;图6为本发明的删除软实时定时器的流程图;图7为本发明的软实时定时器调度线程的实现原理图;图8为本发明的软实时定时器调度线程的调度流程图。
具体实施方式
下面结合附图和具体实施方式
对本发明作进一步说明。如图1所示,本发明的软实时定时器模块包括初始化单元、中断单元、 调度单元和管理单元,其中,如果直接使用手机操作系统提供的定时器,则需设置系统定时器 为最小单位的周期性定时器,在系统定时器内部执行软实时定时器中断控 制。初始化单元,该初始化单元用于对软实时定时器的全局变量进行初始 化,初始化中断单元和初始化调度单元;其中,软实时定时器的全局变量包括计数信号量。初始化中断单元是指,使中断单元与硬件时钟中断号进行挂接。管理单元,是用户控制软实时定时器的前台窗口,用户通过管理单元可以创建各种软实时定时器,并对该软实时定时器设定各种才喿作指令;各种操作指令包括删除软实时定时器、暂停软实时定时器、继续软实时 定时器等;创建各种软实时定时器包括创建相对非周期性软实时定时器、相对周期 性软实时定时器、绝对非周期性软实时定时器等。调度单元,用于对管理单元已创建的软实时定时器进行定时器调度线程 的控制,内部包括一无P艮循环体,循环体内一直获取计数信号量;调度单元包括一张时刻表,该时刻表存放着一维双向链表头数组。数组元素个数代表时刻总数,数组元素个数乘以时刻间隔时间所得时间 数即为定时器调度线程循环一 圈所代表的时间数。调度单元对软实时定时器进行定时器调度线程的控制是指,对于设定时 间小于一圈代表的时间数的短时相对软实时定时器,只需将设定时间除以时 刻间隔时间所得商,再加上当前时刻所得和,对时刻总数求余,即得出在何时刻调度该软实时定时器,将该软实时定时器挂接到该时刻代表的链表尾; 对于设定时间大于一圈代表的时间数的长时相对软实时定时器转换成短时 相对软实时定时器,仅需对软实时定时器增加一圈数的参数,当圏数为0时 才调度该软实时定时器,当圈数不为0时,仅对圈数减一;对于绝对非周期 性软实时定时器,则根据当前时间、时刻转换成相对软实时定时器进行存放; 对于周期性软实时定时器,则仅需在软实时定时器结构体内增加一周期性标 志的参数,当周期性软实时定时器时间到期,根据创建软实时定时器时的输 入参数及当前时刻重新计算下一次调度时刻,将该软实时定时器重新挂接到 对应链表尾。一维数组元素的个数的多少取决于对软实时定时器的实时性能要求;在 时刻间隔不变的情况下,数组越大,设定的软实时定时器就越可能分散在表 的不同位置,调度线程一次需调度的软实时定时器数量越可能少,实时性就 越高,占用系统资源就越多。中断单元,用于控制管理单元已创建的软实时定时器的定时器中断,释 放计数信号量;其中调度单元与中断单元通过一个计数信号量进行同步。所述调度单元与中断单元通过一个计数信号量进行同步是指,中断单元 释》丈计数信号量多少次,同时调度单元就能够获取计数信号量多少次,并在 定时器调度线程内更新当前时刻;即通过计数信号量实现调度单元的定时器 调度线程的控制与中断单元的中断控制同步,保证某时刻下所有软实时定时 器都被调度,又保证当前时刻软实时定时器不跳变。由于定时器调度线程执行完一次循环的最大时间不确定,依赖当前时刻 所设定的定时器的数量,故称之为软实时定时器。如图2所示,软实时定时器调度的方法的具体实施包括下几个步骤步骤IOO、对软实时定时器的全局变量进行初始化,使软实时定时器中 断服务程序与硬件时钟中断号进行挂接,并创建一个软实时定时器调度线程;调用通用链表初始化函数,初始化静态全局链表头数组,创建一个计数 信号量并初始化为不可获取,创建一个互斥体并初始化为可获取,初始化时间游标,创建一个软实时定时器调度线程;将软实时定时器中断服务程序与 硬件时钟中断号进行挂接。如果直接使用手机操作系统提供的软实时定时器,则需设置系统软实时 定时器为最小单位的周期性软实时定时器,在系统软实时定时器内部执行软 实时定时器中断控制。步骤200、用户可以创建各种软实时定时器,并对该软实时定时器设定 各种操作指令;图3-图6中,分别为创建、暂停、继续、删除软实时定时器的流程图, 通过提供一组函数接口实现软实时定时器(相对时间软实时定时器或绝对时 间软实时定时器、周期性软实时定时器或非周期性软实时定时器)的设置(创 建)、删除、暂停、继续,当软实时定时器指定时间到达时,执行该软实时 定时器的操作任务。手机平台用户在任务环境下,直接调用软实时定时器模块提供的函数接 口即可创建周期性、非周期性、绝对时间软实时定时器。步骤300、根据用户对软实时定时器的操作指令,软实时定时器调度线 程一直获取计数信号量,中断服务程序释放计数信号量,执行该软实时定时 器的调度,其中,软实时定时器调度线程与中断服务程序通过一个计数信号 量进行同步。其中,软实时定时器调度线程与中断服务程序通过一个计数信号量进行 同步是指,中断服务程序释放计数信号量多少次,同时软实时定时器调度线 程就能够获取计数信号量多少次,并在软实时定时器调度线程内更新当前时 刻,即通过计数信号量实现软实时定时器调度线程与中断服务程序同步。软实时定时器调度线程根据创建软实时定时器输入参数及当前时刻,计 算出下一次调度的时刻及时间圏数,根据计算出来的调度时刻,挂接到调度 时刻对应的链表尾。如图7所示,软实时定时器调度线程采用游标方式来控制短时长的软实 时定时器,采用一时间数组,游标移动一次所需时间为软实时定时器设置的 最小单位,数组元素个数即为游标转一圈所需要时间除以时刻间隔时间,用游标来表示当前时刻。每个数组元素都是一个链表头,该时刻到期的软实时 定时器都添加到对应的链表下。这种结构类似钟表,游标就像秒针,不停转动达到计时的目的。软实时中断服务程序只负责释^:计数信号量,与软实时定时器调度线程 进行同步。如图8所示,软实时定时器调度线程不停地等待获取计数信号量, 一旦获取到计数信号量,则查询当前时刻对应的链表,对挂接在链表下的软 实时定时器进行更新,如果软实时定时器时间未到期,则^l更新时间参数; 如果到期,则更新时间参数的同时向创建软实时定时器任务宏发送指定消 息,并根据软实时定时器类型做相应处理;整个链表查询完毕后,再继续等 待获取计数信号量。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到 的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范 围应该以权利要求的保护范围为准。
权利要求
1、一种软实时定时器模块,其特征在于,包括中断单元、调度单元、初始化单元和管理单元,其中,调度单元,用于对创建的软实时定时器进行定时器调度线程的控制,内部为一无限循环体,循环体内一直获取计数信号量;中断单元,用于对创建的软实时定时器进行定时器中断控制,释放计数信号量;其中,调度单元与中断单元通过一个计数信号量进行同步;初始化单元,用于对软实时定时器的全局变量进行初始化,使中断单元与硬件时钟中断号进行挂接,并初始化调度单元;所述软实时定时器的全局变量包括计数信号量;管理单元,是用户控制软实时定时器的前台窗口,用户通过管理单元来创建各种软实时定时器,并对该软实时定时器设定各种操作指令。
2、 如权利要求1所述的软实时定时器模块,其特征在于,所述管理单元设定的操作指令包括删除软实时定时器、暂停软实时定时 器、继续软实时定时器;以及所述管理单元创建的各种软实时定时器包括创建相对非周期性软实时 定时器、相对周期性软实时定时器、绝对非周期性软实时定时器。
3、 如权利要求2所述的软实时定时器模块,其特征在于,所述调度单元还用于存放一维双向链表头数组的时刻表;其中数组元素 个数代表时刻总数,数组元素个数乘以时刻间隔时间所得时间数即为定时器 调度线程循环一 圈所代表的时间数;所述调度单元对创建的软实时定时器进行定时器调度线程的控制是指, 对于设定时间小于一 圏代表的时间数的短时相对软实时定时器,只需将设定 时间除以时刻间隔时间所得商,再加上当前时刻所得和,对时刻总数求余, 即得出在何时刻调度该软实时定时器,将该软实时定时器挂接到该时刻代表 的链表尾;对于设定时间大于一圈代表的时间数的长时相对软实时定时器转 换成短时相对软实时定时器,仅需对软实时定时器增加一圈数的参数,当圏数为0时才调度该软实时定时器,当圈数不为0时,仅对圈数减一;对于绝 对非周期性软实时定时器,则根据当前时间、时刻转换成相对软实时定时器 进行存放;对于周期性软实时定时器,则仅需在软实时定时器结构体内增加 一周期性标志的参数,当周期性软实时定时器时间到期,根据创建软实时定 时器时的输入参数及当前时刻重新计算下一次调度时刻,将该软实时定时器 重新挂接到对应链表尾。
4、 如权利要求1所述的软实时定时器模块,其特征在于,所述调度单元与中断单元通过一个计数信号量进行同步是指,中断单元 释放计数信号量多少次,同时调度单元就能够获取计数信号量多少次,并在 定时器调度线程内更新当前时刻。
5、 一种软实时定时器调度的方法,其特征在于,包括,对软实时定时器的全局变量进行初始化,使软实时定时器的中断服务程 序与硬件时钟中断号进行挂接,并创建一个软实时定时器调度线程;用户创建各种软实时定时器,并对该软实时定时器设定各种操作指令;根据创建的软实时定时器,软实时定时器调度线程一直获取计数信号 量,中断服务程序释放计数信号量,执行该软实时定时器的调度,其中软实 时定时器调度线程与中断服务程序通过一个计数信号量进行同步。
6、 如权利要求5所述的方法,其特征在于,所述操作指令包括删除软实时定时器、暂停软实时定时器、继续软实时 定时器;所述创建各种软实时定时器包括创建相对非周期性软实时定时器、 相对周期性软实时定时器、绝对非周期性软实时定时器。
7、 如权利要求5所述的方法,其特征在于,所述对软实时定时器的全局变量进行初始化是指,调用通用链表初始化 函数,初始化静态全局链表头数组,创建一个计数信号量并初始化为不可获 取,创建一个互斥体并初始化为可获取,初始化时间游标。
8、 如权利要求5所述的方法,其特征在于,软实时定时器调度线程与中断服务程序通过一个计数信号量进行同步 是指,中断服务程序释放计数信号量多少次,同时软实时定时器调度线程就 能够获取计数信号量多少次,并在调度线程内更新当前时刻。
9、 如权利要求5所述的方法,其特征在于,所述软实时定时器调度线程一直获取计数信号量,中断服务程序释放计 数信号量,执行软实时定时器的调度的过程中,进一步包括,软实时定时器调度线程根据创建软实时定时器输入参数及当前时刻,计 算出下一次调度的时刻及时间圈数,根据计算出来的调度时刻,挂接到调度 时刻对应的链表尾;软实时定时器调度线程采用游标方式来控制短时长的软实时定时器,采 用一时间数组,游标移动一次所需时间为软实时定时器设置的最小单位,数 组元素个数即为游标转一圈所需要时间除以时刻间隔时间,用游标来表示当 前时刻;其中每个数组元素都是一个链表头,该时刻到期的软实时定时器都 添加到对应的链表下;软实时中断服务程序只负责释放计数信号量,与软实时定时器调度线程进行同步;软实时定时器调度线程不停地等待获取计数信号量, 一旦获取到计数信号量,则查询当前时刻对应的链表,对挂接在链表下的软实时定时器进行更新,如果软实时定时器时间未到期,则仅更新时间参数;如果到期, 则更新时间参数的同时向创建软实时定时器任务宏发送指定消息,并根据软 实时定时器类型做相应处理;整个链表查询完毕后,再继续等待获取计数信号量。
10、 如权利要求5、 6、 7、 8或9所述的方法,其特征在于, 所述方法还包括,如果直接使用手机操作系统提供的软实时定时器,则需设置系统软实时 定时器为最小单位的周期性软实时定时器,在系统软实时定时器内部执行软 实时定时器中断控制。
全文摘要
一种软实时定时器调度的方法及软实时定时器模块,包括调度单元,用于对创建的软实时定时器进行定时器调度线程的控制,内部为一直获取计数信号量的无限循环体;中断单元,用于对定时器进行定时器中断控制,释放计数信号量;其中调度单元与中断单元通过一个计数信号量进行同步;初始化单元,用于初始化定时器的全局变量,使中断单元与硬件时钟中断号进行挂接,并初始化调度单元,全局变量包括计数信号量;管理单元,是用户控制定时器的前台窗口,用户通过管理单元来创建各种软实时定时器,并对该定时器设定各种操作指令。应用本发明,通过消息机制,当定时器到期时向上层用户发送指定消息,能够满足手机平台可移植性及手机平台上层用户的诸多需求。
文档编号G06F9/46GK101272564SQ20081009029
公开日2008年9月24日 申请日期2008年4月17日 优先权日2008年4月17日
发明者何海建 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1