一种BMC参数配置及生效的方法、装置、设备和介质转让专利

申请号 : CN202110691443.X

文献号 : CN113254062B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 候志立

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请提供了一种BMC参数配置及生效的方法、装置、设备和介质,方法包括:当第一进程接收到第一外部参数后,将数据库的与第一外部参数对应的参数配置状态修改为配置中,并将第一外部参数写入数据库;同时触发中断服务程序;利用中断服务程序判断数据库是否存在参数配置状态为配置中;若存在参数配置状态为配置中,则将数据库存储的第一外部参数写入配置文件中;当第一外部参数成功写入配置文件后,从数据库获取与第一外部参数对应的参数生效状态,并根据参数生效状态进行生效处理。本申请提高参数传递效率的同时,也降低了系统的负载。

权利要求 :

1.一种BMC参数配置及生效的方法,其特征在于,包括:当第一进程接收到第一外部参数后,将数据库的与所述第一外部参数对应的参数配置状态修改为配置中,并将所述第一外部参数写入所述数据库;同时触发中断服务程序;

利用所述中断服务程序判断所述数据库是否存在参数配置状态为配置中;

若存在所述参数配置状态为所述配置中,则将所述数据库存储的所述第一外部参数写入配置文件中;

当所述第一外部参数成功写入所述配置文件后,从所述数据库获取与所述第一外部参数对应的参数生效状态,并根据所述参数生效状态进行生效处理;

数据库中存储有多类参数对应的参数配置状态;数据库中设计有参数生效状态,表示每一类参数生效所需条件;各进程采用数据库中的对应的参数配置状态和参数生效状态,解决了不同进程间通信的问题。

2.根据权利要求1所述的BMC参数配置及生效的方法,其特征在于,所述当第一进程接收到第一外部参数后,将所述第一外部参数写入所述数据库;同时触发中断服务程序,包括:

当所述第一进程利用第一GPIO接收到所述第一外部参数后,将所述第一外部参数写入所述数据库;同时通过与所述第一GPIO短接的第二GPIO触发所述中断服务程序。

3.根据权利要求1所述的BMC参数配置及生效的方法,其特征在于,还包括:当第二进程接收到第二外部参数,判断所述数据库是否存在参数配置状态为所述配置中;

若不存在所述参数配置状态为所述配置中,则将所述数据库的与所述第二外部参数对应的参数配置状态修改为配置中,以实现所述第二外部参数配置及生效。

4.根据权利要求1所述的BMC参数配置及生效的方法,其特征在于,还包括:记录所述第一外部参数配置的配置时间;

当所述配置时间超过设定时间时,确定配置超时。

5.根据权利要求1所述的BMC参数配置及生效的方法,其特征在于,将所述第一外部参数写入所述数据库之后,还包括:当所述第一外部参数成功写入所述配置文件后,将所述数据库中与所述第一外部参数对应的参数配置状态更新为配置成功;

当所述第一外部参数未成功写入所述配置文件,则根据写入过程中的写入错误的错误类型更新所述参数配置状态;

其中,所述错误类型对应的参数配置状态包括:空闲、配置文件不存在、配置参数不存在、参数配置报错、其他错误中的一种或者多种。

6.根据权利要求1所述的BMC参数配置及生效的方法,其特征在于,还包括:反馈参数配置后的参数配置状态至用户端。

7.根据权利要求1所述的BMC参数配置及生效的方法,其特征在于,所述数据库为redis数据库。

8.根据权利要求1至7任一项所述的BMC参数配置及生效的方法,其特征在于,所述根据所述参数生效状态进行生效处理,包括:根据所述参数生效状态确定对应的生效条件;

根据所述生效条件进行生效处理;

其中,所述生效条件包括:立即生效、自动重启BMC生效、下次重启BMC生效、延迟生效中的一种或者多种。

9.一种BMC参数配置及生效的装置,其特征在于,包括:参数写入和中断触发模块,用于当第一进程接收到第一外部参数后,将数据库的与所述第一外部参数对应的参数配置状态修改为配置中,并将所述第一外部参数写入所述数据库;同时触发中断服务程序;

状态判断模块,用于利用所述中断服务程序判断所述数据库是否存在参数配置状态为配置中;

