报文缓存管理器异常的处理方法及装置转让专利

申请号 : CN201710740504.0

文献号 : CN107454018B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王斌

申请人 : 锐捷网络股份有限公司

摘要 :

本发明公开了一种报文缓存管理器异常的处理方法及装置,该方法包括:若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是管理缓存,则禁用所述报文缓存管理器;从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址和所述第一报文缓存单元中的管理缓存的地址;根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中;启用所述报文缓存管理器。该方案消除了第一报文缓存单元被重复释放造成的报文缓存管理器异常,避免管理缓存中的信息被改写而导致的报文缓存管理器崩溃。

权利要求 :

1.一种报文缓存管理器异常的处理方法,其特征在于,包括:若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是管理缓存,则禁用所述报文缓存管理器;

从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址和所述第一报文缓存单元中的管理缓存的地址;

根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中;

启用所述报文缓存管理器;

其中,从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址,具体包括:根据所述报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元,所述第三报文缓存单元中的管理缓存的地址为所述第一报文缓存单元的地址,所述第一报文缓存单元中的管理缓存的地址为所述第四报文缓存单元的地址;

将所述第三报文缓存单元中的管理缓存的地址更新为所述第四报文缓存单元的地址。

2.如权利要求1所述的方法,其特征在于,根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中,具体包括:保留所述第一报文缓存单元中的数据缓存的地址,并清空所述第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元;

将所述管理缓存地址链表中最后一个报文缓存单元中的管理缓存的地址更新为所述第二报文缓存单元的地址。

3.如权利要求1-2任一所述的方法,其特征在于,还包括:确定所述第一报文缓存单元中是否包含数据缓存标识;

若确定所述第一报文缓存单元中包含所述数据缓存标识,则确定所述第一报文缓存单元是数据缓存;

若确定所述第一报文缓存单元中未包含所述数据缓存标识,则确定所述第一报文缓存单元是管理缓存。

4.如权利要求3所述的方法,其特征在于,还包括:

若检测到所述第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是数据缓存,则查找包含所述第一报文缓存单元的地址的第五报文缓存单元,所述第五报文缓存单元是管理缓存;

从所述第五报文缓存单元中删除所述第一报文缓存单元的地址;

获取第六报文缓存单元,在所述第六报文缓存单元中保存所述第一报文缓存单元的地址,所述第六报文缓存单元为管理缓存。

5.一种报文缓存管理器异常的处理装置,其特征在于,包括:禁用模块,用于若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是管理缓存,则禁用所述报文缓存管理器;

第一删除模块,用于从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址和所述第一报文缓存单元中的管理缓存的地址;

建立模块,用于根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中;

启用模块,用于启用所述报文缓存管理器;

其中,所述第一删除模块,具体用于:

根据所述报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元,所述第三报文缓存单元中的管理缓存的地址为所述第一报文缓存单元的地址,所述第一报文缓存单元中的管理缓存的地址为所述第四报文缓存单元的地址;

将所述第三报文缓存单元中的管理缓存的地址更新为所述第四报文缓存单元的地址。

6.如权利要求5所述的装置,其特征在于,所述建立模块,具体用于:保留所述第一报文缓存单元中的数据缓存的地址,并清空所述第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元;

将所述管理缓存地址链表中的最后一个报文缓存单元中的管理缓存的地址更新为所述第二报文缓存单元的地址。

7.如权利要求5-6任一所述的装置,其特征在于,还包括确定模块,用于:确定所述第一报文缓存单元中是否包含数据缓存标识;

若确定所述第一报文缓存单元中包含所述数据缓存标识,则确定所述第一报文缓存单元是数据缓存;

若确定所述第一报文缓存单元中未包含所述数据缓存标识,则确定所述第一报文缓存单元是管理缓存。

8.如权利要求7所述的装置,其特征在于,还包括:

查找模块,用于若检测到所述第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是数据缓存,则查找包含所述第一报文缓存单元的地址的第五报文缓存单元,所述第五报文缓存单元是管理缓存;

