一种函数调用方法及处理器技术

技术编号:28672533 阅读:16 留言:0更新日期:2021-06-02 02:48
本申请提供了一种函数调用方法及处理器。在该方法中,首先,第一处理器确定所述待运行函数所属的第二处理器,第一处理器获取多级指针参数的各项信息,通过第一网络消息发送给第二处理器;然后,第二处理器接收到第一处理器发送的第一网络消息,解析第一网络消息获取多级指针参数的各项信息;其次,根据解析后的多级指针参数的各项信息和待运行函数的信息重构所述多级指针参数;最后,第二处理器将调用结果以及运行待运行函数的结果通过第二网络消息返回给第一处理。该方法可有效的解决了传统函数调用方法无法实现跨处理器的、包含多级指针参数的函数调用的问题。

【技术实现步骤摘要】
一种函数调用方法及处理器
本申请实施例涉及计算机
,尤其涉及一种函数调用方法及处理器。
技术介绍
在计算设备中,可以存在多个处理器。所述多个处理器协同工作,以实现所述计算设备的计算功能。通常,在某个处理器运行程序过程中,会出现调用其他处理器中的函数的需求。在传统的函数调用方法中,处理器仅支持包含整形参数、字符串参数和单级指针参数的函数的调用。其中,单级指针参数中所有指针变量均指向地址。由于这些参数的数据长度已知,处理器A在确定需要调用这些函数时,可以直接将函数中包含的参数的数据长度通知给处理器B,处理器B可以根据获得的数据长度为参数分配内存地址,从而运行函数。在处理器B运行函数得到运行结果后,再将运行结果通知给处理器A,这样,处理器A可以完成函数调用。然而,目前有些函数中可能涉及多级指针参数,多级指针参数为其中的至少一个指针变量指向其他指针变量,而两个处理器的地址是独立的。显然,即使处理器A采用上述方法,将多级指针参数发送给处理器B,处理器B也无法确定所述多级指针参数中指针变量的指向关系,进而无法运行包含多级指针参数的函数。因此,采用上述传统的函数调用方法实现跨处理器的、包含多级指针参数的函数调用。因此,本领域亟待提出一种能够实现跨处理器的、包含多级指针参数的函数调用方法。
技术实现思路
本专利技术实施例提供一种函数调用方法,以实现跨处理器的、包含多层指针参数的函数调用。本专利技术实施例提供的具体技术方案如下:第一方面,本申请实施例提供了一种函数调用方法,该方法可以应用于具有多个处理器的计算设备中,该方法具体包括以下步骤:第一处理器确定待运行函数的所属的第二处理器;所述第一处理器确定所述待运行函数中包含多级指针参数,其中,多级指针参数包含多个指针变量,且所述多个指针变量中包含至少一个指针变量指向其他指针变量;所述第一处理器获取所述多级指针参数的结构信息,并将所述结构信息保存到地址连续的缓存中;其中,所述结构信息用于表征:所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及指针变量之间的指向关系;任一个指针变量的变量信息包含该指针变量的长度和首地址;所述第一处理器从所述结构信息中获取所述多级指针参数包含的指针变量的数量和每个指针变量的变量信息;所述第一处理器向所述第二处理器发送第一网络消息,所述第一网络消息中包含:所述多级指针参数的结构信息、所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及所述待运行函数的信息;所述第一处理器接收所述第二处理器发送的第二网络消息,所述第二网络消息中包含所述第二处理器对所述待运行函数的运行结果。通过上述方法,两个处理器之间进行包含多级指针参数的函数调用时,第一个处理器通过将调用的多级指针参数相关内容按照相应格式存放在第一网络消息中,第一处理器将第一网络消息发送给第二处理器,第二处理器解析第一网络消息从而执行函数调用并将调用执行结果通过第二网络消息返回给第一处理器,从而有效实现了跨处理器的、包含多层指针参数的函数调用。在一个可能的实现方式中,所述第一处理器确定所述待运行函数中包含多级指针参数,所述方法包括:所述第一处理器确定所述待运行函数中包含指定参数时,当所述第一处理器确定所述指定参数的长度大于或等于设定长度时,确定所述待运行函数中包含所述多级指针参数。通过该方法,第一处理器可以确定待运行函数中包含的指针参数为多级指针参数。在一个可能的实现方式中,指针变量之间的指向关系包括:指针变量之间的指向关系的数量;每个指针变量之间的指向关系包含的源指针变量的标识和地址偏移,以及目的指针变量的标识和地址偏移。第二方面,本申请实施例还提供了一种函数调用方法,该方法应用于具有多个处理器的计算设备,所述方法包括:第二处理器接收第一处理器发送的第一网络消息,所述第一网络消息中包含:多级指针参数的结构信息、所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及所述待运行函数的信息;其中,所述结构信息用于表征:所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及指针变量之间的指向关系;任一个指针变量的变量信息包含该指针变量的长度和首地址;所述第二处理器将所述多级指针参数的结构信息保存到地址连续的缓存中;所述第二处理器根据所述第一网络消息中包含的所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,确定所述多级指针参数中每个指针变量的绝对地址偏移;所述第二处理器根据所述多级指针参数的结构信息中的指针变量之间的指向关系、每个指针变量的绝对地址偏移,计算每个指针变量之间的指向关系中源指针变量的地址和目的指针变量的地址;所述第二处理器将每个指针变量之间的指向关系中目的指针变量的地址赋值给源指针,并根据所述多级指针参数的结构信息,重构所述多级指针参数;所述第二处理器根据所述待运行函数的信息,以及重构的所述多级指针参数,运行所述待运行函数,得到运行结果;所述第二处理器向所述第一处理器发送第二网络消息,所述第二网络消息中包含所述运行结果。在一个可能的实现方式中,所述指针变量之间的指向关系包括:指针变量之间的指向关系的数量;每个指针变量之间的指向关系包含的源指针变量的标识和地址偏移,以及目的指针变量的标识和地址偏移。在一个可能的实现方式中,所述第二处理器根据所述多级指针参数的结构信息中的指针变量之间的指向关系、每个指针变量的绝对地址偏移,计算每个指针参数之间的指向关系中源指针变量的地址和目的指针变量的地址,包括:所述第二处理器将所述缓存中所述多级指针参数的结构信息的首地址作为所述多级指针参数的首地址;所述第二处理器根据所述多级指针参数的首地址、每个指针变量的绝对地址偏移,计算每个指针变量之间的指向关系中源指针变量的地址和目的指针变量的地址。第三方面,本申请提供一种第一处理器,所述第一处理器应用于具有多个处理器的计算设备,包括:存储单元,用于缓存数据;处理单元,用于确定待运行函数的所属的第二处理器;确定所述待运行函数中包含多级指针参数,其中,多级指针参数包含多个指针变量,且所述多个指针变量中包含至少一个指针变量指向其他指针变量;获取所述多级指针参数的结构信息,并将所述结构信息保存到所述存储单元中的地址连续的缓存中;其中,所述结构信息用于表征:所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及指针变量之间的指向关系;任一个指针变量的变量信息包含该指针变量的长度和首地址;从所述结构信息中获取所述多级指针参数包含的指针变量的数量和每个指针变量的变量信息;通信单元,用于向所述第二处理器发送第一网络消息,所述第一网络消息中包含:所述多级指针参数的结构信息、所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及所述待运行函数的信息;以及接收所述第二处理器发送的第二网络消息,所述第二本文档来自技高网...