配置模块,用于若存在所述参数配置状态为所述配置中,则将所述数据库存储的所述第一外部参数写入配置文件中;

生效模块,用于当所述第一外部参数成功写入所述配置文件后,从所述数据库获取与所述第一外部参数对应的参数生效状态,并根据所述参数生效状态进行生效处理;

数据库中存储有多类参数对应的参数配置状态;数据库中设计有参数生效状态,表示每一类参数生效所需条件;各进程采用数据库中的对应的参数配置状态和参数生效状态,解决了不同进程间通信的问题。

10.一种电子设备,其特征在于,包括:存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述BMC参数配置及生效的方法的步骤。

11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述BMC参数配置及生效的方法的步骤。

说明书 :

一种BMC参数配置及生效的方法、装置、设备和介质

技术领域

[0001] 本申请涉及参数配置及生效技术领域,特别涉及一种BMC参数配置及生效的方法、装置、电子设备以及计算机可读存储介质。

背景技术

[0002] BMC(Board Management Controller,基板管理控制器)是一个独立于OS(Operating System,操作系统)的管理子系统。BMC中包含各种各样的参数,如IPMI
(Intelligent Platform Management Interface,智能平台管理接口)规范中定义的user
参数、sel/sol参数等,网络参数如IP地址(Internet Protocol Address,互联网协议地
址)、子网掩码、网关等,都可以通过提供的用户交互接口由用户进行配置。目前BMC配置参
数并使参数生效的方法,各个进程之间通过管道等形式进行通信,配置的参数在各个进程
之间也通过管道的形式进行传递。在不同的进程中分别创建不同的线程处理从管道接收到
的参数或数据,当接收到特定的参数之后,则更新对应进程的配置文件,重启相关的服务使
得参数可以立刻生效。但是,不同的进程都需要创建相应的线程来接收和配置与本进程相
关的配置参数,增加了linux系统的线程数,为linux系统的线程调度增加了一定的开销,一
定程度上增加了系统资源的消耗;通过管道的方式进行参数的传递效率较低;多线程进行
参数处理增加了系统开销,降低了系统的性能。
[0003] 因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。

发明内容

[0004] 本申请的目的是提供一种BMC参数配置及生效的方法、装置、电子设备以及计算机可读存储介质,能够减少系统消耗,提高参数传递效率。其具体方案如下:
[0005] 本申请提供了一种BMC参数配置及生效的方法,包括:
[0006] 当第一进程接收到第一外部参数后,将数据库的与所述第一外部参数对应的参数配置状态修改为配置中,并将所述第一外部参数写入所述数据库;同时触发中断服务程序;
[0007] 利用所述中断服务程序判断所述数据库是否存在参数配置状态为配置中;
[0008] 若存在所述参数配置状态为所述配置中,则将所述数据库存储的所述第一外部参数写入配置文件中;
[0009] 当所述第一外部参数成功写入所述配置文件后,从所述数据库获取与所述第一外部参数对应的参数生效状态,并根据所述参数生效状态进行生效处理。
[0010] 优选地,所述当第一进程接收到第一外部参数后,将所述第一外部参数写入所述数据库;同时触发中断服务程序,包括:
[0011] 当所述第一进程利用第一GPIO接收到所述第一外部参数后,将所述第一外部参数写入所述数据库;同时通过与所述第一GPIO短接的第二GPIO触发所述中断服务程序。
[0012] 优选地,还包括:
[0013] 当第二进程接收到第二外部参数,判断所述数据库是否存在参数配置状态为所述配置中;
[0014] 若不存在所述参数配置状态为所述配置中,则将所述数据库的与所述第二外部参数对应的参数配置状态修改为配置中,以实现所述第二外部参数配置及生效。
[0015] 优选地,还包括:
[0016] 记录所述第一外部参数配置的配置时间;
[0017] 当所述配置时间超过设定时间时,确定配置超时。
[0018] 优选地,将所述第一外部参数写入所述数据库之后,还包括:
[0019] 当所述第一外部参数成功写入所述配置文件后,将所述数据库中与所述第一外部参数对应的参数配置状态更新为配置成功;
[0020] 当所述第一外部参数未成功写入所述配置文件,则根据写入过程中的写入错误的错误类型更新所述参数配置状态;
[0021] 其中,所述错误类型对应的参数配置状态包括:空闲、配置文件不存在、配置参数不存在、参数配置报错、其他错误中的一种或者多种。
[0022] 优选地,还包括:
[0023] 反馈参数配置后的参数配置状态至用户端。
[0024] 优选地,所述数据库为redis数据库。
[0025] 优选地,所述根据所述参数生效状态进行生效处理,包括:
[0026] 根据所述参数生效状态确定对应的生效条件;
[0027] 根据所述生效条件进行生效处理;
[0028] 其中,所述生效条件包括:立即生效、自动重启BMC生效、下次重启BMC生效、延迟生效中的一种或者多种。
[0029] 本申请提供了一种BMC参数配置及生效的装置,包括:
[0030] 参数写入和中断触发模块,用于当第一进程接收到第一外部参数后,将数据库的与所述第一外部参数对应的参数配置状态修改为配置中,并将所述第一外部参数写入所述
数据库;同时触发中断服务程序;
[0031] 状态判断模块,用于利用所述中断服务程序判断所述数据库是否存在参数配置状态为配置中;
[0032] 配置模块,用于若存在所述参数配置状态为所述配置中,则将所述数据库存储的所述第一外部参数写入配置文件中;
[0033] 生效模块,用于当所述第一外部参数成功写入所述配置文件后,从所述数据库获取与所述第一外部参数对应的参数生效状态,并根据所述参数生效状态进行生效处理。
[0034] 本申请提供了一种电子设备,包括:
[0035] 存储器,用于存储计算机程序;
[0036] 处理器,用于执行所述计算机程序时实现如上所述BMC参数配置及生效的方法的步骤。
[0037] 本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述BMC参数配置及生效的方法的步骤。
[0038] 本申请提供一种BMC参数配置及生效的方法,包括:当第一进程接收到第一外部参数后,将数据库的与第一外部参数对应的参数配置状态修改为配置中,并将第一外部参数
写入数据库;同时触发中断服务程序;利用中断服务程序判断数据库是否存在参数配置状
态为配置中;若存在参数配置状态为配置中,则将数据库存储的第一外部参数写入配置文
件中;当第一外部参数成功写入配置文件后,从数据库获取与第一外部参数对应的参数生
效状态,并根据参数生效状态进行生效处理。
[0039] 可见,本申请在数据库中引入了参数配置状态和参数生效状态来配置参数以及生效参数,将第一外部参数写入到数据库的同时触发了中断服务程序,该中断服务程序用来
通过参数配置状态判断哪些参数发生了变化需要处理,使外部参数的配置更加集中,仅仅
通过中断服务程序即可实现,增强了扩展性;当数据库存在参数配置状态为配置中时,则将
数据库存储的第一外部参数写至配置文件中,根据对应的参数生效状态使参数生效;通过
设定参数生效状态灵活的实现生效机制,满足用户的不同需求;本申请以数据库作为进程
间通信的介质,利用数据库的参数配置状态以及参数生效状态实现了参数的配置和生效,
不需要管道的通信方式,提高参数传递效率的同时,也降低了系统的负载。
[0040] 本申请同时还提供了一种BMC参数配置及生效的装置、电子设备以及计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

[0041] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
[0042] 图1为本申请实施例提供的一种BMC参数配置及生效的方法的流程图;
[0043] 图2为本申请实施例提供的一种BMC参数配置及生效的装置的结构示意图;
[0044] 图3为本申请实施例提供的一种电子设备的结构示意图;
[0045] 图4为本申请实施例提供的另一种电子设备的结构图。

具体实施方式