第二删除模块,用于从所述第五报文缓存单元中删除所述第一报文缓存单元的地址;

获取模块,用于获取第六报文缓存单元,在所述第六报文缓存单元中保存所述第一报文缓存单元的地址,所述第六报文缓存单元为管理缓存。

说明书 :

报文缓存管理器异常的处理方法及装置

技术领域

[0001] 本发明涉及通信技术领域,尤指一种报文缓存管理器异常的处理方法及装置。

背景技术

[0002] 目前,网络设备中通常采用中央处理器(Center Processing Unit,CPU),报文缓存管理器(Free Pool Allocator,FPA)可以集成在CPU上,为CPU上的网络加速模块与软件模块提供报文缓存的管理服务。报文缓存管理器上包括多个报文缓存单元,报文缓存单元可以分为管理缓存和数据缓存两类,若报文缓存单元是管理缓存,则该报文缓存单元的前128字节可以存储32个地址,前31个是数据缓存的地址,第32个则是下一个管理缓存的地址。
[0003] 软件模块可以从报文缓存管理器中申请报文缓存单元,也可以向报文缓存管理器释放报文缓存单元,当软件模块出现错误时,就可能发生报文缓存单元被重复释放的现象:报文缓存单元A被释放后,又被申请作为管理缓存使用,而由于软件模块出现错误,报文缓存单元A再次被释放,若报文缓存单元A又被申请,这时报文缓存单元A中的信息就会被改写,由于报文缓存单元A之前是作为管理缓存使用,里面的信息一旦被改写,就会导致报文缓存管理器崩溃。但是,目前尚未存在报文缓存管理器异常的处理方法。

发明内容

[0004] 本发明实施例提供一种报文缓存管理器异常的处理方法及装置,用以实现处理报文缓存管理器的异常。
[0005] 根据本发明实施例,提供一种报文缓存管理器异常的处理方法,包括:
[0006] 若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是管理缓存,则禁用所述报文缓存管理器;
[0007] 从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址和所述第一报文缓存单元中的管理缓存的地址;
[0008] 根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中;
[0009] 启用所述报文缓存管理器。
[0010] 具体的,从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址,具体包括:
[0011] 根据所述报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元,所述第三缓存单元中的管理缓存的地址为所述第一报文缓存单元的地址,所述第一报文缓存单元中的管理缓存的地址为所述第四报文缓存单元的地址;
[0012] 将所述第三报文缓存单元中的管理缓存的地址更新为所述第四报文缓存单元的地址。
[0013] 具体的,根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中,具体包括:
[0014] 保留所述第一报文缓存单元中的数据缓存的地址,并清空所述第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元;
[0015] 将所述管理缓存地址链表中最后一个报文缓存单元中的管理缓存的地址更新为所述第二报文缓存单元的地址。
[0016] 可选的,还包括:
[0017] 确定所述第一报文缓存单元中是否包含数据缓存标识;
[0018] 若确定所述第一报文缓存单元中包含所述数据缓存标识,则确定所述第一报文缓存单元是数据缓存;
[0019] 若确定所述第一报文缓存单元中未包含所述数据缓存标识,则确定所述第一报文缓存单元是管理缓存。
[0020] 可选的,还包括:
[0021] 若检测到所述第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是数据缓存,则查找包含所述第一报文缓存单元的地址的第五报文缓存单元,所述第五报文缓存单元是管理缓存;
[0022] 从所述第五报文缓存单元中删除所述第一报文缓存单元的地址;
[0023] 获取第六报文缓存单元,在所述第六报文缓存单元中保存所述第一报文缓存单元的地址,所述第六报文缓存单元为管理缓存。
[0024] 根据本发明实施例,还提供一种报文缓存管理器异常的处理装置,包括:
[0025] 禁用模块,用于若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是管理缓存,则禁用所述报文缓存管理器;
[0026] 第一删除模块,用于从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址和所述第一报文缓存单元中的管理缓存的地址;
[0027] 建立模块,用于根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中;
[0028] 启用模块,用于启用所述报文缓存管理器。
[0029] 具体的,所述第一删除模块,具体用于:
[0030] 根据所述报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元,所述第三缓存单元中的管理缓存的地址为所述第一报文缓存单元的地址,所述第一报文缓存单元中的管理缓存的地址为所述第四报文缓存单元的地址;
[0031] 将所述第三报文缓存单元中的管理缓存的地址更新为所述第四报文缓存单元的地址。
[0032] 具体的,所述建立模块,具体用于:
[0033] 保留所述第一报文缓存单元中的数据缓存的地址,并清空所述第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元;
[0034] 将所述管理缓存地址链表中的最后一个报文缓存单元中的管理缓存的地址更新为所述第二报文缓存单元的地址。
[0035] 可选的,还包括确定模块,用于:
[0036] 确定所述第一报文缓存单元中是否包含数据缓存标识;
[0037] 若确定所述第一报文缓存单元中包含所述数据缓存标识,则确定所述第一报文缓存单元是数据缓存;
[0038] 若确定所述第一报文缓存单元中未包含所述数据缓存标识,则确定所述第一报文缓存单元是管理缓存。
[0039] 可选的,还包括:
[0040] 查找模块,用于若检测到所述第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是数据缓存,则查找包含所述第一报文缓存单元的地址的第五报文缓存单元,所述第五报文缓存单元是管理缓存;
[0041] 第二删除模块,用于从所述第五报文缓存单元中删除所述第一报文缓存单元的地址;
[0042] 获取模块,用于获取第六报文缓存单元,在所述第六报文缓存单元中保存所述第一报文缓存单元的地址,所述第六报文缓存单元为管理缓存。
[0043] 本发明有益效果如下:
[0044] 本发明实施例提供一种报文缓存管理器异常的处理方法及装置,若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定所述第一报文缓存单元是管理缓存,则禁用所述报文缓存管理器;从所述报文缓存管理器的管理缓存地址链表中删除所述第一报文缓存单元的地址和所述第一报文缓存单元中的管理缓存的地址;根据所述第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将所述第二报文缓存单元的地址添加到所述管理缓存地址链表中;启用所述报文缓存管理器。该方案中,可以实时监测报文缓存管理器中的报文缓存单元是否被重复释放,若检测到第一报文缓存单元被重复释放,再确定第一报文缓存单元是否是管理缓存,若第一报文缓存单元是管理缓存,则确定报文缓存管理器中的管理缓存出现被重复释放的异常情况,为了避免报文缓存管理器崩溃,禁用报文缓存管理器,并从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址,根据第一报文缓存单元中的数据缓存的地址重新建立第二报文缓存单元并更新管理缓存地址链表后,再启用报文缓存管理器,从而消除了第一报文缓存单元被重复释放造成的报文缓存管理器异常,避免管理缓存中的信息被改写而导致的报文缓存管理器崩溃。

附图说明

[0045] 图1为本发明实施例中一种报文缓存管理器异常的处理方法的流程图;
[0046] 图2为本发明实施例中S12的流程图;
[0047] 图3为本发明实施例中S13的流程图;
[0048] 图4为本发明实施例中另一种报文缓存管理器异常的处理方法的流程图;
[0049] 图5为本发明实施例中再一种报文缓存管理器异常的处理方法的流程图;
[0050] 图6为本发明实施例中一种报文缓存管理器异常的处理装置的结构示意图。

具体实施方式