【技术保护点】
1.一种函数调用方法,该方法应用于具有多个处理器的计算设备,其特征在于,所述方法包括:/n第一处理器确定待运行函数的所属的第二处理器;/n所述第一处理器确定所述待运行函数中包含多级指针参数,其中,多级指针参数包含多个指针变量,且所述多个指针变量中包含至少一个指针变量指向其他指针变量;/n所述第一处理器获取所述多级指针参数的结构信息,并将所述结构信息保存到地址连续的缓存中;其中,所述结构信息用于表征:所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及指针变量之间的指向关系;任一个指针变量的变量信息包含该指针变量的长度和首地址;/n所述第一处理器从所述结构信息中获取所述多级指针参数包含的指针变量的数量和每个指针变量的变量信息;/n所述第一处理器向所述第二处理器发送第一网络消息,所述第一网络消息中包含:所述多级指针参数的结构信息、所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及所述待运行函数的信息;/n所述第一处理器接收所述第二处理器发送的第二网络消息,所述第二网络消息中包含所述第二处理器对所述待运行函数的运行结果。/n

【技术特征摘要】
1.一种函数调用方法,该方法应用于具有多个处理器的计算设备,其特征在于,所述方法包括:
第一处理器确定待运行函数的所属的第二处理器;
所述第一处理器确定所述待运行函数中包含多级指针参数,其中,多级指针参数包含多个指针变量,且所述多个指针变量中包含至少一个指针变量指向其他指针变量;
所述第一处理器获取所述多级指针参数的结构信息,并将所述结构信息保存到地址连续的缓存中;其中,所述结构信息用于表征:所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及指针变量之间的指向关系;任一个指针变量的变量信息包含该指针变量的长度和首地址;
所述第一处理器从所述结构信息中获取所述多级指针参数包含的指针变量的数量和每个指针变量的变量信息;
所述第一处理器向所述第二处理器发送第一网络消息,所述第一网络消息中包含:所述多级指针参数的结构信息、所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及所述待运行函数的信息;
所述第一处理器接收所述第二处理器发送的第二网络消息,所述第二网络消息中包含所述第二处理器对所述待运行函数的运行结果。