[0046] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员
在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0047] 目前BMC配置参数并使参数生效的方法,各个进程之间通过管道等形式进行通信,配置的参数在各个进程之间也通过管道的形式进行传递。在不同的进程中分别创建不同的
线程处理从管道接收到的参数或数据,当接收到特定的参数之后,则更新对应进程的配置
文件,重启相关的服务使得参数可以立刻生效。但是,不同的进程都需要创建相应的线程来
接收和配置与本进程相关的配置参数,增加了linux系统的线程数,为linux系统的线程调
度增加了一定的开销,一定程度上增加了系统资源的消耗;通过管道的方式进行参数的传
递效率较低;多线程进行参数处理增加了系统开销,降低了系统的性能。
[0048] 基于上述技术问题,本实施例提供一种BMC参数配置及生效的方法,在数据库中引入了参数配置状态和参数生效状态来配置参数以及生效参数,将第一外部参数写入到数据
库的同时触发了中断服务程序,该中断服务程序用来通过参数配置状态判断哪些参数发生
了变化需要处理,使外部参数的配置更加集中,仅仅通过中断服务程序即可实现,增强了扩
展性;当数据库存在参数配置状态为配置中时,则将数据库存储的第一外部参数写至配置
文件中,根据对应的参数生效状态使参数生效;通过设定参数生效状态灵活的实现生效机
制,满足用户的不同需求;本申请以数据库作为进程间通信的介质,利用数据库的参数配置
状态以及参数生效状态实现了参数的配置和生效,不需要管道的通信方式,提高参数传递
效率的同时,也降低了系统的负载。
[0049] 请参考图1,图1为本申请实施例提供的一种BMC参数配置及生效的方法的流程图,具体包括:
[0050] S101、当第一进程接收到第一外部参数后,将数据库的与第一外部参数对应的参数配置状态修改为配置中,并将第一外部参数写入数据库;同时触发中断服务程序;
[0051] 本实施例在BMC内部引入数据库作为进程间通信的主要手段,数据库中包括参数配置状态和参数生效状态,各进程使用的时候可以直接采用数据库中的对应的参数配置状
态和参数生效状态,实时性更高,也解决了不同进程间通信的问题。
[0052] 本实施例数据库中存储有多类参数对应的参数配置状态,当第一进程接收到第一外部参数后,首先将数据库中对应的参数配置状态修改为配置中,然后再将第一外部参数
写入数据库,具体写入数据库的设定位置中。同时,触发了中断服务程序,该中断服务程序
用来通过参数配置状态判断哪些参数发生了变化需要处理,使外部参数的配置更加集中,
仅仅通过中断服务程序即可实现,增强了扩展性。
[0053] 进一步的,还包括:
[0054] 在数据库中设计参数配置状态的键值对,其中,键名称可根据需求设置,例如可设置为paramcfgstatus,状态键描述的是一个数组类型的键值对,数组中的每个元素分别表
示某一类参数的配置状态,配置状态分为空闲(值为0)、配置中(值为1)、配置文件不存在
(值为2)、配置参数不存在(值为3)、参数配置报错(值为4)、其他错误(值为5)、参数配置成
功(值为6)。具体的值还可以根据需求设置,本实施例不再进行限定,只要是能够实现本实
施例的目的即可。
[0055] S102、利用中断服务程序判断数据库是否存在参数配置状态为配置中;
[0056] 利用中断服务程序判断数据库是否存在参数配置状态为配置中,若有则执行步骤S103,若没有,则确定没有参数需要配置以及生效。
[0057] S103、若存在参数配置状态为配置中,则将数据库存储的第一外部参数写入配置文件中;
[0058] S104、当第一外部参数成功写入配置文件后,从数据库获取与第一外部参数对应的参数生效状态,并根据参数生效状态进行生效处理。
[0059] 数据库中还设计有参数生效状态,表示每一类参数生效所需条件。当第一外部参数成功写入配置文件后,获取与第一外部参数对应的参数生效状态,然后进行生效处理。
[0060] 进一步的,还包括:
[0061] 在数据库中设计一个参数生效状态的键值对,键名称可根据需求进行设置,例如可以设置为paramtakeeffectstatus,该状态键描述的是一个数组类型的键值对,其中数组
中的每个元素分别表示某一类参数的生效条件,生效条件包括立即生效(值为0)、自动重启
BMC生效(值为0xff),下次重启BMC生效(值为0xFe),其余数值则表示延迟生效,对应的数值
表示延迟的时间,单位为s。具体的值还可以根据需求设置,本实施例不再进行限定,只要是
能够实现本实施例的目的即可。
[0062] 基于上述技术方案,本实施例在数据库中引入了参数配置状态和参数生效状态来配置参数以及生效参数,将第一外部参数写入到数据库的同时触发了中断服务程序,该中
断服务程序用来通过参数配置状态判断哪些参数发生了变化需要处理,使外部参数的配置
更加集中,仅仅通过中断服务程序即可实现,增强了扩展性;当数据库存在参数配置状态为
配置中时,则将数据库存储的第一外部参数写至配置文件中,根据对应的参数生效状态使
参数生效;通过设定参数生效状态灵活的实现生效机制,满足用户的不同需求;本申请以数
据库作为进程间通信的介质,利用数据库的参数配置状态以及参数生效状态实现了参数的
配置和生效,不需要管道的通信方式,提高参数传递效率的同时,也降低了系统的负载。
[0063] 基于上述实施例,为了高效实现触发功能,其中,当第一进程接收到第一外部参数后,将第一外部参数写入数据库;同时触发中断服务程序,包括:当第一进程利用第一GPIO
(General‑purpose input/output,通用型之输入输出)接收到第一外部参数后,将第一外
部参数写入数据库;同时通过与第一GPIO短接的第二GPIO触发中断服务程序。
[0064] 本实施例在BMC选择两个普通的GPIO,将第一GPIO和第二GPIO外部连通,第一GPIO作为触发源,第二GPIO注册为系统中断,中断触发条件为上升沿。可以理解的是,第一GPIO
的IFC进程作为触发源,一般提供的用户接口如IPMI、rest(Representational State 
Transfer,表述性状态转移)接口、redfis接口、snmp(Simple Network Management 
Protocol,简单网络管理协议)接口等都是通过不同的进程实现的,为了便于描述,暂标记
为IFC进程。
[0065] 基于上述技术方案,本实施例通过物理硬件的GPIO引脚及中断机制实现参数配置的方式,在很大程度上降低了linux系统的负载,无需管道等需要实时监测或阻塞的通信方
式。
[0066] 基于上述任一实施例,为了保证每一进程的参数配置以及生效的准确性,BMC参数配置及生效方法,还包括:
[0067] 当第二进程接收到第二外部参数,判断数据库是否存在参数配置状态为配置中;
[0068] 若不存在参数配置状态为配置中,则将数据库的与第二外部参数对应的参数配置状态修改为配置中,以实现第二外部参数配置及生效。
[0069] 其中,在第二进程接收到第二外部参数后,首先,判断数据库是否存在参数配置状态为配置中,具体的,如果存在参数状态为配置中,则确定上一个进程即第一进程还未处理
完成,只有当所有进程处理完成后,不存在参数配置状态为配置中,才将数据库的与第二外
部参数对应的参数配置状态修改为配置中,以实现第二外部参数配置及生效。
[0070] 可见,本实施例接收到外部参数后,在修改参数配置状态为配置中前,先判断数据库中是否存在参数配置状态是配置中的,只有不存在时才用执行修改,保证了每一参数配
置生效的准确性以及可靠性,避免配置错误的情况发生。
[0071] 基于上述任一实施例,还包括:记录第一外部参数配置的配置时间;当配置时间超过设定时间时,确定配置超时。
[0072] 其中,记录参数配置时间,当超过设定时间后,确定配置超时,在配置过程中可能出现了配置错误的情况,进而可以处理下一外部参数的配置,当达到设定条件后,再配置第
一外部参数,提高外部参数配置的效率。该设定条件可以是不存在外部参数需要配置的情
况,或者,当系统重启后再次进行第一外部参数的配置等,本实施例不再进行限定,用户可
根据实际需求进行设置。当然还可以将配置超时的日志信息发送给用户,以便用户及时跟
踪解决。
[0073] 基于上述任一实施例,将第一外部参数写入数据库之后,还包括:
[0074] 当第一外部参数成功写入配置文件后,将数据库中与第一外部参数对应的参数配置状态更新为配置成功;
[0075] 当第一外部参数未成功写入配置文件,则根据写入过程中的写入错误的错误类型更新参数配置状态;
[0076] 其中,错误类型对应的参数配置状态包括:空闲、配置文件不存在、配置参数不存在、参数配置报错、其他错误中的一种或者多种。
[0077] 基于上述技术方案,本实施例当第一外部参数成功写入配置文件后及时更新对应的参数配置状态为配置成功,当配置过程出现错误时,根据错误的类型更新参数配置状态。
[0078] 基于上述任一实施例,为了保证用户能够追踪配置过程,及时了解错误的情况,便于后续系统维护,还包括:反馈参数配置后的参数配置状态至用户端。
[0079] 在一种可实现的实施方式中,当接收到用户端发送的请求后,则根据请求,反馈参数配置后的参数配置状态至用户端。在另一种可实现的实施方式中,当参数配置的数量达
到设定数量后,反馈参数配置后的参数配置状态至用户端。在另一种可实现的实施方式中,
按照设定周期,反馈参数配置后的参数配置状态至用户端。具体采用上述哪种形式,本实施
例不再进行限定,用户可自定义选择。
[0080] 基于上述技术方案,本实施例通过反馈配置参数状态值用户端,保证用户能够追踪配置过程,及时了解错误的情况,便于后续系统维护。
[0081] 进一步的,数据库为redis数据库。采用了redis数据库中的互斥机制,无需自己处理不同进程间的同步机制,可靠性更好。具体的,基于GPIO的中断功能和redis数据库实现
BMC参数配置和生效的方法,通过引GPIO实现IFC进程和中断服务处理函数的通信通道,然
后通过设计redis数据库中的两个字段,针对参数配置状态和参数配置生效触发机制进行
定制和处理,很好的解决了不同进程互斥的问题,参数配置生效的问题,linux系统资源耗
费较高和参数配置分布比较分散的问题等,利于问题排查,可以应用到所有linux的嵌入式
系统中。
[0082] 进一步的,根据参数生效状态进行生效处理,包括:根据参数生效状态确定对应的生效条件;根据生效条件进行生效处理;其中,生效条件包括:立即生效、自动重启BMC生效、
下次重启BMC生效、延迟生效中的一种或者多种。通过引入生效机制字段对应的参数生效状
态,可以使客户灵活选择参数生效的触发条件,是要求立即生效,还是要求重启BMC或者延
迟一段时间再生效,灵活性更好,客户定制化更容易得到满足。
[0083] 基于上述任一实施例,本实施例提供一种基于GPIO的中断功能及redis数据库实现BMC参数配置和生效的方法,主要的实现步骤阐述如下:
[0084] S1:首先需要在BMC内部引入redis数据库作为进程间通信的主要手段;
[0085] S2:在redis数据库中设计一个参数配置状态的键值对,键名称为paramcfgstatus,该状态键描述的是一个数组类型的键值对,其中数组中的每个元素分别
表示某一类参数的配置状态,配置状态分为空闲(值为0)、配置中(值为1)、配置文件不存在
(值为2)、配置参数不存在(值为3)、参数配置报错(值为4)、其他错误(值为5)、参数配置成
功(值为6)等;
[0086] S3:在redis数据库中设计一个参数生效状态的键值对,键名称为paramtakeeffectstatus,该状态键描述的是一个数组类型的键值对,其中数组中的每个元
素分别表示某一类参数的生效条件,生效条件包括立即生效(值为0)、自动重启BMC生效(值
为0xff),下次重启BMC生效(值为0xFe),其余数值则表示延迟生效,对应的数值表示延迟的
时间,单位为s;
[0087] S4:在BMC选择两个普通的GPIO,将这两个GPIO外部连通,其中一个GPIO由IFC进程作为触发源,另外一个GPIO注册为系统中断,中断触发条件为上升沿;
[0088] S5:实现中断处理函数。
[0089] 首先,获取paramcfgstatus的键所对应的值,遍历获取到的paramcfgstatus数组中的每个元素;
[0090] 判断每类参数的状态是否属于配置中;
[0091] 如果属于配置中,则从约定的redis数据库区域获取对应的参数配置到对应的配置文件中;
[0092] 如果在写入配置文件的过程中出现错误,则根据错误类型分别将paramcfgstatus对应的字段写成配置文件不存在、配置参数不存在、配置参数报错或其他错误;
[0093] 如果配置成功,则将paramcfgstatus对应的字段改成参数配置成功,从redis数据库中获取paramtakeeffectstatus,查找该数组中对应的参数的生效条件,如果为立即生
效,则立即重启使用该参数的进程,如果为自动重启BMC生效,则立刻重启BMC即可,如果为
下次重启BMC生效,则不做任何操作,记录日志提示后台维护人员存在参数配置,如果需要
生效则需要其手动重启BMC,如果为延迟生效,则延迟对应的时间后重启参数对应的进程。
[0094] 该参数处理完成之后判断paramcfgstatus是否还有其他参数需要处理,有则处理,不存在则退出;
[0095] S6:IFC进程存在参数配置需求的时候,则首先将参数写入redis数据库对应的配置参数区,然后将paramcfgstatus的状态置为配置中,触发对应的GPIO引发步骤S5中的中
断服务函数去处理,将paramtakeeffectstatus按照不同参数的不同策略进行处理之后,然
后实时检测其中的paramcfgstatus状态,根据状态判断中断服务函数的处理流程和结果,
并将参数配置结果返回给客户即可。
[0096] 基于上述技术方案,本实施例具有下述有益效果:通过物理硬件的GPIO引脚及中断机制实现参数配置的方式,在很大程度上降低了linux系统的负载,无需管道等需要实时
监测或阻塞的通信方式;参数处理和参数配置更加集中,当出现问题的时候易于排查,通过
一个中断服务函数即可实现不同参数的配置和生效,针对该中断服务函数,可以采用回调
函数的机制进行处理,扩展性、灵活性都特别强;通过redis数据库中的对应的字段,可以将
参数配置过程中的相关错误及状态及时反馈给参数配置进程,从而可以使客户了解到参数
配置是否成功及失败的原因;通过引入生效机制字段,可以使客户灵活选择参数生效的触
发条件,是要求立即生效,还是要求重启BMC或者延迟一段时间再生效,灵活性更好,客户定
制化更容易得到满足;
[0097] 下面对本申请实施例提供的一种BMC参数配置及生效的装置进行介绍,下文描述的BMC参数配置及生效的装置与上文描述的BMC参数配置及生效的方法可相互对应参照,参
考图2,图2为本申请实施例提供的一种BMC参数配置及生效的装置的结构示意图,包括:
[0098] 参数写入和中断触发模块201,用于当目标进程接收到外部参数后,将外部参数写入数据库设定区域;同时触发中断服务程序;
[0099] 状态判断模块202,用于利用中断服务程序判断数据库中与外部参数对应的参数配置状态是否为配置中;
[0100] 配置模块203,用于若参数配置状态是配置中,则将设定区域获取的外部参数写入配置文件中;
[0101] 生效模块204,用于当外部参数成功写入配置文件后,从数据库中获取与外部参数对应的参数生效状态,并根据参数生效状态进行生效处理。
[0102] 优选地,参数写入和中断触发模块201,具体用于:
[0103] 当第一进程利用第一GPIO接收到第一外部参数后,将第一外部参数写入数据库;同时通过与第一GPIO短接的第二GPIO触发中断服务程序。
[0104] 优选地,还包括:
[0105] 判断模块,用于当第二进程接收到第二外部参数,判断数据库是否存在参数配置状态为配置中;
[0106] 修改模块,用于若不存在参数配置状态为配置中,则将数据库的与第二外部参数对应的参数配置状态修改为配置中,以实现第二外部参数配置及生效。
[0107] 优选地,还包括:
[0108] 时间记录模块,用于记录第一外部参数配置的配置时间;
[0109] 确定模块,用于当配置时间超过设定时间时,确定配置超时。
[0110] 优选地,还包括:状态更新模块,用于:
[0111] 当第一外部参数成功写入配置文件后,将数据库中与第一外部参数对应的参数配置状态更新为配置成功;
[0112] 当第一外部参数未成功写入配置文件,则根据写入过程中的写入错误的错误类型更新参数配置状态;
[0113] 其中,错误类型对应的参数配置状态包括:空闲、配置文件不存在、配置参数不存在、参数配置报错、其他错误中的一种或者多种。
[0114] 优选地,还包括:
[0115] 反馈模块,用于反馈参数配置后的参数配置状态至用户端。
[0116] 优选地,数据库为redis数据库。
[0117] 优选地,生效模块204,包括:
[0118] 生效条件确定单元,用于根据参数生效状态确定对应的生效条件;
[0119] 生效处理单元,用于根据生效条件进行生效处理;
[0120] 其中,生效条件包括:立即生效、自动重启BMC生效、下次重启BMC生效、延迟生效中的一种或者多种。
[0121] 由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0122] 下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的方法可相互对应参照。
[0123] 参见图3所示,图3为本申请实施例提供的一种电子设备的结构示意图,包括:
[0124] 存储器301,用于存储计算机程序;
[0125] 处理器302,用于执行计算机程序时实现如上BMC参数配置及生效的方法的步骤。
[0126] 存储器301包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的
运行提供环境。处理器302为电子设备提供计算和控制能力,执行存储器301中保存的计算
机程序时,可以实现以下步骤:当第一进程接收到第一外部参数后,将数据库的与第一外部
参数对应的参数配置状态修改为配置中,并将第一外部参数写入数据库;同时触发中断服
务程序;利用中断服务程序判断数据库是否存在参数配置状态为配置中;若存在参数配置
状态为配置中,则将数据库存储的第一外部参数写入配置文件中;当第一外部参数成功写
入配置文件后,从数据库获取与第一外部参数对应的参数生效状态,并根据参数生效状态
进行生效处理。
[0127] 在一些具体的实施例中,处理器302执行存储器301中保存的计算机子程序时,可以实现以下步骤:当第一进程利用第一GPIO接收到第一外部参数后,将第一外部参数写入
数据库;同时通过与第一GPIO短接的第二GPIO触发中断服务程序。
[0128] 在一些具体的实施例中,处理器302执行存储器301中保存的计算机子程序时,可以实现以下步骤:当第二进程接收到第二外部参数,判断数据库是否存在参数配置状态为
配置中;若不存在参数配置状态为配置中,则将数据库的与第二外部参数对应的参数配置
状态修改为配置中,以实现第二外部参数配置及生效。
[0129] 在一些具体的实施例中,处理器302执行存储器301中保存的计算机子程序时,可以实现以下步骤:记录第一外部参数配置的配置时间;当配置时间超过设定时间时,确定配
置超时。
[0130] 在一些具体的实施例中,处理器302执行存储器301中保存的计算机子程序时,可以实现以下步骤:当第一外部参数成功写入配置文件后,将数据库中与第一外部参数对应
的参数配置状态更新为配置成功;当第一外部参数未成功写入配置文件,则根据写入过程
中的写入错误的错误类型更新参数配置状态;其中,错误类型对应的参数配置状态包括:空
闲、配置文件不存在、配置参数不存在、参数配置报错、其他错误中的一种或者多种。
[0131] 在一些具体的实施例中,处理器302执行存储器301中保存的计算机子程序时,可以实现以下步骤:反馈参数配置后的参数配置状态至用户端。
[0132] 在一些具体的实施例中,处理器302执行存储器301中保存的计算机子程序时,可以实现以下步骤:根据参数生效状态确定对应的生效条件;根据生效条件进行生效处理;其
中,生效条件包括:立即生效、自动重启BMC生效、下次重启BMC生效、延迟生效中的一种或者
多种。
[0133] 在上述实施例的基础上,作为优选实施方式,参见图4,图4为本申请实施例提供的另一种电子设备的结构图,该电子设备还包括:
[0134] 输入接口303,与处理器302相连,用于获取外部导入的计算机程序、参数和指令,经处理器302控制保存至存储器301中。该输入接口303可以与输入装置相连,接收用户手动
输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置
的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。
[0135] 显示单元304,与处理器302相连,用于显示处理器302发送的数据。该显示单元304可以为PC机(Personal Computer,个人计算机)上的显示屏、液晶显示屏或者电子墨水显示
屏等。
[0136] 网络端口305,与处理器302相连,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术、通用串
行总线、高清多媒体接口、无线保真技术、蓝牙通信技术、低功耗蓝牙通信技术、基于
IEEE802.11s的通信技术等。
[0137] 由于电子设备部分的实施例与方法部分的实施例相互对应,因此电子设备部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0138] 下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的方法可相互对应参照。
[0139] 本实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上BMC参数配置及生效的方法的步骤。
[0140] 由于计算机可读存储介质部分的实施例与方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0141] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而
言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明
即可。
[0142] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和
软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本申请的范围。
[0143] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器、内存、只读存储器、
电可编程只读存储器、电可擦除可编程只读存储器、寄存器、硬盘、可移动磁盘、或技术领域
内所公知的任意其它形式的存储介质中。
[0144] 以上对本申请所提供的一种BMC参数配置及生效的方法、装置、电子设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行
了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于
本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若
干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。