[0051] 为了实现处理报文缓存管理器的异常,本发明实施例提供一种报文缓存管理器异常的处理方法,可以采用软件方式或者硬件方式实现,该方法的流程如图1所示,执行步骤如下:
[0052] S11:若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定第一报文缓存单元是管理缓存,则禁用报文缓存管理器。
[0053] 可以实时监测报文缓存管理器中的每个报文缓存单元是否被重复释放,若检测到报文缓存管理器中的一个报文缓存单元被重复释放,该报文缓存单元可以定义为第一报文缓存单元,则可以进一步确定第一报文缓存单元是否是管理缓存,若监控到第一报文缓存单元是管理缓存,为了避免第一报文缓存管理器出现崩溃,则先禁用报文缓存管理器。
[0054] 其中,确定第一报文缓存单元是否是管理缓存的过程为:确定第一报文缓存单元中是否包含数据缓存标识;若确定第一报文缓存单元中未包含数据缓存标识,则确定第一报文缓存单元是管理缓存。数据缓存标识可以根据实际需要进行设定。
[0055] S12:从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址。
[0056] 由于报文缓存管理器中的报文缓存单元可以作为管理缓存或者数据缓存使用,而作为管理缓存的报文缓存单元的前128字节可以存储32个地址,前31个是数据缓存的地址,第32个则是下一个管理缓存的地址,因此,这些管理缓存就可以形成一个管理缓存地址链表,管理缓存地址列表中记载的是每个报文缓存单元的地址和该报文缓存单元中的管理缓存的地址,该报文缓存单元中的管理缓存的地址是下一个作为管理缓存的报文缓存单元的地址。
[0057] 由于第一报文缓存单元已经被重复释放并且是管理缓存,第一报文缓存单元中的地址有被重新改写的风险,在禁用报文缓存管理器之后,需要从管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址。
[0058] S13:根据第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将第二报文缓存单元的地址添加到管理缓存地址链表中。
[0059] 为了保存第一报文缓存单元中的数据缓存的地址,从管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址后,需要根据根据第一报文缓存单元中的数据缓存的地址建立新的报文缓存单元,该报文缓存单元定义为第二报文缓存单元,并进一步更新管理缓存地址链表。
[0060] S14:启用报文缓存管理器。
[0061] 从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址,并根据第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元并更新管理缓存地址链表后,就可以消除第一报文缓存单元被重新释放可能带来的报文缓存管理器崩溃的风险,从而可以启用报文缓存管理器。
[0062] 该方案中,可以实时监测报文缓存管理器中的报文缓存单元是否被重复释放,若检测到第一报文缓存单元被重复释放,再确定第一报文缓存单元是否是管理缓存,若第一报文缓存单元是管理缓存,则确定报文缓存管理器中的管理缓存出现被重复释放的异常情况,为了避免报文缓存管理器崩溃,禁用报文缓存管理器,并从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址,根据第一报文缓存单元中的数据缓存的地址重新建立第二报文缓存单元并更新管理缓存地址链表后,再启用报文缓存管理器,从而消除了第一报文缓存单元被重复释放造成的报文缓存管理器异常,避免管理缓存中的信息被改写而导致的报文缓存管理器崩溃。
[0063] 具体的,上述S12中从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址,实现过程如图2所示,具体包括:
[0064] S121:根据报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元。
[0065] S122:将第三报文缓存单元中的管理缓存的地址更新为第四报文缓存单元中的地址。
[0066] 由于报文缓存管理器中的报文缓存单元可以作为管理缓存或者数据缓存使用,而作为管理缓存的报文缓存单元的前128字节可以存储32个地址,前31个是数据缓存的地址,第32个则是下一个管理缓存的地址,因此,可以从报文缓存管理器的管理缓存地址链表中找到第三报文缓存单元和第四报文缓存单元,其中,第三缓存单元中的管理缓存的地址为第一报文缓存单元的地址,第一报文缓存单元中的管理缓存的地址为第四报文缓存单元的地址;然后,将第三报文缓存单元中的管理缓存的地址更新为第四报文缓存单元中的地址,在管理缓存地址链表中就不存在第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址。
[0067] 具体的,上述S13中根据第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将第二报文缓存单元的地址添加到管理缓存地址链表中,实现过程如图3所示,具体包括:
[0068] S131:保留第一报文缓存单元中的数据缓存的地址,并清空第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元。
[0069] S132:将管理缓存地址链表中最后一个报文缓存单元中的管理缓存的地址更新为第二报文缓存单元的地址。
[0070] 由于已经从管理缓存地址链表中删除了第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址,可以直接保留第一报文缓存单元中的数据缓存的地址,并清空第一报文缓存单元中的管理缓存的地址,就得到第二报文缓存单元,然后将管理缓存地址链表中最后一个报文缓存单元中的管理缓存的地址更新为第二报文缓存单元的地址,由于第二报文缓存单元中的管理缓存的地址成为管理缓存地址链表中最后一个报文缓存单元中的管理缓存的地址,因此第二报文缓存单元中的管理缓存的地址为空,等到再有其他报文缓存单元中的管理缓存的地址成为管理缓存地址链表中最后一个报文缓存单元中的管理缓存的地址时,第二报文缓存单元中的管理缓存的地址进行更新。
[0071] 以上描述了第一报文缓存单元是管理缓存的处理方法,下面介绍第一报文缓存单元是数据缓存的处理方法,如图4所示,执行步骤如下:
[0072] S41:若检测到第一报文缓存单元被重复释放、且确定第一报文缓存单元是数据缓存,则查找包含第一报文缓存单元的地址的第五报文缓存单元,第五报文缓存单元是管理缓存。
[0073] 可以实时监测报文缓存管理器中的每个报文缓存单元是否被重复释放,若检测到报文缓存管理器中的一个报文缓存单元被重复释放,该报文缓存单元可以定义为第一报文缓存单元,则可以进一步确定第一报文缓存单元是否是数据缓存,若监控到第一报文缓存单元是数据缓存,无需禁用报文缓存管理器,查找包含第一报文缓存单元的地址的管理缓存,该管理缓存定义为第五报文缓存单元。
[0074] 其中,确定第一报文缓存单元是否是管理缓存的过程为:确定第一报文缓存单元中是否包含数据缓存标识;若确定第一报文缓存单元中包含数据缓存标识,则确定第一报文缓存单元是数据缓存。数据缓存标识可以根据实际需要进行设定。
[0075] S42:从第五报文缓存单元中删除第一报文缓存单元的地址。
[0076] S43:获取第六报文缓存单元,在第六报文缓存单元中保存第一报文缓存单元的地址,第六报文缓存单元为管理缓存。
[0077] 由于第一报文缓存单元被重复释放且为数据缓存,因此,第一报文缓存单元存在被改写的风险,可以从第五报文缓存单元中删除第一报文缓存单元的地址,然后在一个新的管理缓存中保存第一报文缓存单元的地址,这个新的管理缓存定义为第六报文缓存单元。
[0078] 通过S41-S43就可以实现当第一报文缓存单元是数据缓存时,报文缓存管理器异常的处理方法。
[0079] 下面以一个具体实施例说明上述报文缓存管理器异常的处理方法,如图5所示,执行步骤如下:
[0080] S51:流程开始。
[0081] S52:检测报文缓存管理器中的报文缓存单元是否被重复释放,若检测到第一报文缓存单元被重复释放,执行S53;若未检测到报文缓存管理器中报文缓存单元被重复释放,则执行S52。
[0082] S53:确定第一报文缓存单元中是否包含数据缓存标识;若确定第一报文缓存单元中包含数据缓存标识,则执行S61;若确定第一报文缓存单元中未包含数据缓存标识,则执行S54。
[0083] S54:确定第一报文缓存单元是数据缓存。
[0084] S55:禁用报文缓存管理器。
[0085] S56:根据报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元。
[0086] 其中,第三缓存单元中的管理缓存的地址为第一报文缓存单元的地址,第一报文缓存单元中的管理缓存的地址为第四报文缓存单元的地址。
[0087] S57:将第三报文缓存单元中的管理缓存的地址更新为第四报文缓存单元中的地址。
[0088] S58:保留第一报文缓存单元中的数据缓存的地址,并清空第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元。
[0089] S59:将管理缓存地址链表中的最后一个报文缓存单元中的管理缓存的地址更新为第二报文缓存单元的地址。
[0090] S60:启用报文缓存管理器。
[0091] S61:确定第一报文缓存单元是管理缓存。
[0092] S62:查找包含第一报文缓存单元的地址的第五报文缓存单元,第五报文缓存单元是管理缓存。
[0093] S63:从第五报文缓存单元中删除第一报文缓存单元的地址。
[0094] S64:获取第六报文缓存单元,在第六报文缓存单元中保存第一报文缓存单元的地址,第六报文缓存单元为管理缓存。
[0095] 通过S51-S64可以处理第一报文缓存单元是管理缓存时的异常情况,也可以处理消处理第一报文缓存单元是管理缓存时的异常情况,消除了第一报文缓存单元被重复释放造成的报文缓存管理器异常,能够有效避免管理缓存中的信息被改写而导致的报文缓存管理器崩溃。
[0096] 基于同一发明构思,本发明实施例提供一种报文缓存管理器异常的处理装置,该装置的结构如图6所示,包括:
[0097] 禁用模块61,用于若检测到报文缓存管理器的第一报文缓存单元被重复释放、且确定第一报文缓存单元是管理缓存,则禁用报文缓存管理器;
[0098] 第一删除模块62,用于从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址;
[0099] 建立模块63,用于根据第一报文缓存单元中的数据缓存的地址建立第二报文缓存单元,将第二报文缓存单元的地址添加到管理缓存地址链表中;
[0100] 启用模块64,用于启用报文缓存管理器。
[0101] 该方案中,可以实时监测报文缓存管理器中的报文缓存单元是否被重复释放,若检测到第一报文缓存单元被重复释放,再确定第一报文缓存单元是否是管理缓存,若第一报文缓存单元是管理缓存,则确定报文缓存管理器中的管理缓存出现被重复释放的异常情况,为了避免报文缓存管理器崩溃,禁用报文缓存管理器,并从报文缓存管理器的管理缓存地址链表中删除第一报文缓存单元的地址和第一报文缓存单元中的管理缓存的地址,根据第一报文缓存单元中的数据缓存的地址重新建立第二报文缓存单元并更新管理缓存地址链表后,再启用报文缓存管理器,从而消除了第一报文缓存单元被重复释放造成的报文缓存管理器异常,避免管理缓存中的信息被改写而导致的报文缓存管理器崩溃。
[0102] 具体的,第一删除模块62,具体用于:
[0103] 根据报文缓存器的管理缓存地址链表找到第三报文缓存单元和第四报文缓存单元,第三缓存单元中的管理缓存的地址为第一报文缓存单元的地址,第一报文缓存单元中的管理缓存的地址为第四报文缓存单元的地址;
[0104] 将第三报文缓存单元中的管理缓存的地址更新为第四报文缓存单元的地址。
[0105] 具体的,建立模块63,具体用于:
[0106] 保留第一报文缓存单元中的数据缓存的地址,并清空第一报文缓存单元中的管理缓存的地址,得到第二报文缓存单元;
[0107] 将管理缓存地址链表中的最后一个报文缓存单元中的管理缓存的地址更新为第二报文缓存单元的地址。
[0108] 可选的,还包括确定模块,用于:
[0109] 确定第一报文缓存单元中是否包含数据缓存标识;
[0110] 若确定第一报文缓存单元中包含数据缓存标识,则确定第一报文缓存单元是数据缓存;
[0111] 若确定第一报文缓存单元中未包含数据缓存标识,则确定第一报文缓存单元是管理缓存。
[0112] 可选的,还包括:
[0113] 查找模块,用于若检测到第一报文缓存单元被重复释放、且确定第一报文缓存单元是数据缓存,则查找包含第一报文缓存单元的地址的第五报文缓存单元,第五报文缓存单元是管理缓存;
[0114] 第二删除模块用于从第五报文缓存单元中删除第一报文缓存单元的地址;
[0115] 获取模块,用于获取第六报文缓存单元,在第六报文缓存单元中保存第一报文缓存单元的地址,第六报文缓存单元为管理缓存。
[0116] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0117] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0118] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0119] 尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
[0120] 显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。