CN101477386A - 一种定时器实现方法和装置 - Google Patents
一种定时器实现方法和装置 Download PDFInfo
- Publication number
- CN101477386A CN101477386A CNA2009100766166A CN200910076616A CN101477386A CN 101477386 A CN101477386 A CN 101477386A CN A2009100766166 A CNA2009100766166 A CN A2009100766166A CN 200910076616 A CN200910076616 A CN 200910076616A CN 101477386 A CN101477386 A CN 101477386A
- Authority
- CN
- China
- Prior art keywords
- timer
- cpu
- data structure
- plane cpu
- target 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种定时器实现方法和装置。方法包括:第一数据平面CPU在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述第一数据平面CPU设置的定时器参数包括目标数据平面CPU的标识;第一数据平面CPU向控制平面CPU发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;控制平面CPU收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。本发明的技术方案为非对称多核处理***中的数据平面提供了一种高效、可靠的定时器机制。
Description
技术领域
本发明涉及多核处理***技术领域,尤指多核处理***中的一种定时器实现方法和装置。
背景技术
目前,在多核网络通信设备中,通常采用数据平面和控制平面分离的一种非对称处理结构。即控制平面运行在一个或多个CPU上,并且运行一个完整的嵌入式操作***,有完整的多任务管理、中断管理、时间管理和定时器管理等等;数据平面运行在其他的CPU上,没有操作***或者是提供了很简单的资源管理,通常只是做简单的数据流处理和转发工作,无法提供协议软件中常需要使用的软件定时器机制。
随着处理业务复杂度的增加,数据平面在处理流程中不可避免要出现创建和删除定时的操作。如何提供一种可靠的、高效的、对数据平面的处理流程影响较小的数据平面的定时器机制,是改善多核网络通信设备性能的一个必须考虑的问题。但是,现有技术中并没有一种在非对称多核处理***中给数据平面提供一种高效、可靠的定时器机制的方案。
发明内容
本发明提供了一种定时器实现方法,该方法为非对称多核处理***中的数据平面提供了一种高效、可靠的定时器机制。
本发明还提供了一种定时器实现装置,该装置为非对称多核处理***中的数据平面提供了一种高效、可靠的定时器机制。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明公开了一种定时器实现方法,该方法包括:
第一数据平面CPU在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述第一数据平面CPU设置的定时器参数包括目标数据平面CPU的标识;
第一数据平面CPU向控制平面CPU发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;
控制平面CPU收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中;
其中,所述第一数据平面CPU与所述目标数据平面CPU是同一个CPU,或者是不同的CPU。
本发明还公开一种定时器实现装置,该装置包括:属于数据平面CPU的数据平面模块和属于控制平面CPU的控制平面模块,其中,
数据平面模块,用于在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述设置的定时器参数包括目标数据平面CPU的标识;用于向控制平面模块发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;
控制平面模块,用于在收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。
由上述技术方案可见,本发明这种第一数据平面CPU在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述第一数据平面CPU设置的定时器参数包括目标数据平面CPU的标识;第一数据平面CPU向控制平面CPU发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;控制平面CPU收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中的技术方案,为非对称多核处理***中的数据平面提供了一种高效、可靠的定时器机制。
附图说明
图1是本发明实施例一种定时器实现方法的流程图;
图2是本发明实施例中创建定时器时的数据平面处理流程图;
图3是本发明实施例中创建定时器时的控制平面处理流程图;
图4是本发明实施例中定时器的超时检测和超时消息处理流程图;
图5是本发明实施例中修改定时器的属性时数据平面的处理流程图;
图6是本发明实施例中修改定时器的属性时控制平面的处理流程图;
图7是本发明实施例一种定时器实现装置的结构框图。
具体实施方式
图1是本发明实施例一种定时器实现方法的流程图。如图1所示,该方法包括以下步骤:
步骤101,任意第一数据平面CPU在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述第一数据平面CPU设置的定时器参数包括目标数据平面CPU的标识。
本步骤中,所述第一数据平面CPU与目标数据平面CPU可以是同一个CPU,也可以是不同的CPU。这是因为,在业务流程上,各种业务的处理可能在不同的核上处理,一个报文的不同阶段也可能在不同的核上进行,因此,有需要由不同的数据平面CPU来处理同一个业务流。例如,数据平面CPU A对接收到报文进行流分类处理,将属于某一会话的报文发送给数据平面CPUB,并希望CPU B在一段时间后对该会话执行某项操作,则CPU A会创建属于CPU B的会话定时器。
步骤102,第一数据平面CPU向控制平面CPU发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识。
步骤103,控制平面CPU收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。
为使本发明的目的、技术方案及优点更加清楚明白,以下对本发明进一步详细说明。
在本发明中,每个数据平面CPU都有单独的定时器数据的存储结构,包括定时器空闲链表和定时器运行链表。链表由多个节点组成,每个节点都是一个定时器数据的存储结构,本文中称之为定时器的数据结构。空闲链表是未创建实际的定时器时的数据结构集合,而运行链表则是已创建的定时器的数据结构结合。
本发明中,用定时器标识(ID)来唯一标识一个定时器存储结构,或者也可以说标识一个定时器。定时器标识可以是无符号整型数。
在本发明的一个实施例中,定时器标识由控制平面CPU统一分配维护。具体为,由控制平面CPU为每个数据平面CPU的空闲链表中每个定时器数据结构分配一个唯一的定时器标识。
在本发明实施例中定义的定时器数据结构包括以下参数成员:前、后链表指针;定时器的读写锁;定时器所属的CPU的ID;定时器的状态;定时器的超时处理函数;定时器的超时时间;定时器新的超时时间;定时器的类型。
其中,前后链表指针标识表示该定时器数据结构在链表中的位置;定时器所属的CPU是指执行定时器超时处理函数的数据平面CPU;定时器的超时处理函数是该定时器超时时需要执行的操作的函数;定时器的超时时间是创建定时器时设置的超时时间;定时器新的超时时间是修改定时器的定时时间时设置的超时时间;定时器的状态包括:创建状态;运行状态;参数修改状态;删除状态;无效状态;定时器的类型包括循环定时器和非循环定时器。
对于一个定时器机制的实现,主要涉及以下方面:定时器的创建,定时器的超时检测和超时消息的处理,定时器的删除和定时器的属性(定时器超时时间)修改。下面逐一进行描述。
一、定时器的创建
在本发明的实施例中,任何数据平面CPU都可以创建定时器,创建定时器时需要指定处理此定时器的数据平面CPU,即该要创建的定时器所属的数据平面CPU。要创建的定时器所属的数据平面CPU既可以是除创建该定时器的CPU以外的任何数据平面CPU,也可以是创建该定时器的CPU本身。
为了描述方便,下面假设有CPU A、CPU B和CPU C,其中CPU A和CPU B是数据平面CPU,CPU C是控制平面CPU。现在CPU A要为CPU B创建一个定时器,则该创建定时器的数据平面的流处理程和控制平面的处理流程分别如图2和图3所示。
图2是本发明实施例中创建定时器时的数据平面处理流程图。如图2所示,包括以下步骤:
步骤201,CPU A获取所要创建的定时器所属的CPU B的标识。
步骤202,CPU A从CPU B的定时器空闲链表中获取一个新的未被使用的定时器数据结构。
本实施例中设本步骤中获取的新的定时器数据结构的标识为5。
步骤203,CPU A设置所获取的定时器数据结构中的定时器参数。
本步骤中,将定时器所属的CPU的ID设置为CPU B的标识,将定时器的状态设置为创建状态,设置好定时器的超时处理函数以及定时器的超时时间。
步骤204,CPU A通过CPU间的通信机制向CPU C发送定时器创建消息,该消息中携带与所述定时器数据结构对应的定时器标识5。
图3是本发明实施例中创建定时器时的控制平面处理流程图。如图3所示,包括以下步骤:
步骤301,CPU C接收到CPU A发送的定时器创建消息后,根据其中的定时器标识5找到对应的定时器数据结构。
步骤302,CPU C根据所找到的定时器数据结构中的状态参数判断该定时器是否为删除状态,是结束本流程,否者执行步骤303。
本步骤中,定时器有可能是删除状态是因为任何一个数据平面CPU在任何时刻都可以根据定时器ID对相应的定时器进行删除或修改处理。定时的删除和修改将在后面介绍。
本步骤,通过修改定时器数据结构中的前、后链表指针将其***CPU B的空闲链表中。
步骤303,CPU C继续判断该定时器是否为修改状态,是则执行步骤304,否则执行步骤305。
步骤304,CPU C修改定时器的参数,执行步骤307。
步骤305,CPU C继续判断该定时器是否为创建状态,是则执行步骤306,否则结束。
步骤306,CPU C将标识为5的定时器数据结构中的状态参数修改为运行状态,并根据其中的超时时间参数,将该定时器数据结构加入CPU B的定时器运行链表中的相应位置。
至此,属于CPU B的定时器建立完成。
在本发明的实施例中,为了保证数据平面除了自旋锁之外,无阻塞地申请到创建定时器所需的定时器数据结构,控制平面的CPU要保证每个数据平面CPU的空闲链表的长度大于某个预设的值。具体为:控制平面CPU检测每个数据平面CPU的定时器空闲链表的长度是否小于预设值,是则对该空闲链表进行扩充处理,使得该空闲链表的长度不再小于预设值。控制平面CPU可以在处理定时器参数修改时,或维护空闲链表的低优先级任务运行时,检测数据平面CPU的定时器空闲链表的长度。
二、定时器的超时检测以及超时消息的处理
在控制平面的时钟中断或者一个高优先级的***任务中进行定时器的超时检测。
图4是本发明实施例中定时器的超时检测和超时消息处理流程图。如图4所示,包括以下步骤:
步骤401,控制平面的CPU分别遍历多核处理***中的每个数据平面CPU的定时器运行链表,并与当前的***时间进行比较,找出所有已超时的定时器数据结构。
延续上述例子,CPU C遍历CPU B的定时器运行链表,发现标识为5的定时器超时。
步骤402,控制平面CPU将超时的定时器数据结构中的超时处理函数封装成定时器超时消息发送给该定时器所属的数据平面CPU。
这里,则CPU C向CPU B发送定时器超时消息,该消息中携带标识为5的定时器数据结构中的超时处理函数。
步骤403,接收到定时器超时消息的数据平面CPU,取出定时器超时消息中的超时处理函数,执行相应的处理。
本步骤中,CPU B接收到CPU C发送定时器超时消息,根据其中的定超时处理函数,执行相应的处理。
步骤404,控制平面CPU判断所述超时的定时器数据结构是否为循环定时器,是则根据其超时时间将该定时器数据结构重新放入其所属CPU的运行链表中的新位置,否则将该定时器数据结构从其所属CPU的定时器运行链表中摘除,将其状态改为无效状态,并放入其所属CPU的定时器空闲链表中。
三、定时器的删除
在本发明中,定时器的删除可以在任何数据平面CPU上进行,删除处理包括:
根据定时器标识找到相应的定时器数据结构;
如果定时器是删除状态或无效状态,则返回;
如果定时器是运行状态,将所述找到的定时器数据结构从其所属CPU的定时器运行链表中摘除;
将定时器结构***其所属CPU的定时器空闲链表中;
将所述找到的定时器数据结构中的状态参数修改成为删除状态。
三、定时器的属性修改
在本发明中,定时器的修改也可以在任何数据平面CPU上进行,并且涉及控制平面的CPU,定时器的属性修改过程在数据平面和控制平面的处理分别如图5和6所示。
图5是本发明实施例中修改定时器的属性时数据平面的处理流程图。如图5所示,包括以下步骤:
步骤501,数据平面CPU根据定时器的标识,找到相应的定时器数据结构。
这里仍延续上述的例子,则可以为CPU A根据定时器标识5找到CPU B的定时器运行链表中的标识为5的定时器数据结构。当然,在其他的例子中,也可以是CPU B自身对自己的定时器属性进行修改执行步骤501,或者也可以是除CPU A和CPU B以外的其他数据平面CPU执行步骤501。
步骤502,数据平面CPU判断所找到的定时器数据结构中的状态参数是否为运行状态或创建状态,是则执行步骤504,否则执行步骤503。
步骤503,返回修改错误,结束流程。
步骤504,数据平面CPU在找到的定时器数据结构中设置新的超时时间。
本步骤中,CPU A在标识为5的定时器数据结构中设置新的超时时间。
步骤505,数据平面CPU在找到的定时器数据结构中将定时器状态参数修改成为修改状态。
本步骤中,CPU A在标识为5的定时器数据结构中将定时器状态参数修改成为修改状态。
步骤506,数据平面CPU判断所找到的定时器数据结构中的状态参数是否为运行状态,是则执行步骤507,否则执行步骤508。
步骤507,数据平面CPU将所述找到的定时器数据结构从其所属CPU的定时器运行链表中摘除。
本步骤中,CPU A将标识为5的定时器数据结构从CPU B的定时器运行链表中摘除。
步骤508,数据平面CPU向控制平面CPU发送携带定时器标识的定时器修改消息。
本步骤中,CPU A向CPU C发送携带定时器标识为5的定时器修改消息。
图6是本发明实施例中修改定时器的属性时控制平面的处理流程图。如图6所示,包括以下步骤:
步骤601,控制平面CPU接收到定时器修改消息后,根据其中的定时器标识,找到相应的定时器数据结构。
延续上述的例子,CPU C根据定时器修改消息中的定时器标识5找到CPU B的标识为5的定时器数据结构。
步骤602,控制平面CPU判断所找到的定时器数据结构中的状态参数是否为修改状态,是则执行步骤604,否则执行步骤603。
本步骤中,CPU C判断标识为5的定时器数据结构中的状态参数是否为修改状态。
步骤603,控制平面CPU将所述找到的定时器数据结构放入其所属CPU的定时器空闲链表中,结束流程。
本步骤中,CPU C将标识为5的定时器数据结构放入CPU B的定时器空闲链表中。
步骤604,控制平面CPU用所述找到的定时器数据结构中的新的超时时间更新原有的超时时间。
本步骤中,CPU C用标识为5的定时器数据结构中的新的超时时间更新原有的超时时间。
步骤605,控制平面CPU根据更新后的超时时间将该定时器数据结构加入到其所属CPU的定时器运行链表中。
本步骤中,CPU C根据更新后的超时时间将标识为5的定时器数据结构加入到CPU B的定时器运行链表中,结束流程。
在上述实施例中以CPU A为CPU B创建定时器以及修改其中的超时时间为例进行了说明。在本发明的其他实施例中,一个数据平面CPU,如上述的CPU A或CPU B,也可以为自己创建定时器以及进行属性参数的修改,其过程与上述实施例中的流程相同,这里不再复述。
通过上述实施例可以看出,除了少量的自旋锁,数据平面的定时器几乎没有阻塞操作。在实际实现中,自旋锁的保护范围被缩小到足够小,不会影响数据平面处理的效率。
图7是本发明实施例一种定时器实现装置的结构框图。如图7所示,该装置包括:属于数据平面CPU的数据平面模块和属于控制平面CPU的控制平面模块,其中,
数据平面模块,用于在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述设置的定时器参数包括目标数据平面CPU的标识;用于向控制平面模块发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;
控制平面模块,用于在收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。
在图7中,数据平面模块设置的定时器参数还包括:超时时间和超时处理函数;
控制平面模块,用于根据所述定时器数据结构中的超时时间检测定时器是否超时,是则根据所述定时器数据结构中的目标数据平面CPU的标识向目标数据平面CPU发送定时器超时消息;该定时器超时消息中携带所述定时器数据结构中的超时处理函数,以使得目标数据平面CPU接收到定时器超时消息时,根据其中的超时处理函数执行相应的处理。控制平面模块,还可以进一步判断所述超时的定时器数据结构是否为循环定时器,是则根据其超时时间将该定时器数据结构重新放入其所属CPU的运行链表中的新位置,否则将该定时器数据结构从其所属CPU的定时器运行链表中摘除,将其状态改为无效状态,并放入其所属CPU的定时器空闲链表中。
在图7中,数据平面模块设置的定时器参数还包括状态参数;数据平面模块在执行所述设置定时器数据结构中的定时器参数时,将状态参数设置为创建状态。
在图7中,数据平面模块,进一步用于根据所述定时器标识,找到所述定时器数据结构,如果该定时器数据结构的状态参数为删除状态或无效状态,则返回;如果该定时器数据结构的状态参数为运行状态,将该定时器数据结构从所述目标数据平面CPU的定时器运行链表中摘除,然后将其中的状态参数设置为删除状态,并***到该目标数据平面CPU的空闲链表中。
在图7中,数据平面模块,进一步用于根据所述定时器标识,找到所述定时器数据结构,在其中设置新的超时时间,如果该定时器数据结构的状态参数为运行状态,将该定时器数据结构从所述目标数据平面CPU的运行链表中摘除,然后将其中的状态参数设置为修改状态,向控制平面模块发送定时器修改消息;该定时器修改消息中携带所述定时器标识;
控制平面模块,进一步用于在接收到定时器修改消息后,根据其中的定时器标识,找到所述定时器数据结构,如果该定时器数据结构的状态参数为修改状态,用其中的新的超时时间更新原有的超时时间后,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。
在图7中,控制平面模块,进一步用于检测目标数据平面CPU的定时器空闲链表的长度是否小于预设值,是则对该空闲链表进行扩充处理,使得该空闲链表的长度不再小于预设值。
由上述技术方案可见,本发明这种第一数据平面CPU在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述第一数据平面CPU设置的定时器参数包括目标数据平面CPU的标识;第一数据平面CPU向控制平面CPU发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;控制平面CPU收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中的技术方案,为非对称多核处理***中的数据平面提供了一种高效、可靠的定时器机制。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1、一种定时器实现方法,其特征在于,该方法包括:
第一数据平面CPU在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述第一数据平面CPU设置的定时器参数包括目标数据平面CPU的标识;
第一数据平面CPU向控制平面CPU发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;
控制平面CPU收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中;
其中,所述第一数据平面CPU与所述目标数据平面CPU是同一个CPU,或者是不同的CPU。
2、如权利要求1所述的方法,其特征在于,所述第一数据平面CPU设置的定时器参数还包括:超时时间和超时处理函数;
该方法还包括:
控制平面CPU根据所述定时器数据结构中的超时时间检测定时器是否超时,是则根据所述定时器数据结构中的目标数据平面CPU的标识向目标数据平面CPU发送定时器超时消息;该定时器超时消息中携带所述定时器数据结构中的超时处理函数;
目标数据平面CPU接收到定时器超时消息时,根据其中的超时处理函数执行相应的处理。
3、如权利要求2所述的方法,其特征在于,所述控制平面CPU根据所述定时器数据结构中的超时时间检测定时器是否超时包括:
控制平面CPU在时间中断或者在高优先级的***任务中检测定时器是否超时。
4、如权利要求2所述的方法,其特征在于,所述定时器参数还包括状态参数,该方法进一步包括:
所述第一数据平面CPU执行设置所述定时器数据结构中的定时器参数时,将状态参数设置为创建状态。
5、如权利要求4所述的方法,其特征在于,该方法进一步包括:
第二数据平面CPU根据所述定时器标识,找到所述定时器数据结构,将其中的状态参数设置为删除状态,将该定时器数据结构从所述目标数据平面CPU的定时器运行链表中摘除,并***到该目标数据平面CPU的空闲链表中;
其中,所述第二数据平面CPU与所述第一数据平面CPU是同一个CPU,或者,所述第二数据平面CPU与所述目标数据平面CPU是同一个CPU,或者,所述第二数据平面CPU是与所述第一数据平面CPU和目标数据平面CPU不同的CPU。
6、如权利要求5所述的方法,其特征在于,该方法在控制平面CPU根据定时器创建消息中的定时器标识,找到所述定时器数据结构之后,在根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中之前进一步包括:
控制平面CPU判断所述定时器数据结构中的状态参数是否为删除状态,是则结束。
7、如权利要求4所述的方法,其特征在于,该方法进一步包括:
第三数据平面CPU根据所述定时器标识,找到所述定时器数据结构,在其中设置新的超时时间,将其中的状态参数设置为修改状态,将该定时器数据结构从所述目标数据平面CPU的运行链表中摘除,向控制平面CPU发送定时器修改消息;该定时器修改消息中携带所述定时器标识;
控制平面CPU接收到定时器修改消息后,根据其中的定时器标识,找到所述定时器数据结构,用其中的新的超时时间更新原有的超时时间后,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中;
其中,所述第三数据平面CPU与所述第一数据平面CPU是同一个CPU,或者,所述第三数据平面CPU与所述目标数据平面CPU是同一个CPU,或者,所述第三数据平面CPU与所述第二数据平面CPU是同一个CPU,或者,所述第三数据平面CPU是与所述第一数据平面CPU、第二数据平面CPU和目标数据平面CPU不同的CPU。
8、如权利要求7所述的方法,其特征在于,该方法在控制平面CPU根据定时器创建消息中的定时器标识,找到所述定时器数据结构之后,在根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中之前进一步包括:
控制平面CPU判断所述定时器数据结构中的状态参数是否为修改状态,是则用其中的新的超时时间更新原有的超时时间。
9、如权利要求1至8中任一项所述的方法,其特征在于,该方法进一步包括:
控制平面CPU检测每个数据平面CPU的定时器空闲链表的长度是否小于预设值,是则对该空闲链表进行扩充处理,使得该空闲链表的长度不再小于预设值。
10、一种定时器实现装置,其特征在于,该装置包括:属于数据平面CPU的数据平面模块和属于控制平面CPU的控制平面模块,其中,
数据平面模块,用于在目标数据平面CPU的定时器空闲链表中获取一个新的定时器数据结构,设置所述定时器数据结构中的定时器参数;其中所述设置的定时器参数包括目标数据平面CPU的标识;用于向控制平面模块发送定时器创建消息;该定时器创建消息中携带与所述定时器数据结构对应的定时器标识;
控制平面模块,用于在收到定时器创建消息后,根据其中的定时器标识,找到所述定时器数据结构,根据其中的目标数据平面CPU的标识,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。
11、如权利要求10所述的装置,其特征在于,
数据平面模块设置的定时器参数还包括:超时时间和超时处理函数;
控制平面模块,用于根据所述定时器数据结构中的超时时间检测定时器是否超时,是则根据所述定时器数据结构中的目标数据平面CPU的标识向目标数据平面CPU发送定时器超时消息;该定时器超时消息中携带所述定时器数据结构中的超时处理函数,以使得目标数据平面CPU接收到定时器超时消息时,根据其中的超时处理函数执行相应的处理。
12、如权利要求11所述的装置,其特征在于,数据平面模块设置的定时器参数还包括状态参数;数据平面模块在执行所述设置定时器数据结构中的定时器参数时,将状态参数设置为创建状态。
13、如权利要求12所述的方法,其特征在于,
数据平面模块,进一步用于根据所述定时器标识,找到所述定时器数据结构,将其中的状态参数设置为删除状态,将该定时器数据结构从所述目标数据平面CPU的定时器运行链表中摘除,并***到该目标数据平面CPU的空闲链表中。
14、如权利要求12所述的装置,其特征在于,
数据平面模块,进一步用于根据所述定时器标识,找到所述定时器数据结构,在其中设置新的超时时间,将其中的状态参数设置为修改状态,将该定时器数据结构从所述目标数据平面CPU的运行链表中摘除,向控制平面模块发送定时器修改消息;该定时器修改消息中携带所述定时器标识;
控制平面模块,进一步用于在接收到定时器修改消息后,根据其中的定时器标识,找到所述定时器数据结构,用其中的新的超时时间更新原有的超时时间后,将该定时器数据结构加入目标数据平面CPU的定时器运行链表中。
15、如权利要求10至14中任一项所述的方法,其特征在于,
控制平面模块,进一步用于检测目标数据平面CPU的定时器空闲链表的长度是否小于预设值,是则对该空闲链表进行扩充处理,使得该空闲链表的长度不再小于预设值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100766166A CN101477386B (zh) | 2009-01-12 | 2009-01-12 | 一种定时器实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100766166A CN101477386B (zh) | 2009-01-12 | 2009-01-12 | 一种定时器实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101477386A true CN101477386A (zh) | 2009-07-08 |
CN101477386B CN101477386B (zh) | 2011-03-16 |
Family
ID=40838113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100766166A Active CN101477386B (zh) | 2009-01-12 | 2009-01-12 | 一种定时器实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101477386B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作***中的定时器管理装置和管理方法 |
CN102012718A (zh) * | 2010-11-15 | 2011-04-13 | 中兴通讯股份有限公司 | 多核***中定时器的实现方法及多核*** |
CN102270156A (zh) * | 2011-05-30 | 2011-12-07 | 北京华源格林科技有限公司 | 一种实时嵌入式***定时器管理方法 |
CN103019856A (zh) * | 2012-11-23 | 2013-04-03 | 上海寰创通信科技股份有限公司 | 一种多核处理器的非对称调度方法 |
CN106020333A (zh) * | 2016-05-20 | 2016-10-12 | 京信通信技术(广州)有限公司 | 多核定时器实现方法和多核*** |
CN106293884A (zh) * | 2015-05-20 | 2017-01-04 | 苏州简约纳电子有限公司 | 一种消息驱动***中无效超时消息的检测方法 |
CN107562685A (zh) * | 2017-09-12 | 2018-01-09 | 南京国电南自电网自动化有限公司 | 一种基于延时补偿的多核处理器核心间数据交互的方法 |
CN113794740A (zh) * | 2021-11-16 | 2021-12-14 | 亿海蓝(北京)数据技术股份公司 | 定时器控制方法及***、可读存储介质 |
CN115934000A (zh) * | 2023-03-07 | 2023-04-07 | 苏州浪潮智能科技有限公司 | 一种存储***的定时方法及相关装置 |
-
2009
- 2009-01-12 CN CN2009100766166A patent/CN101477386B/zh active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859260B (zh) * | 2010-05-14 | 2012-12-12 | 中国科学院计算技术研究所 | 用于操作***中的定时器管理装置和管理方法 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作***中的定时器管理装置和管理方法 |
CN102012718B (zh) * | 2010-11-15 | 2014-12-10 | 中兴通讯股份有限公司 | 多核***中定时器的实现方法及多核*** |
WO2012065432A1 (zh) * | 2010-11-15 | 2012-05-24 | 中兴通讯股份有限公司 | 多核***中定时器的实现方法及多核*** |
CN102012718A (zh) * | 2010-11-15 | 2011-04-13 | 中兴通讯股份有限公司 | 多核***中定时器的实现方法及多核*** |
CN102270156A (zh) * | 2011-05-30 | 2011-12-07 | 北京华源格林科技有限公司 | 一种实时嵌入式***定时器管理方法 |
CN103019856A (zh) * | 2012-11-23 | 2013-04-03 | 上海寰创通信科技股份有限公司 | 一种多核处理器的非对称调度方法 |
CN106293884A (zh) * | 2015-05-20 | 2017-01-04 | 苏州简约纳电子有限公司 | 一种消息驱动***中无效超时消息的检测方法 |
CN106293884B (zh) * | 2015-05-20 | 2019-06-07 | 苏州简约纳电子有限公司 | 一种消息驱动***中无效超时消息的检测方法 |
CN106020333A (zh) * | 2016-05-20 | 2016-10-12 | 京信通信技术(广州)有限公司 | 多核定时器实现方法和多核*** |
CN107562685A (zh) * | 2017-09-12 | 2018-01-09 | 南京国电南自电网自动化有限公司 | 一种基于延时补偿的多核处理器核心间数据交互的方法 |
CN107562685B (zh) * | 2017-09-12 | 2020-06-09 | 南京国电南自电网自动化有限公司 | 一种基于延时补偿的多核处理器核心间数据交互的方法 |
CN113794740A (zh) * | 2021-11-16 | 2021-12-14 | 亿海蓝(北京)数据技术股份公司 | 定时器控制方法及***、可读存储介质 |
CN113794740B (zh) * | 2021-11-16 | 2022-03-11 | 亿海蓝(北京)数据技术股份公司 | 定时器控制方法及***、可读存储介质 |
CN115934000A (zh) * | 2023-03-07 | 2023-04-07 | 苏州浪潮智能科技有限公司 | 一种存储***的定时方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101477386B (zh) | 2011-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101477386B (zh) | 一种定时器实现方法和装置 | |
US10387402B2 (en) | System and method for conditionally updating an item with attribute granularity | |
CN107104824B (zh) | 一种网络拓扑确定方法和装置 | |
CN103618762A (zh) | 一种基于aop的企业服务总线状态预处理***及方法 | |
CN102081554A (zh) | 云计算操作***及其内核控制***及方法 | |
CN102467412A (zh) | 一种处理操作请求的方法、装置及业务*** | |
AU740851B2 (en) | System application management method and system, and storage medium which stores program for executing system application management | |
CN107196772A (zh) | 一种广播消息的方法及装置 | |
Chen et al. | Introduction to OPNET network simulation | |
CN108512782A (zh) | 访问控制列表分组调整方法、网络设备和*** | |
CN107682460A (zh) | 一种分布式存储集群数据通信方法及*** | |
CN103530538A (zh) | 一种基于Schema的XML安全视图查询方法 | |
Pelc | Deterministic gathering with crash faults | |
CN107181689B (zh) | 路由器之间的消息交互方法和装置 | |
CN114546625A (zh) | 一种跨平台的异步消息处理方法、装置、设备、存储介质 | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN107526690B (zh) | 清除缓存的方法及装置 | |
US11243882B2 (en) | In-array linked list identifier pool scheme | |
CN109542841A (zh) | 集群中创建数据快照的方法及终端设备 | |
KR101888131B1 (ko) | Dds-dbms 연동 도구의 실시간 변경 데이터 발간 서비스 수행 방법 | |
US10853331B1 (en) | System and method for editing materializations of a data store | |
CN111078669B (zh) | 基于名字解析树的处理方法、装置、设备及存储介质 | |
CN104808985B (zh) | 应用程序中对象的管理方法及装置 | |
CN108846633A (zh) | 一种智能高效的卡任务处理方法 | |
CN103347086A (zh) | 基于分布式协商算法的协同内核构建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |