网络设备的函数调用方法
【专利摘要】本发明提供一种网络设备的函数调用方法,其中包括如下步骤:函数表生成步骤,在所述网络设备的系统启动过程中,生成将所述网络设备的函数属性信息与地址信息建立了一一对应的函数表;函数调用指令发出步骤,通过用户界面发出函数调用指令;函数调用指令解析步骤,对在所述函数调用指令发出步骤中下发的指令进行解析,从中提取与函数调用相关的所述函数属性信息;函数地址获取步骤,根据在所述函数调用指令解析步骤中提取出的所述函数属性信息,参照所述函数表查找出与所提取出的函数属性信息建立了对应的函数地址;指针变量赋值步骤,对在所述函数地址获取步骤中获取的函数地址赋给一个事先声明的指针变量;和函数调用步骤,通过调用所述指针变量来调用相应的函数。由此,本发明将不同的函数调用过程进行了高度的归一化,有效地减少网络设备开发中的工作量以及维护成本。
【专利说明】网络设备的函数调用方法
【技术领域】
[0001]本发明涉及一种函数调用方法,尤其涉及一种网络设备开发或调试中的函数调用方法。
【背景技术】
[0002]当前,网络技术和服务的发展非常迅速,人们的日常生活已经离不开网络。随着技术和时代的发展,人们对网络设备的功能需求越来越多,越来越复杂,使得网络设备的函数也相应的越来越多样化和复杂化,导致网络设备的维护难度变得越来越高,调试及维护成本也越来越高。
[0003]在网络设备开发过程中,通常可以借助专门的调试工具(比如⑶B,UNIX下的程序调试工具)来直接调用源代码的某个函数。但是,在设备维护阶段通常没有调试工具,因此需要预先将可能会用到的函数封装成某个接口,通过CLI (指令行界面)或者WEB界面调用该接口,这样就调用了需要调用的函数。现有技术中,无论采用CLI (指令行界面)或者WEB界面,其基本思路都类似,即事先将可能会调用的函数封装起来,有10个函数要调用就有10个接口,有100个函数要调用就有100个接口,然后通过CLI或者WEB等用户界面发出指令来调用具体的接口,从而让函数得到真正执行。
[0004]上述现有技术的函数调用方法存在下述缺陷。例如,如果对应的函数没有封装成某个接口,就无法通过CLI或者WEB等用户界面去调用相关函数。现有技术的另一缺陷在于,如果可能会调用100个函数的话,就要做100个接口,如果有I万个的话,那么工作量将非常庞大,维护起来也相当困难。此外,由于不可能预见到到底可能会调用多少函数,因此通常做法是将常用的函数进行封装,但是一旦出现需要调用某些不太常用的函数的时候,由于没有进行封装过,因此就无法调用函数了。
【发明内容】
[0005]本发明鉴于上述问题而提出,其目的是提供一种网络设备的函数调用方法,通过这个方法,可以调用任意函数,不仅解决了某些函数可能没有封装的问题,同时也不需要封装大量接口,降低了工作量和维护成本。
[0006]根据本发明的一个方面,一种网络设备的函数调用方法,其中包括如下步骤:
[0007]函数表生成步骤,在所述网络设备的系统启动过程中,生成将所述网络设备的函数属性信息与地址信息建立了一一对应的函数表;
[0008]函数调用指令发出步骤,通过用户界面发出函数调用指令;
[0009]函数调用指令解析步骤,对在所述函数调用指令发出步骤中下发的指令进行解析,从中提取与函数调用相关的所述函数属性信息;
[0010]函数地址获取步骤,根据在所述函数调用指令解析步骤中提取出的所述函数属性信息,参照所述函数表查找出与所提取出的函数属性信息建立了对应的函数地址;
[0011]指针变量赋值步骤,对在所述函数地址获取步骤中获取的函数地址赋给一个事先声明的指针变量;和
[0012]函数调用步骤,通过调用所述指针变量来调用相应的函数。另外,根据本发明的上述网络设备的函数调用方法,在所述函数表生成步骤中,通过分析网络设备开发系统中运行的镜像文件,从而从该文件中提取并获取所有函数属性信息。
[0013]另外,根据本发明的上述网络设备的函数调用方法,在上述函数调用指令解析步骤中,可以对在所述函数调用指令发出步骤中下发的指令进行解析,从中提取所述函数的名称以及输入参数的信息。
[0014]另外,根据本发明的上述网络设备的函数调用方法,所述函数属性信息可以为函数名称和地址信息。
[0015]另外,根据本发明的上述网络设备的函数调用方法,所述指针变量可以是可变参数指针变量。
[0016]另外,根据本发明的上述网络设备的函数调用方法,所述函数可以是多个。
[0017]发明效果
[0018]现有技术中的函数调用方法需要预先将可能会调用的函数封装起来,有多少个函数要调用就必须准备相应个数的接口,再通过CLI或者WEB等用户界面发出指令来调用具体的接口,导致网络设备的生产和调试工作量庞大。
[0019]基于本发明的函数调用方法,可以将不同的函数进行了高度的归一化,从而实现可以调用任意函数,不仅解决了某些函数可能没有封装的问题,同时也不需要封装大量接口,有效地降低了工作量和维护成本。进一步,解决了现有技术中对应的函数没有封装成接口的情况下无法调用函数的问题。
【专利附图】
【附图说明】
[0020]图1是现有技术中的网络设备开发中的函数调用方法的原理图;
[0021]图2是根据本发明的归一化的函数调用方法的原理图;
[0022]图3是根据本发明的优选实施方式的归一化的函数调用方法的具体步骤的流程图。
【具体实施方式】
[0023]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0024]图1是现有技术的网络设备的函数调用方法的原理图。
[0025]如图1所示,以函数为例进行说明,在现有技术的网络设备中,如果想通过用户界面调用函数,需要将用到的函数,预先通过对应的接口封装起来,例如函数I用接口 I封装,函数2用接口 2封装,等等,使得每个函数都与相应的接口一一对应。当需要调用某个函数时,就通过CLI或者WEB之类的用户界面调用该函数对应的接口,从而调用到该函数。例如,如果需要调用函数2,就需要通过调用接口 2来调用函数2。
[0026]这种函数调用方法的主要缺陷在于,在以函数为例的上述函数调用方法中,通过接口 I仅仅能调用函数1,无法调用函数2,同样通过接口 2仅仅能调用函数2,不能调用函数I。如果某个函数没有预先封装到对应的接口,例如函数3没有相应的接口,则在设备的使用过程中无法通过CLI或者WEB等用户界面调用该函数。
[0027]结果,导致的另一个缺陷就是函数的封装和调用工作量巨大,有10个函数要调用就有10个接口,有100个函数要调用就有100个接口。
[0028]图2显示了本发明优选实施例的网络设备的函数调用方法的原理图。
[0029]如图2所示,通常来说,目前使用的网络设备所使用的镜像文件都是ELF格式(可执行连接格式,是Linux系统下的一种可执行文件格式)的文件,该文件中通常保存了源代码的各种信息,例如包括函数名称、函数地址(函数运行时的地址)、以及函数所在文件的行号等详细的函数信息。
[0030]本发明的方法中,网络设备需要调用某个函数时,通过对某个函数的函数地址定义一个可变参的指向函数的指针,就可以实现函数调用。因此,采用本发明的方法,仅仅通过函数名称和函数地址就可以实现函数调用,而不用预先将函数封装成相应的接口。
[0031]图3显示了本发明网络设备的函数调用方法的流程图。
[0032]本实施例中以调用两个函数为例进行说明,例如函数I和函数2,但是本发明的方法不限制于此,而是可以适用于任意数量的函数的调用。
[0033]如图3所示,本发明优选实施例的函数调用方法包括下述步骤:
[0034]步骤S10,获取函数信息。
[0035]网络设备的系统启动后,通过对运行的ELF格式的镜像文件进行分析,从该文件的源代码中提取相关信息。本发明中,即获取所有函数的信息,包括函数名称和函数地址。在本发明的优选实施例中,例如分别获取了函数I和函数2的函数名称(Funcl或者Func2)和函数地址。
[0036]步骤Sll,生成函数表。
[0037]如上所述,在获取到所有的函数名称和函数地址信息之后,基于该所获取的函数名称和函数地址生成函数表,该函数表中将所有的函数名称和函数地址建立起一一对应关系,以备后续查找使用,如表1所示。
[0038]表1
【权利要求】
1.一种网络设备的函数调用方法,包括如下步骤: 函数表生成步骤,在所述网络设备的系统启动过程中,生成将所述网络设备的函数属性信息与地址信息建立了—对应的函数表; 函数调用指令发出步骤,通过用户界面发出函数调用指令; 函数调用指令解析步骤,对在所述函数调用指令发出步骤中下发的指令进行解析,从中提取与函数调用相关的所述函数属性信息; 函数地址获取步骤,根据在所述函数调用指令解析步骤中提取出的所述函数属性信息,参照所述函数表查找出与所提取出的函数属性信息建立了对应的函数地址; 指针变量赋值步骤,对在所述函数地址获取步骤中获取的函数地址赋给一个事先声明的指针变量;和 函数调用步骤,通过调用所述指针变量来调用相应的函数。
2.根据权利要求1所述的网络设备的函数调用方法,其中, 在所述函数表生成步骤中,通过分析网络设备开发系统中运行的镜像文件,从而从该文件中提取并获取镜像文件中的所有函数属性信息,并生成函数表。
3.根据权利要求1所述的网络设备的函数调用方法,其中,在上述函数调用指令解析步骤中,对在所述函数调用指令发出步骤中下发的指令进行解析,从中提取所述函数名称以及输入参数的信息。
4.根据权利要求2所述的网络设备的函数调用方法,其中,所述函数属性信息包含函数名称以及地址信息。
5.根据权利要求1?3中任一项所述的网络设备的函数调用方法,其中,所述指针变量是可变参数指针变量。
6.根据权利要求1?4中任一项所述的网络设备的函数调用方法,其中,所述函数为多个。
【文档编号】G06F9/46GK103514033SQ201310420110
【公开日】2014年1月15日 申请日期:2013年9月13日 优先权日:2013年9月13日
【发明者】李鹏 申请人:天津汉柏汉安信息技术有限公司