2.如权利要求1所述的方法,其特征在于,所述第一处理器确定所述待运行函数中包含多级指针参数,包括:
所述第一处理器确定所述待运行函数中包含指定参数时,当所述第一处理器确定所述指定参数的长度大于或等于设定长度时,确定所述待运行函数中包含所述多级指针参数。


3.如权利要求1所述的方法,其特征在于,指针变量之间的指向关系包括:
指针变量之间的指向关系的数量;
每个指针变量之间的指向关系包含的源指针变量的标识和地址偏移,以及目的指针变量的标识和地址偏移。


4.一种函数调用方法,该方法应用于具有多个处理器的计算设备,其特征在于,所述方法包括:
第二处理器接收第一处理器发送的第一网络消息,所述第一网络消息中包含:多级指针参数的结构信息、所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及所述待运行函数的信息;其中,所述结构信息用于表征:所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,以及指针变量之间的指向关系;任一个指针变量的变量信息包含该指针变量的长度和首地址;所述第二处理器将所述多级指针参数的结构信息保存到地址连续的缓存中;
所述第二处理器根据所述第一网络消息中包含的所述多级指针参数包含的指针变量的数量、每个指针变量的变量信息,确定所述多级指针参数中每个指针变量的绝对地址偏移;
所述第二处理器根据所述多级指针参数的结构信息中的指针变量之间的指向关系、每个指针变量的绝对地址偏移,计算每个指针变量之间的指向关系中源指针变量的地址和目的指针变量的地址;
所述第二处理器将每个指针变量之间的指向关系中目的指针变量的地址赋值给源指针,并根据所述多级指针参数的结构信息,重构所述多级指针参数;
所述第二处理器根据所述待运行函数的信息,以及重构的所述多级指针参数,运行所述待运行函数,得到运行结果;
所述第二处理器向所述第一处理器发送第二网络消息,所述第二网络消息中包含所述运行结果。


5.如权利要求4所述的方法,其特征在于,所述指针变量之间的指向关系包括:
指针变量之间的指向关系的数量;
每个指针变量之间的指向关系包含的源指针变量的标识和地址偏移,以及目的指针变量的标识和地址偏移。


6.如权利要求4所述的方法,其特征在于,所述第二处理器根据所述多级指针参数的结构信息中的指针变量之间的指向关系、每个指针变量的绝对地址偏移,计算每个指针变量之间的指向关系中源指针变量的地址和目的指针变量的地址,包括:
所述第二处理器将所述缓存中所述多级指针参数的结构信息的首地址作为所述多级指针参数的首地址;
所述第二处理器根据所述多级指针参数的首地址、每个指针变量的绝对地址偏移,计算每个指针变量之间的指向关系中源指针变量的地址和目的指针变量的地址。


7.一种第一处理器,所述第一处理器应用于具有多个处理器的计算设备,其特征在于,包括:
存储单元,用于缓存数据;
处理单元,用于确定待运行函数的所属的第二处理器;确定所述待运行函数中包含多级指针参数,其中,多级指针参数包含多个指针变量,且所述多个指针变量中包含至少一个指针变量指向其他...

【专利技术属性】
技术研发人员:牟晓涛陈剑
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:北京;11

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

1