处理器内核调用栈信息查询方法及装置制造方法及图纸

技术编号:31508924 阅读:21 留言:0更新日期:2021-12-22 23:44
本公开涉及一种处理器内核调用栈信息查询方法、装置与电子设备。处理器内核调用栈信息查询方法包括:响应来自主处理器的第一核间中断消息确定中断处理函数,所述第一核间中断消息包括查询标识位,所述第一核间中断消息的所述查询标识位为第一值;通过所述中断处理函数获取预设寄存器的值,并根据所述预设寄存器的值确定内核调用栈信息;将所述内核调用栈信息保存在预设缓存地址。本公开实施例无需使设备停止运行即可获取目标处理器的内核调用栈信息。信息。信息。

【技术实现步骤摘要】
处理器内核调用栈信息查询方法及装置


[0001]本公开涉及计算机
,具体而言,涉及一种处理器内核调用栈信息查询方法、装置与电子设备。

技术介绍

[0002]在设置有多个处理器的系统的运维过程中,如果系统出现问题,通常需要查看某个目标处理器的内核调用栈信息,以确定是否发生处理器使用率高或者通道拥堵等问题。
[0003]在相关技术中,通常需要使设备进入内核调试模式(KernelDebug,KDB)停止运行或断流,以查看各处理器上的内核调用栈信息,定位问题。在此过程中,极可能存在由进入KDB模式导致的系统运行风险。
[0004]因此,如何在保障系统正常运行的情况下查看各处理器的内核调用栈信息成为本领域一个急需解决的问题。
[0005]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0006]本公开的目的在于提供一种处理器内核调用栈信息查询方法、装置与电子设备,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的查看内核调用栈信息时使系统停止运行会导致系统发生运行风险的问题。
[0007]根据本公开实施例的第一方面,提供一种处理器内核调用栈信息查询方法,由多个处理器中的任一个处理器执行,包括:响应来自主处理器的第一核间中断消息确定中断处理函数,所述第一核间中断消息包括查询标识位,所述第一核间中断消息的所述查询标识位为第一值;通过所述中断处理函数获取预设寄存器的值,并根据所述预设寄存器的值确定内核调用栈信息;将所述内核调用栈信息保存在预设缓存地址。
[0008]在本公开的一种示例性实施例中,所述中断处理函数包括do_nmi函数,所述预设寄存器包括pt_regs寄存器。
[0009]在本公开的一种示例性实施例中,所述根据所述预设寄存器的值确定内核调用栈信息包括:
[0010]根据所述预设寄存器的值调用stack_frame函数获取所述处理器的栈帧bp指针;
[0011]根据所述bp指针的值调用get_context_stack函数得出所述内核调用栈信息。
[0012]在本公开的一种示例性实施例中,所述预设缓存地址包括g_x86_cpu_info字符数组。
[0013]在本公开的一种示例性实施例中,所述第一核间中断消息包括中断描述符,根据所述第一核间中断消息确定中断处理函数包括:
[0014]根据所述中断描述符确定所述中断处理函数。
[0015]在本公开的一种示例性实施例中,还包括:
[0016]响应来自所述主处理器的第二核间中断消息停止对所述第一核间中断消息的响应动作,所述第二核间中断消息为所述主处理器响应预设事件触发,所述预设事件包括多个预设不可屏蔽中断事件中的至少一个,所述第二核间中断消息包括查询标识位,所述第二核间中断消息的查询标识位为第二值;
[0017]根据所述第二核间中断消息执行后续动作。
[0018]根据本公开的第二方面,提供一种处理器内核调用栈信息查询方法,由用户态程序执行,包括:
[0019]响应标准命令行指令生成查看目标处理器的内核调用栈信息的预设核间中断指令,以使主处理器响应所述预设核间中断指令对所述目标处理器发送第一核间中断消息,所述第一核间中断消息包括查询标识位,所述第一核间中断消息的查询标识位的值为第一值;
[0020]在预设时长后获取预设缓存地址的值,根据所述预设缓存地址的值输出所述目标处理器的内核调用栈信息。
[0021]根据本公开的第三方面,提供一种处理器内核调用栈信息查询方法,由主处理器执行,包括:
[0022]响应来自用户态程序的预设核间中断指令对目标处理器发送第一核间中断消息,所述预设核间中断指令用于查看所述目标处理器的内核调用栈信息,所述第一核间中断消息包括查询标识位,所述第一核间中断消息的所述查询标识位为第一值;
[0023]响应来自所述用户态程序的预设缓存地址读取指令返回所述预设缓存地址的值。
[0024]在本公开的一种示例性实施例中,还包括:
[0025]响应预设事件对所述目标处理器发送第二核间中断消息,所述预设事件包括多个预设不可屏蔽中断事件中的至少一个,所述第二核间中断消息包括查询标识位,所述第二核间中断消息的查询标识位为第二值。
[0026]根据本公开实施例的第四方面,提供一种处理器内核调用栈信息查询装置,包括:
[0027]中断函数确定模块,设置为响应来自主处理器的第一核间中断消息确定中断处理函数,所述第一核间中断消息包括查询标识位,所述第一核间中断消息的所述查询标识位为第一值;
[0028]寄存器读取模块,设置为通过所述中断处理函数获取预设寄存器的值,并根据所述预设寄存器的值确定内核调用栈信息;
[0029]缓存写入模块,设置为将所述内核调用栈信息保存在预设缓存地址。
[0030]根据本公开的第五方面,提供一种电子设备,包括:存储器;以及耦合到所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任意一项所述的方法。
[0031]根据本公开的第六方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项所述的处理器内核调用栈信息查询方法。
[0032]本公开实施例通过在各处理器上设置第一核间中断消息处理逻辑,使处理器无需进入内核调试模式即可返回内核调用栈信息,能够有效提高系统问题定位效率,降低问题定位导致的系统运行风险。
[0033]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不
能限制本公开。
附图说明
[0034]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0035]图1是本公开示例性实施例中的处理器内核调用栈信息查询方法应用的系统逻辑结构示意图。
[0036]图2是本公开示例性实施例中由多个处理器中的任一个处理器执行的处理器内核调用栈信息查询方法的流程图。
[0037]图3是本公开示例性实施例中由用户态程序执行的处理器内核调用栈信息查询方法的流程图。
[0038]图4是本公开示例性实施例中由主处理器执行的处理器内核调用栈信息查询方法的流程图。
[0039]图5是本公开实施例中的一个交互示意图。
[0040]图6是本公开示例性实施例中一种处理器内核调用栈信息查询装置的方框图。
[0041]图7是本公开示例性实施例中一种电子设备的方框图。
具体实施方式
[0042]现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理器内核调用栈信息查询方法,其特征在于,由多个处理器中的任一个处理器执行,包括:响应来自主处理器的第一核间中断消息确定中断处理函数,所述第一核间中断消息包括查询标识位,所述第一核间中断消息的所述查询标识位为第一值;通过所述中断处理函数获取预设寄存器的值,并根据所述预设寄存器的值确定内核调用栈信息;将所述内核调用栈信息保存在预设缓存地址。2.如权利要求1所述的方法,其特征在于,所述中断处理函数包括do_nmi函数,所述预设寄存器包括pt_regs寄存器。3.如权利要求2所述的方法,其特征在于,所述根据所述预设寄存器的值确定内核调用栈信息包括:根据所述预设寄存器的值调用stack_frame函数获取所述处理器的栈帧bp指针;根据所述bp指针的值调用get_context_stack函数得出所述内核调用栈信息。4.如权利要求2或3所述的方法,其特征在于,所述预设缓存地址包括g_x86_cpu_info字符数组。5.如权利要求1所述的方法,其特征在于,所述第一核间中断消息包括中断描述符,根据所述第一核间中断消息确定中断处理函数包括:根据所述中断描述符确定所述中断处理函数。6.如权利要求1所述的方法,其特征在于,还包括:响应来自所述主处理器的第二核间中断消息停止对所述第一核间中断消息的响应动作,所述第二核间中断消息为所述主处理器响应预设事件触发,所述预设事件包括多个预设不可屏蔽中断事件中的至少一个,所述第二核间中断消息包括查询标识位,所述第二核间中断消息的查询标识位为第二值;根据所述第二核间中断消息执行后续动作。7.一...

【专利技术属性】
技术研发人员:范保平
申请(专利权)人:杭州迪普科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1