中断信息获取方法、装置、计算机、电子设备和介质与流程
未命名
09-22
阅读:79
评论:0
1.本技术涉及计算机
技术领域:
:,具体而言,涉及一种中断信息获取方法、装置、计算机、电子设备和介质。
背景技术:
::2.高速串行计算机扩展总线标准(peripheralcomponentinterconnectexpress,pcie)设备有三种中断,分别为定义的引脚中断(intx),消息信号中断(messagesignaledinterrupt,msi),扩展消息信号中断(messagesignaledinterruptextended,msi-x),其中intx是可选的,msi或者msi-x是必须实现的,而现在pcie设备一般都实现msi-x中断。msi-x是msi中断机制的扩展,引出msi-x的主要目的是为了扩展pcie设备中断向量的个数,同时解决msi中断机制要求使用中断向量号连续的问题。3.pcie设备有独立的配置空间,msi-x的初始信息就保存在配置空间的capability结构中。与msicapability寄存器相比,msicapability记录了msi的详细信息,可通过lspci命令直接查看;而msi-xcapability寄存器使用一个数组存放messageaddress字段和messagedata字段称为msi-xtable,而不是将这两个字段直接放入capability寄存器中;且msi-x机制还使用了独立的pendingtable表存放与每一个中断向量对应的pending位。msi-xtable和pendingtable存放在基地址寄存器(baseaddressregister,bar)空间中,所以无法通过lspci命令或其他方式直接查看。4.目前,对msi-x信息的获取依赖于各设备驱动程序日志打印的完善程度,因为msi-x的向量信息依赖设备硬件的支持和主机系统的分配,而设备的驱动程序能获取这些信息,但设备驱动日志所提供的msi-x信息不全面,无法用于对设备的性能进行分析。5.因此,如何全面地获取pcie设备的msi-x信息成为业界亟待解决的技术问题。技术实现要素:6.本技术提供一种中断信息获取方法、装置、计算机、电子设备和介质,用于解决如何全面地获取pcie设备的msi-x信息的技术问题。7.本技术提供一种中断信息获取方法,包括:8.基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;9.基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;10.确定所述基地址在内存中对应的虚拟地址;11.基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。12.在一些实施例中,所述基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息,包括:13.基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息;14.基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息;15.基于所述第一信息和所述第二信息,确定所述目标串行总线设备的中断信息。16.在一些实施例中,所述基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息,包括:17.基于所述虚拟地址和所述中断信息表的偏移量,确定所述第一信息在所述内存中的虚拟地址;18.基于所述第一信息的虚拟地址,从所述内存中读取所述第一信息。19.在一些实施例中,所述基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息,包括:20.基于所述虚拟地址和所述中断使能表的偏移量,确定所述第二信息在所述内存中的虚拟地址;21.基于所述第二信息的虚拟地址,从所述内存中读取所述第二信息。22.在一些实施例中,所述确定所述基地址在内存中对应的虚拟地址,包括:23.确定所述目标串行总线设备对应的配置空间与所述目标串行总线设备对应的内存之间的地址映射关系;24.基于所述地址映射关系和所述基地址,确定所述基地址在内存中对应的虚拟地址。25.在一些实施例中,所述基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体,包括:26.确定目标串行总线设备的设备地址;27.基于所述目标串行总线设备的设备地址,确定所述目标串行总线设备的配置空间;28.对所述配置空间中的信息进行解析,确定所述目标串行总线设备的中断能力结构体。29.本技术提供一种中断信息获取装置,包括:30.第一确定单元,用于基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;31.第二确定单元,用于基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;32.转换单元,用于确定所述基地址在内存中对应的虚拟地址;33.读取单元,用于基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。34.本技术提供一种计算机,包括主板,以及设置在所述主板上的所述的中断信息获取装置。35.本技术提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的中断信息获取方法。36.本技术提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的中断信息获取方法。37.本技术提供的中断信息获取方法、装置、计算机、电子设备和介质,根据目标串行总线设备对应的配置空间中的中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;将基地址转换为内存中对应的虚拟地址;根据虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息;通过对中断能力结构体进行解析,将得到的基地址转换为内存中对应的虚拟地址,对内存空间的读写操作,从而实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。附图说明38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。39.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。40.图1是本技术一个实施例提供的中断信息获取方法的流程示意图;41.图2是本技术又一个实施例提供的中断信息获取方法的流程示意图;42.图3是本技术一个实施例提供的中断信息读取程序的流程示意图;43.图4是本技术一个实施例提供的中断信息获取装置的结构示意图;44.图5是本技术一个实施例提供的计算机的结构示意图;45.图6是本技术一个实施例提供的电子设备的结构示意图。具体实施方式46.为了使本
技术领域:
:的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。47.需要说明的是,本技术中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。48.图1是本技术一个实施例提供的中断信息获取方法的流程示意图,如图1所示,该方法包括步骤110、步骤120、步骤130和步骤140。49.步骤110、基于目标串行总线设备对应的配置空间,确定目标串行总线设备的中断能力结构体。50.具体地,本技术实施例提供的中断信息获取方法的应用场景为通过计算机的操作系统对内存空间进行直接读写,获取串行总线设备(pcie设备)的中断信息(msi-x信息)。pcie设备是指支持pcie总线接入的设备。msi-x信息是指pcie总线产生的msi-x中断的详细信息,包括信息地址(messageaddress)和信息数据(messagedata)等。目标串行总线设备(目标pcie设备)为需要读取msi-x信息的pcie设备。51.该方法的执行主体为中断信息获取装置。该装置可以通过软件实现,例如在操作系统中执行该方法的程序;也可以为执行该方法的硬件装置。52.在计算机设备中,每个pcie设备都有独立的配置空间。计算机的操作系统也会为每个pcie设备分配对应的内存空间。计算机的处理器访问对应的内存空间即访问每个pcie设备的配置空间。53.pcie设备可以使用msi-x报文向处理器提交中断请求。pcie设备包含中断能力结构体(msi-xcapabilitystructure,msi-xcapability结构体)。结构体是由一批数据组合而成的结构型数据。54.msi-xcapability结构体在配置空间中。pcie设备在提交msi-x中断请求时,都是向配置空间中的msi-xcapability结构体中的messageaddress的地址写入messagedata数据,从而组成一个存储器写事务层数据包(memorywritetransactionlayerpacket,memorywritetlp),向处理器提交中断请求。55.步骤120、基于中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量。56.具体地,msi-xcapability结构体在配置空间中,其大小为3个双字节数据(dword),即12字节。57.第一个双字节数据的内容至少包括中断向量数量等内容。第二个双字节数据的内容至少包括中断信息表(msi-xtable)的偏移量(offset)和msi-xtable的基地址(baseaddressregister,bar)。第三个双字节数据的内容至少包括中断使能表(pendingtable)的偏移量(offset)和pendingtable的基地址。此处的偏移量是指相对于基地址的地址偏移量。58.msi-xtable的基地址和pendingtable的基地址可以相同。在本技术实施例中,msi-xtable和pendingtable共用同一个基地址。59.中断向量为由硬件产生的中断入口地址或存放中断服务程序的首地址,与中断请求一一对应。中断向量数量是指目标pcie设备所能够请求的中断向量的总数。60.msi-xtable中存放着目标pcie设备的所有中断信息。msi-xtable由多条entry组成,每一条entry与一个中断请求对应。每一条entry中的字段可以包括:61.向量控制信息(vectorcontrol),用于确定是否使用该entry提交中断请求;中断向量高地址(msgupperaddr),用于存放msi-x存储器写事务层数据包的目的地址的高32位;中断向量低地址(msgaddr),用于存放msi-x存储器写事务层数据包的目的地址的低32位;中断向量信息数据(msgdata),用于存放msi-x存储器写事务层数据包的数据。62.pendingtable也由多条entry组成。在pendingtable中,一个entry由64位组成,其中该entry中的每一位与msi-xtable中的一个entry对应,即pendingtable中的每一个entry与msi-xtable的64个entry对应,每一个entry包括64个pending位(使能位),分别对应msi-xtable中的64个中断向量。pending位用于确定是否发送对应的中断请求。63.与msi机制类似,pending位需要与pervectormask位配置使用。当pervectormask位为1时,目标pcie设备不能立即发送msi-x中断请求,而是将对应的pending位置1;当处理器将pervectormask位清零时,目标pcie设备需要提交msi-x中断请求,同时将pending位清零。64.步骤130、确定基地址在内存中对应的虚拟地址。65.具体地,虚拟地址是操作系统为应用程序提供的统一的内存访问接口。处理器在执行应用程序时操作的始终是程序中的虚拟地址,虚拟地址经过内存管理单元的翻译后才能够得到实际要操作的物理地址。基地址为物理地址。66.因此,需要将基地址转换为虚拟地址。例如,在linux系统中,可以调用mmap(内存映射)函数,实现物理地址到虚拟地址的映射转换。67.步骤140、基于虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息。68.具体地,根据虚拟地址和msi-xtable的偏移量,可以从内存中读取msi-xtable中的详细信息。根据虚拟地址和pendingtable的偏移量,可以从内存中读取pendingtable中的详细信息。将msi-xtable中的详细信息和pendingtable中的详细信息进行汇总,可以得到目标pcie设备的msi-x信息。69.中断向量数量用于对读写次数进行控制,使得能够从内存中读取得到目标pcie设备所对应的所有msi-x信息。70.本技术实施例提供的中断信息获取方法,根据目标串行总线设备对应的配置空间中的中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;将基地址转换为内存中对应的虚拟地址;根据虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息;通过对中断能力结构体进行解析,将得到的基地址转换为内存中对应的虚拟地址,对内存空间的读写操作,从而实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。71.需要说明的是,本技术每一个实施方式可以自由组合、调换顺序或者单独执行,并不需要依靠或依赖固定的执行顺序。72.在一些实施例中,步骤140包括:73.基于虚拟地址、中断信息表的偏移量和中断向量数量,从内存中读取中断信息表中的第一信息;74.基于虚拟地址、中断使能表的偏移量和中断向量数量,从内存中读取中断使能表中的第二信息;75.基于第一信息和第二信息,确定目标串行总线设备的中断信息。76.具体地,在将基地址转换为虚拟地址后,可以实现对内存进行读写操作。77.通过虚拟地址和msi-xtable的偏移量,可以确定msi-xtable中的第一信息在内存中的虚拟地址,通过中断向量数量控制第一信息的读写次数,读取后可以得到第一信息。第一信息为中断记录表中存放的与中断向量的内容有关的信息,包括向量控制信息、中断向量高地址、中断向量低地址和中断向量信息数据等。78.通过虚拟地址和pendingtable的偏移量,可以确定pendingtable中的第二信息在内存中的虚拟地址,通过中断向量数量控制第二信息的读写次数,读取后可以得到第二信息。第二信息为中断使能表中存放的与中断向量的使能有关的信息,包括使能位等。79.对第一信息和第二信息进行汇总,得到目标pcie设备的msi-x信息。80.本技术实施例提供的中断信息获取方法,将基地址转换为虚拟地址,通过msi-xtable的偏移量和pendingtable的偏移量,分别确定第一信息的虚拟地址和第二信息的虚拟地址,通过中断向量数量控制读写次数,可以全面地读取目标pcie设备的msi-x信息。81.在一些实施例中,基于虚拟地址、中断信息表的偏移量和中断向量数量,从内存中读取中断信息表中的第一信息,包括:82.基于虚拟地址和中断信息表的偏移量,确定第一信息在内存中的虚拟地址;83.基于第一信息的虚拟地址,从内存中读取第一信息。84.具体地,将虚拟地址和msi-xtable的偏移量相加,可以得到第一信息在内存中的虚拟地址。85.根据第一信息的虚拟地址,对第一信息进行读取时,可以以单个中断向量在msi-xtable中对应的信息内容为第一信息对应的单次读取数据量,由于msi-xtable中4个dword对应一个中断请求,则可以以4个dword为单位,从内存中读取第一信息,相应的读取次数可以等于中断向量数量。86.在读取第一信息后,可以以二进制格式输出,便于查询或者使用。87.本技术实施例提供的中断信息获取方法,根据虚拟地址和msi-xtable的偏移量,分别确定第一信息的虚拟地址,通过中断向量数量控制读写次数,可以全面地读取目标pcie设备的第一信息。88.在一些实施例中,基于虚拟地址、中断使能表的偏移量和中断向量数量,从内存中读取中断使能表中的第二信息,包括:89.基于虚拟地址和中断使能表的偏移量,确定第二信息在内存中的虚拟地址;90.基于第二信息的虚拟地址,从内存中读取第二信息。91.具体地,将虚拟地址和pendingtable的偏移量相加,可以得到第二信息在内存中的虚拟地址。92.根据第二信息的虚拟地址,对第二信息进行读取时,可以以预设位数为第二信息对应的单次读取数据量,由于pendingtable中每一个位对应一个中断请求,则从内存中读取第二信息的次数可以等于中断向量数量与预设位数的商。93.在读取第二信息后,可以以二进制格式输出,便于查询或者使用。94.本技术实施例提供的中断信息获取方法,根据虚拟地址和pendingtable的偏移量,分别确定第二信息的虚拟地址,通过中断向量数量控制读写次数,可以全面地读取目标pcie设备的第二信息。95.在一些实施例中,步骤130包括:96.确定目标串行总线设备对应的配置空间与目标串行总线设备对应的内存之间的地址映射关系;97.基于地址映射关系和基地址,确定基地址在内存中对应的虚拟地址。98.具体地,地址映射关系是指目标pcie设备对应的配置空间中的物理地址与目标pcie设备对应的内存之间的对应关系。99.基地址为物理地址。可以通过地址映射关系进行转换,得到基地址在内存中对应的虚拟地址。100.本技术实施例提供的中断信息获取方法,将基地址转换为虚拟地址,可以实现对目标pcie设备对应的内存进行读写,可以全面地读取目标pcie设备的msi-x信息。101.在一些实施例中,步骤110包括:102.确定目标串行总线设备的设备地址;103.基于目标串行总线设备的设备地址,确定目标串行总线设备的配置空间;104.对配置空间中的信息进行解析,确定目标串行总线设备的中断能力结构体。105.具体地,设备地址为操作系统为各个pcie设备分配的设备访问地址。通过查询目标pcie设备对应的关键字,可以获取目标pcie设备的设备地址。例如,在linux操作系统中运行shell(命令解释器),输入命令lspcigrep[关键字],可以查询得到关键字对应的目标pcie设备的设备地址。其中,grep用于筛选设备。[0106]根据设备地址,可以查看目标pcie设备的配置空间。从配置空间中获取目标pcie设备的msi-xcapability结构体。例如,在shell中输入命令lspci-s[设备地址]-vvv,可以获取msi-xcapability结构体。[0107]本技术实施例提供的中断信息获取方法,通过根据设备地址确定目标pcie设备的配置空间和msi-xcapability结构体,可以全面地读取目标pcie设备的msi-x信息。[0108]图2是本技术又一个实施例提供的中断信息获取方法的流程示意图,如图2所示,该方法适用于linux操作系统,包括:[0109]步骤210、获取pcie设备msi-xcapability结构体[0110]msi-x的capability记录的是msi-xtable和pendingtable在bar中的偏移量;所以要获取基地址、msi-xtable在bar的偏移量、pendingtable在bar的偏移量和中断向量数量。[0111]通过在shell下运行lspci-s[设备地址]-vvv命令可获取所需信息。其中lspci的“‑s”参数解析设备地址,“‑vvv”参数能打印解析配置空间后的所有信息,其中就包括msi-xcapability结构体的信息。[0112]步骤220、根据msi-xcapability结构体,确定输入参数[0113]可以选择msi-xcapability结构体中的基地址、msi-xtable在bar的偏移量、pendingtable在bar的偏移量和中断向量数量作为程序文件的输入参数。该程序文件用于从内存中读取msi-x信息。[0114]步骤230、编写程序文件,读取pcie设备的msi-x信息[0115]在linux操作系统中使用c语言编写程序代码,实现所需的功能,利用gnu编译器套件(gnucompilercollection,gcc)把.c格式的代码文件编译成可执行二进制程序,通过输入参数和运行程序,实现对msi-x信息的读取。[0116]图3是本技术一个实施例提供的中断信息读取程序的流程示意图,如图3所示,该程序的执行流程如下:[0117]步骤310、读取并保存参数[0118]判断输入参数的数量,若数量不符合要求,则打印提示信息,提示参数输入错误,报错返回结束程序。[0119]读取参数1(基地址)并保存在变量中;同理将参数2(msi-xtable偏移量)、参数3(pendingtable偏移量)、参数4(中断向量数量)分别保存在对应的变量中。[0120]步骤320、通过linux系统调用,以只读方式开打“/dev/mem”设备,以用来操控内存。“/dev/mem”设备为虚拟字符设备。[0121]步骤330、通过linux系统调用mmap函数,将参数1保存的物理地址映射成虚拟地址,因为该程序只能在虚拟地址上操作。[0122]步骤340、通过虚拟地址与参数2所代表的偏移量相加,读取msi-xtable的信息,每次读取4个dword,读取的次数由参数4控制;[0123]步骤350、用二进制格式化输出每次读取的内容;[0124]步骤360、通过虚拟地址和参数3所代表的偏移量相加,读取pendingtable的信息,每次读取64位,读取的次数由参数4与64的商确定;并通过二进制格式化输出;[0125]步骤370、完成读或写,关闭文件,解除内存物理地址映射,程序结束。[0126]通过上述方法,可以在linux用户空间,在可实现对任何pcie设备的msi-x信息的获取,提高了工作效率。[0127]下面对本技术实施例提供的装置进行描述,下文描述的装置与上文描述的方法可相互对应参照。[0128]图4是本技术一个实施例提供的中断信息获取装置的结构示意图,如图4所示,该装置包括:[0129]第一确定单元410,用于基于目标串行总线设备对应的配置空间,确定目标串行总线设备的中断能力结构体;[0130]第二确定单元420,用于基于中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;[0131]转换单元430,用于确定基地址在内存中对应的虚拟地址;[0132]读取单元440,用于基于虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息。[0133]本技术实施例提供的中断信息获取装置,根据目标串行总线设备对应的配置空间中的中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;将基地址转换为内存中对应的虚拟地址;根据虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息;通过对中断能力结构体进行解析,将得到的基地址转换为内存中对应的虚拟地址,对内存空间的读写操作,从而实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。[0134]在一些实施例中,读取单元具体用于:[0135]基于虚拟地址、中断信息表的偏移量和中断向量数量,从内存中读取中断信息表中的第一信息;[0136]基于虚拟地址、中断使能表的偏移量和中断向量数量,从内存中读取中断使能表中的第二信息;[0137]基于第一信息和第二信息,确定目标串行总线设备的中断信息。[0138]在一些实施例中,读取单元具体用于:[0139]基于虚拟地址和中断信息表的偏移量,确定第一信息在内存中的虚拟地址;[0140]基于第一信息的虚拟地址,从内存中读取第一信息。[0141]在一些实施例中,读取单元具体用于:[0142]基于虚拟地址和中断使能表的偏移量,确定第二信息在内存中的虚拟地址;[0143]基于第二信息的虚拟地址,从内存中读取第二信息。[0144]在一些实施例中,转换单元具体用于:[0145]确定目标串行总线设备对应的配置空间与目标串行总线设备对应的内存之间的地址映射关系;[0146]基于地址映射关系和基地址,确定基地址在内存中对应的虚拟地址。[0147]在一些实施例中,第一确定单元具体用于:[0148]确定目标串行总线设备的设备地址;[0149]基于目标串行总线设备的设备地址,确定目标串行总线设备的配置空间;[0150]对配置空间中的信息进行解析,确定目标串行总线设备的中断能力结构体。[0151]图5是本技术一个实施例提供的计算机的结构示意图,如图5所示,该计算机500包括主板510,以及设置在主板510上的中断信息获取装置520。[0152]具体地,本技术实施例中的计算机包括塔式服务器、机架式服务器、刀片式服务器、高密度服务器、机柜式服务器等。主板,又称系统板,一般为矩形电路板,上面安装了组成计算机的主要电路系统。[0153]本技术实施例提供的计算机,实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。[0154]图6是本技术一个实施例提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(communicationsinterface)620、存储器(memory)630和通信总线(communicationsbus)640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑命令,以执行上述实施例中所述的方法,例如:[0155]基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;确定所述基地址在内存中对应的虚拟地址;基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。[0156]此外,上述的存储器中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。[0157]本技术实施例提供的电子设备中的处理器可以调用存储器中的逻辑指令,实现上述方法,其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。[0158]本技术实施例还提供一种计算机可读的存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法。[0159]其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。[0160]本技术实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如上述方法。[0161]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。[0162]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。[0163]最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。当前第1页12当前第1页12
技术特征:
1.一种中断信息获取方法,其特征在于,包括:基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;确定所述基地址在内存中对应的虚拟地址;基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。2.根据权利要求1所述的中断信息获取方法,其特征在于,所述基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息,包括:基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息;基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息;基于所述第一信息和所述第二信息,确定所述目标串行总线设备的中断信息。3.根据权利要求2所述的中断信息获取方法,其特征在于,所述基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息,包括:基于所述虚拟地址和所述中断信息表的偏移量,确定所述第一信息在所述内存中的虚拟地址;基于所述第一信息的虚拟地址,从所述内存中读取所述第一信息。4.根据权利要求2所述的中断信息获取方法,其特征在于,所述基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息,包括:基于所述虚拟地址和所述中断使能表的偏移量,确定所述第二信息在所述内存中的虚拟地址;基于所述第二信息的虚拟地址,从所述内存中读取所述第二信息。5.根据权利要求1至4任一项所述的中断信息获取方法,其特征在于,所述确定所述基地址在内存中对应的虚拟地址,包括:确定所述目标串行总线设备对应的配置空间与所述目标串行总线设备对应的内存之间的地址映射关系;基于所述地址映射关系和所述基地址,确定所述基地址在内存中对应的虚拟地址。6.根据权利要求1至4任一项所述的中断信息获取方法,其特征在于,所述基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体,包括:确定目标串行总线设备的设备地址;基于所述目标串行总线设备的设备地址,确定所述目标串行总线设备的配置空间;对所述配置空间中的信息进行解析,确定所述目标串行总线设备的中断能力结构体。7.一种中断信息获取装置,其特征在于,包括:
第一确定单元,用于基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;第二确定单元,用于基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;转换单元,用于确定所述基地址在内存中对应的虚拟地址;读取单元,用于基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。8.一种计算机,其特征在于,包括主板,以及设置在所述主板上的如权利要求7所述的中断信息获取装置。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的中断信息获取方法。10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的中断信息获取方法。
技术总结
本申请公开了一种中断信息获取方法、装置、计算机、电子设备和介质,其中方法包括:基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;确定所述基地址在内存中对应的虚拟地址;基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。本申请提供的方法和装置,实现了通过操作系统全面地读取目标串行总线设备的中断信息。行总线设备的中断信息。行总线设备的中断信息。
技术研发人员:李超 李凤民 苏宁宁
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.05.26
技术公布日:2023/9/20
技术领域:
:,具体而言,涉及一种中断信息获取方法、装置、计算机、电子设备和介质。
背景技术:
::2.高速串行计算机扩展总线标准(peripheralcomponentinterconnectexpress,pcie)设备有三种中断,分别为定义的引脚中断(intx),消息信号中断(messagesignaledinterrupt,msi),扩展消息信号中断(messagesignaledinterruptextended,msi-x),其中intx是可选的,msi或者msi-x是必须实现的,而现在pcie设备一般都实现msi-x中断。msi-x是msi中断机制的扩展,引出msi-x的主要目的是为了扩展pcie设备中断向量的个数,同时解决msi中断机制要求使用中断向量号连续的问题。3.pcie设备有独立的配置空间,msi-x的初始信息就保存在配置空间的capability结构中。与msicapability寄存器相比,msicapability记录了msi的详细信息,可通过lspci命令直接查看;而msi-xcapability寄存器使用一个数组存放messageaddress字段和messagedata字段称为msi-xtable,而不是将这两个字段直接放入capability寄存器中;且msi-x机制还使用了独立的pendingtable表存放与每一个中断向量对应的pending位。msi-xtable和pendingtable存放在基地址寄存器(baseaddressregister,bar)空间中,所以无法通过lspci命令或其他方式直接查看。4.目前,对msi-x信息的获取依赖于各设备驱动程序日志打印的完善程度,因为msi-x的向量信息依赖设备硬件的支持和主机系统的分配,而设备的驱动程序能获取这些信息,但设备驱动日志所提供的msi-x信息不全面,无法用于对设备的性能进行分析。5.因此,如何全面地获取pcie设备的msi-x信息成为业界亟待解决的技术问题。技术实现要素:6.本技术提供一种中断信息获取方法、装置、计算机、电子设备和介质,用于解决如何全面地获取pcie设备的msi-x信息的技术问题。7.本技术提供一种中断信息获取方法,包括:8.基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;9.基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;10.确定所述基地址在内存中对应的虚拟地址;11.基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。12.在一些实施例中,所述基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息,包括:13.基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息;14.基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息;15.基于所述第一信息和所述第二信息,确定所述目标串行总线设备的中断信息。16.在一些实施例中,所述基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息,包括:17.基于所述虚拟地址和所述中断信息表的偏移量,确定所述第一信息在所述内存中的虚拟地址;18.基于所述第一信息的虚拟地址,从所述内存中读取所述第一信息。19.在一些实施例中,所述基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息,包括:20.基于所述虚拟地址和所述中断使能表的偏移量,确定所述第二信息在所述内存中的虚拟地址;21.基于所述第二信息的虚拟地址,从所述内存中读取所述第二信息。22.在一些实施例中,所述确定所述基地址在内存中对应的虚拟地址,包括:23.确定所述目标串行总线设备对应的配置空间与所述目标串行总线设备对应的内存之间的地址映射关系;24.基于所述地址映射关系和所述基地址,确定所述基地址在内存中对应的虚拟地址。25.在一些实施例中,所述基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体,包括:26.确定目标串行总线设备的设备地址;27.基于所述目标串行总线设备的设备地址,确定所述目标串行总线设备的配置空间;28.对所述配置空间中的信息进行解析,确定所述目标串行总线设备的中断能力结构体。29.本技术提供一种中断信息获取装置,包括:30.第一确定单元,用于基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;31.第二确定单元,用于基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;32.转换单元,用于确定所述基地址在内存中对应的虚拟地址;33.读取单元,用于基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。34.本技术提供一种计算机,包括主板,以及设置在所述主板上的所述的中断信息获取装置。35.本技术提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的中断信息获取方法。36.本技术提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的中断信息获取方法。37.本技术提供的中断信息获取方法、装置、计算机、电子设备和介质,根据目标串行总线设备对应的配置空间中的中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;将基地址转换为内存中对应的虚拟地址;根据虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息;通过对中断能力结构体进行解析,将得到的基地址转换为内存中对应的虚拟地址,对内存空间的读写操作,从而实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。附图说明38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。39.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。40.图1是本技术一个实施例提供的中断信息获取方法的流程示意图;41.图2是本技术又一个实施例提供的中断信息获取方法的流程示意图;42.图3是本技术一个实施例提供的中断信息读取程序的流程示意图;43.图4是本技术一个实施例提供的中断信息获取装置的结构示意图;44.图5是本技术一个实施例提供的计算机的结构示意图;45.图6是本技术一个实施例提供的电子设备的结构示意图。具体实施方式46.为了使本
技术领域:
:的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。47.需要说明的是,本技术中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。48.图1是本技术一个实施例提供的中断信息获取方法的流程示意图,如图1所示,该方法包括步骤110、步骤120、步骤130和步骤140。49.步骤110、基于目标串行总线设备对应的配置空间,确定目标串行总线设备的中断能力结构体。50.具体地,本技术实施例提供的中断信息获取方法的应用场景为通过计算机的操作系统对内存空间进行直接读写,获取串行总线设备(pcie设备)的中断信息(msi-x信息)。pcie设备是指支持pcie总线接入的设备。msi-x信息是指pcie总线产生的msi-x中断的详细信息,包括信息地址(messageaddress)和信息数据(messagedata)等。目标串行总线设备(目标pcie设备)为需要读取msi-x信息的pcie设备。51.该方法的执行主体为中断信息获取装置。该装置可以通过软件实现,例如在操作系统中执行该方法的程序;也可以为执行该方法的硬件装置。52.在计算机设备中,每个pcie设备都有独立的配置空间。计算机的操作系统也会为每个pcie设备分配对应的内存空间。计算机的处理器访问对应的内存空间即访问每个pcie设备的配置空间。53.pcie设备可以使用msi-x报文向处理器提交中断请求。pcie设备包含中断能力结构体(msi-xcapabilitystructure,msi-xcapability结构体)。结构体是由一批数据组合而成的结构型数据。54.msi-xcapability结构体在配置空间中。pcie设备在提交msi-x中断请求时,都是向配置空间中的msi-xcapability结构体中的messageaddress的地址写入messagedata数据,从而组成一个存储器写事务层数据包(memorywritetransactionlayerpacket,memorywritetlp),向处理器提交中断请求。55.步骤120、基于中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量。56.具体地,msi-xcapability结构体在配置空间中,其大小为3个双字节数据(dword),即12字节。57.第一个双字节数据的内容至少包括中断向量数量等内容。第二个双字节数据的内容至少包括中断信息表(msi-xtable)的偏移量(offset)和msi-xtable的基地址(baseaddressregister,bar)。第三个双字节数据的内容至少包括中断使能表(pendingtable)的偏移量(offset)和pendingtable的基地址。此处的偏移量是指相对于基地址的地址偏移量。58.msi-xtable的基地址和pendingtable的基地址可以相同。在本技术实施例中,msi-xtable和pendingtable共用同一个基地址。59.中断向量为由硬件产生的中断入口地址或存放中断服务程序的首地址,与中断请求一一对应。中断向量数量是指目标pcie设备所能够请求的中断向量的总数。60.msi-xtable中存放着目标pcie设备的所有中断信息。msi-xtable由多条entry组成,每一条entry与一个中断请求对应。每一条entry中的字段可以包括:61.向量控制信息(vectorcontrol),用于确定是否使用该entry提交中断请求;中断向量高地址(msgupperaddr),用于存放msi-x存储器写事务层数据包的目的地址的高32位;中断向量低地址(msgaddr),用于存放msi-x存储器写事务层数据包的目的地址的低32位;中断向量信息数据(msgdata),用于存放msi-x存储器写事务层数据包的数据。62.pendingtable也由多条entry组成。在pendingtable中,一个entry由64位组成,其中该entry中的每一位与msi-xtable中的一个entry对应,即pendingtable中的每一个entry与msi-xtable的64个entry对应,每一个entry包括64个pending位(使能位),分别对应msi-xtable中的64个中断向量。pending位用于确定是否发送对应的中断请求。63.与msi机制类似,pending位需要与pervectormask位配置使用。当pervectormask位为1时,目标pcie设备不能立即发送msi-x中断请求,而是将对应的pending位置1;当处理器将pervectormask位清零时,目标pcie设备需要提交msi-x中断请求,同时将pending位清零。64.步骤130、确定基地址在内存中对应的虚拟地址。65.具体地,虚拟地址是操作系统为应用程序提供的统一的内存访问接口。处理器在执行应用程序时操作的始终是程序中的虚拟地址,虚拟地址经过内存管理单元的翻译后才能够得到实际要操作的物理地址。基地址为物理地址。66.因此,需要将基地址转换为虚拟地址。例如,在linux系统中,可以调用mmap(内存映射)函数,实现物理地址到虚拟地址的映射转换。67.步骤140、基于虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息。68.具体地,根据虚拟地址和msi-xtable的偏移量,可以从内存中读取msi-xtable中的详细信息。根据虚拟地址和pendingtable的偏移量,可以从内存中读取pendingtable中的详细信息。将msi-xtable中的详细信息和pendingtable中的详细信息进行汇总,可以得到目标pcie设备的msi-x信息。69.中断向量数量用于对读写次数进行控制,使得能够从内存中读取得到目标pcie设备所对应的所有msi-x信息。70.本技术实施例提供的中断信息获取方法,根据目标串行总线设备对应的配置空间中的中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;将基地址转换为内存中对应的虚拟地址;根据虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息;通过对中断能力结构体进行解析,将得到的基地址转换为内存中对应的虚拟地址,对内存空间的读写操作,从而实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。71.需要说明的是,本技术每一个实施方式可以自由组合、调换顺序或者单独执行,并不需要依靠或依赖固定的执行顺序。72.在一些实施例中,步骤140包括:73.基于虚拟地址、中断信息表的偏移量和中断向量数量,从内存中读取中断信息表中的第一信息;74.基于虚拟地址、中断使能表的偏移量和中断向量数量,从内存中读取中断使能表中的第二信息;75.基于第一信息和第二信息,确定目标串行总线设备的中断信息。76.具体地,在将基地址转换为虚拟地址后,可以实现对内存进行读写操作。77.通过虚拟地址和msi-xtable的偏移量,可以确定msi-xtable中的第一信息在内存中的虚拟地址,通过中断向量数量控制第一信息的读写次数,读取后可以得到第一信息。第一信息为中断记录表中存放的与中断向量的内容有关的信息,包括向量控制信息、中断向量高地址、中断向量低地址和中断向量信息数据等。78.通过虚拟地址和pendingtable的偏移量,可以确定pendingtable中的第二信息在内存中的虚拟地址,通过中断向量数量控制第二信息的读写次数,读取后可以得到第二信息。第二信息为中断使能表中存放的与中断向量的使能有关的信息,包括使能位等。79.对第一信息和第二信息进行汇总,得到目标pcie设备的msi-x信息。80.本技术实施例提供的中断信息获取方法,将基地址转换为虚拟地址,通过msi-xtable的偏移量和pendingtable的偏移量,分别确定第一信息的虚拟地址和第二信息的虚拟地址,通过中断向量数量控制读写次数,可以全面地读取目标pcie设备的msi-x信息。81.在一些实施例中,基于虚拟地址、中断信息表的偏移量和中断向量数量,从内存中读取中断信息表中的第一信息,包括:82.基于虚拟地址和中断信息表的偏移量,确定第一信息在内存中的虚拟地址;83.基于第一信息的虚拟地址,从内存中读取第一信息。84.具体地,将虚拟地址和msi-xtable的偏移量相加,可以得到第一信息在内存中的虚拟地址。85.根据第一信息的虚拟地址,对第一信息进行读取时,可以以单个中断向量在msi-xtable中对应的信息内容为第一信息对应的单次读取数据量,由于msi-xtable中4个dword对应一个中断请求,则可以以4个dword为单位,从内存中读取第一信息,相应的读取次数可以等于中断向量数量。86.在读取第一信息后,可以以二进制格式输出,便于查询或者使用。87.本技术实施例提供的中断信息获取方法,根据虚拟地址和msi-xtable的偏移量,分别确定第一信息的虚拟地址,通过中断向量数量控制读写次数,可以全面地读取目标pcie设备的第一信息。88.在一些实施例中,基于虚拟地址、中断使能表的偏移量和中断向量数量,从内存中读取中断使能表中的第二信息,包括:89.基于虚拟地址和中断使能表的偏移量,确定第二信息在内存中的虚拟地址;90.基于第二信息的虚拟地址,从内存中读取第二信息。91.具体地,将虚拟地址和pendingtable的偏移量相加,可以得到第二信息在内存中的虚拟地址。92.根据第二信息的虚拟地址,对第二信息进行读取时,可以以预设位数为第二信息对应的单次读取数据量,由于pendingtable中每一个位对应一个中断请求,则从内存中读取第二信息的次数可以等于中断向量数量与预设位数的商。93.在读取第二信息后,可以以二进制格式输出,便于查询或者使用。94.本技术实施例提供的中断信息获取方法,根据虚拟地址和pendingtable的偏移量,分别确定第二信息的虚拟地址,通过中断向量数量控制读写次数,可以全面地读取目标pcie设备的第二信息。95.在一些实施例中,步骤130包括:96.确定目标串行总线设备对应的配置空间与目标串行总线设备对应的内存之间的地址映射关系;97.基于地址映射关系和基地址,确定基地址在内存中对应的虚拟地址。98.具体地,地址映射关系是指目标pcie设备对应的配置空间中的物理地址与目标pcie设备对应的内存之间的对应关系。99.基地址为物理地址。可以通过地址映射关系进行转换,得到基地址在内存中对应的虚拟地址。100.本技术实施例提供的中断信息获取方法,将基地址转换为虚拟地址,可以实现对目标pcie设备对应的内存进行读写,可以全面地读取目标pcie设备的msi-x信息。101.在一些实施例中,步骤110包括:102.确定目标串行总线设备的设备地址;103.基于目标串行总线设备的设备地址,确定目标串行总线设备的配置空间;104.对配置空间中的信息进行解析,确定目标串行总线设备的中断能力结构体。105.具体地,设备地址为操作系统为各个pcie设备分配的设备访问地址。通过查询目标pcie设备对应的关键字,可以获取目标pcie设备的设备地址。例如,在linux操作系统中运行shell(命令解释器),输入命令lspcigrep[关键字],可以查询得到关键字对应的目标pcie设备的设备地址。其中,grep用于筛选设备。[0106]根据设备地址,可以查看目标pcie设备的配置空间。从配置空间中获取目标pcie设备的msi-xcapability结构体。例如,在shell中输入命令lspci-s[设备地址]-vvv,可以获取msi-xcapability结构体。[0107]本技术实施例提供的中断信息获取方法,通过根据设备地址确定目标pcie设备的配置空间和msi-xcapability结构体,可以全面地读取目标pcie设备的msi-x信息。[0108]图2是本技术又一个实施例提供的中断信息获取方法的流程示意图,如图2所示,该方法适用于linux操作系统,包括:[0109]步骤210、获取pcie设备msi-xcapability结构体[0110]msi-x的capability记录的是msi-xtable和pendingtable在bar中的偏移量;所以要获取基地址、msi-xtable在bar的偏移量、pendingtable在bar的偏移量和中断向量数量。[0111]通过在shell下运行lspci-s[设备地址]-vvv命令可获取所需信息。其中lspci的“‑s”参数解析设备地址,“‑vvv”参数能打印解析配置空间后的所有信息,其中就包括msi-xcapability结构体的信息。[0112]步骤220、根据msi-xcapability结构体,确定输入参数[0113]可以选择msi-xcapability结构体中的基地址、msi-xtable在bar的偏移量、pendingtable在bar的偏移量和中断向量数量作为程序文件的输入参数。该程序文件用于从内存中读取msi-x信息。[0114]步骤230、编写程序文件,读取pcie设备的msi-x信息[0115]在linux操作系统中使用c语言编写程序代码,实现所需的功能,利用gnu编译器套件(gnucompilercollection,gcc)把.c格式的代码文件编译成可执行二进制程序,通过输入参数和运行程序,实现对msi-x信息的读取。[0116]图3是本技术一个实施例提供的中断信息读取程序的流程示意图,如图3所示,该程序的执行流程如下:[0117]步骤310、读取并保存参数[0118]判断输入参数的数量,若数量不符合要求,则打印提示信息,提示参数输入错误,报错返回结束程序。[0119]读取参数1(基地址)并保存在变量中;同理将参数2(msi-xtable偏移量)、参数3(pendingtable偏移量)、参数4(中断向量数量)分别保存在对应的变量中。[0120]步骤320、通过linux系统调用,以只读方式开打“/dev/mem”设备,以用来操控内存。“/dev/mem”设备为虚拟字符设备。[0121]步骤330、通过linux系统调用mmap函数,将参数1保存的物理地址映射成虚拟地址,因为该程序只能在虚拟地址上操作。[0122]步骤340、通过虚拟地址与参数2所代表的偏移量相加,读取msi-xtable的信息,每次读取4个dword,读取的次数由参数4控制;[0123]步骤350、用二进制格式化输出每次读取的内容;[0124]步骤360、通过虚拟地址和参数3所代表的偏移量相加,读取pendingtable的信息,每次读取64位,读取的次数由参数4与64的商确定;并通过二进制格式化输出;[0125]步骤370、完成读或写,关闭文件,解除内存物理地址映射,程序结束。[0126]通过上述方法,可以在linux用户空间,在可实现对任何pcie设备的msi-x信息的获取,提高了工作效率。[0127]下面对本技术实施例提供的装置进行描述,下文描述的装置与上文描述的方法可相互对应参照。[0128]图4是本技术一个实施例提供的中断信息获取装置的结构示意图,如图4所示,该装置包括:[0129]第一确定单元410,用于基于目标串行总线设备对应的配置空间,确定目标串行总线设备的中断能力结构体;[0130]第二确定单元420,用于基于中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;[0131]转换单元430,用于确定基地址在内存中对应的虚拟地址;[0132]读取单元440,用于基于虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息。[0133]本技术实施例提供的中断信息获取装置,根据目标串行总线设备对应的配置空间中的中断能力结构体,确定目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;将基地址转换为内存中对应的虚拟地址;根据虚拟地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量,从内存中读取目标串行总线设备的中断信息;通过对中断能力结构体进行解析,将得到的基地址转换为内存中对应的虚拟地址,对内存空间的读写操作,从而实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。[0134]在一些实施例中,读取单元具体用于:[0135]基于虚拟地址、中断信息表的偏移量和中断向量数量,从内存中读取中断信息表中的第一信息;[0136]基于虚拟地址、中断使能表的偏移量和中断向量数量,从内存中读取中断使能表中的第二信息;[0137]基于第一信息和第二信息,确定目标串行总线设备的中断信息。[0138]在一些实施例中,读取单元具体用于:[0139]基于虚拟地址和中断信息表的偏移量,确定第一信息在内存中的虚拟地址;[0140]基于第一信息的虚拟地址,从内存中读取第一信息。[0141]在一些实施例中,读取单元具体用于:[0142]基于虚拟地址和中断使能表的偏移量,确定第二信息在内存中的虚拟地址;[0143]基于第二信息的虚拟地址,从内存中读取第二信息。[0144]在一些实施例中,转换单元具体用于:[0145]确定目标串行总线设备对应的配置空间与目标串行总线设备对应的内存之间的地址映射关系;[0146]基于地址映射关系和基地址,确定基地址在内存中对应的虚拟地址。[0147]在一些实施例中,第一确定单元具体用于:[0148]确定目标串行总线设备的设备地址;[0149]基于目标串行总线设备的设备地址,确定目标串行总线设备的配置空间;[0150]对配置空间中的信息进行解析,确定目标串行总线设备的中断能力结构体。[0151]图5是本技术一个实施例提供的计算机的结构示意图,如图5所示,该计算机500包括主板510,以及设置在主板510上的中断信息获取装置520。[0152]具体地,本技术实施例中的计算机包括塔式服务器、机架式服务器、刀片式服务器、高密度服务器、机柜式服务器等。主板,又称系统板,一般为矩形电路板,上面安装了组成计算机的主要电路系统。[0153]本技术实施例提供的计算机,实现了通过操作系统全面地读取目标串行总线设备的中断信息,无需借助于读取各个串行总线设备的设备驱动日志,提高了各个串行总线设备的工作效率。[0154]图6是本技术一个实施例提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(communicationsinterface)620、存储器(memory)630和通信总线(communicationsbus)640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑命令,以执行上述实施例中所述的方法,例如:[0155]基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;确定所述基地址在内存中对应的虚拟地址;基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。[0156]此外,上述的存储器中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。[0157]本技术实施例提供的电子设备中的处理器可以调用存储器中的逻辑指令,实现上述方法,其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。[0158]本技术实施例还提供一种计算机可读的存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法。[0159]其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。[0160]本技术实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如上述方法。[0161]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。[0162]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。[0163]最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。当前第1页12当前第1页12
技术特征:
1.一种中断信息获取方法,其特征在于,包括:基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;确定所述基地址在内存中对应的虚拟地址;基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。2.根据权利要求1所述的中断信息获取方法,其特征在于,所述基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息,包括:基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息;基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息;基于所述第一信息和所述第二信息,确定所述目标串行总线设备的中断信息。3.根据权利要求2所述的中断信息获取方法,其特征在于,所述基于所述虚拟地址、所述中断信息表的偏移量和所述中断向量数量,从所述内存中读取所述中断信息表中的第一信息,包括:基于所述虚拟地址和所述中断信息表的偏移量,确定所述第一信息在所述内存中的虚拟地址;基于所述第一信息的虚拟地址,从所述内存中读取所述第一信息。4.根据权利要求2所述的中断信息获取方法,其特征在于,所述基于所述虚拟地址、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述中断使能表中的第二信息,包括:基于所述虚拟地址和所述中断使能表的偏移量,确定所述第二信息在所述内存中的虚拟地址;基于所述第二信息的虚拟地址,从所述内存中读取所述第二信息。5.根据权利要求1至4任一项所述的中断信息获取方法,其特征在于,所述确定所述基地址在内存中对应的虚拟地址,包括:确定所述目标串行总线设备对应的配置空间与所述目标串行总线设备对应的内存之间的地址映射关系;基于所述地址映射关系和所述基地址,确定所述基地址在内存中对应的虚拟地址。6.根据权利要求1至4任一项所述的中断信息获取方法,其特征在于,所述基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体,包括:确定目标串行总线设备的设备地址;基于所述目标串行总线设备的设备地址,确定所述目标串行总线设备的配置空间;对所述配置空间中的信息进行解析,确定所述目标串行总线设备的中断能力结构体。7.一种中断信息获取装置,其特征在于,包括:
第一确定单元,用于基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;第二确定单元,用于基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;转换单元,用于确定所述基地址在内存中对应的虚拟地址;读取单元,用于基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。8.一种计算机,其特征在于,包括主板,以及设置在所述主板上的如权利要求7所述的中断信息获取装置。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的中断信息获取方法。10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的中断信息获取方法。
技术总结
本申请公开了一种中断信息获取方法、装置、计算机、电子设备和介质,其中方法包括:基于目标串行总线设备对应的配置空间,确定所述目标串行总线设备的中断能力结构体;基于所述中断能力结构体,确定所述目标串行总线设备对应的基地址、中断信息表的偏移量、中断使能表的偏移量和中断向量数量;确定所述基地址在内存中对应的虚拟地址;基于所述虚拟地址、所述中断信息表的偏移量、所述中断使能表的偏移量和所述中断向量数量,从所述内存中读取所述目标串行总线设备的中断信息。本申请提供的方法和装置,实现了通过操作系统全面地读取目标串行总线设备的中断信息。行总线设备的中断信息。行总线设备的中断信息。
技术研发人员:李超 李凤民 苏宁宁
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.05.26
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种基于动态非极大值抑制的厨余垃圾检测方法及系统 下一篇:排气阀和泵的制作方法