IP Library Granted Patent US 8,701,130
Granted Patent B2
US 8,701,130 · App. 13/532,944 · Granted Apr 15, 2014

Implementing remote procedure calls

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,701,130
App. No.
13/532,944
Granted
Apr 15, 2014
Kind
B2
Abstract

A first computing device is programmed to perform operations (i) to collect parameter data for use by a remote function, and (ii) to pass information, including the parameter data, to a second computing device. The second computing device is programmed to perform operations (i) to build a stack based on the parameter data, (ii) to use the information to locate code for the function on the second computing device, (iii) to execute the code for the function on the second computing device, where the function uses the parameter data on the stack, (iv) to obtain output values from execution of the code for the function, and (v) to pass parameter data, including the output values, to the first computing device.

Claims (42)

1. A test system comprising:

a first computing device programmed to execute a test routine, the test routine being written to call a remote function;

a second computing device programmed to execute the remote function;

wherein the first computing device is programmed to perform operations (i) to collect parameter data for use by the remote function, and (ii) to pass information, including the parameter data, to the second computing device; and

wherein the second computing device is programmed to perform operations (i) to build a stack based on the parameter data, (ii) to use the information to locate code for the function on the second computing device, (iii) to execute the code for the function on the second computing device, the function using the parameter data on the stack, (iv) to obtain output values from execution of the code for the function, and (v) to pass parameter data, including the output values, to the first computing device;

wherein at least some of the operations performed by the first computing device and the second computing device are implemented using a programming language that does not support type introspection.

2. The test system of claim 1 , wherein passing the information from the first computing device and passing the parameter data from the second computing device are part of a marshaling convention; and

wherein the first computing device and the second computing device are programmed to recreate the marshaling convention for subsequent calls to the remote function from the first computing device.

3. The test system of claim 1 , wherein, on the second computing device, the following operations are implemented using a first computing language: (i) to build a stack based on the parameter data, and (iii) to execute the code for the function on the second computing device, and

wherein, on the second computing device, the following operations are programmed using a second computing language: (iv) to obtain output values from execution of the code for the function, and (v) to pass parameter data, including the output values, to the first computing device.

4. The test system of claim 3 , wherein the first computing language is Assembly language and the second computing language is the C computing language.

5. The test system of claim 3 , wherein the second computing language does not support type introspection.

6. The test system of claim 1 , wherein the information comprises a module identifier for identifying the second communication device and a function identifier for identifying the remote function, the module identifier and the function identifier being usable to obtain a physical address in which the code for the remote function is located.

7. The test system of claim 6 , wherein using the information to locate code for the function on the second computing device comprises resolving the physical address using the module identifier and the function identifier, and retrieving the code for the function.

8. The test system of claim 1 , wherein the first computing device is programmed to write data to registers on the second computing device; and

wherein the second computing device is programmed to identify the data in the registers and to react to the data in the registers by locating the code for the function on the second computing device and by executing the code.

9. The test system of claim 1 , wherein the first computing device is programmed to receive the parameter data, to identify locations where to store return values in the parameter data, and to store the return values in the locations.

10. The test system of claim 1 , further comprising at least one PCI bus on a path between the first computing device and the second computing device.

11. The test system of claim 1 , wherein collecting the parameter data comprises identifying, in a parameter list, one or more parameter types, one or more corresponding parameter values, and an end-of-list indicator.

12. The test system of claim 1 , wherein the first computing device is a client device and wherein the second computing device is a server device.

13. A method performed on a test system, comprising:

on a first computing device, performing operations comprising: (i) collecting parameter data for use by a remote function, and (ii) passing information, including the parameter data, to the second computing device; and

on second computing device, performing operations comprising: (i) building a stack based on the parameter data, (ii) using the information to locate code for the function on the second computing device, (iii) executing the code for the function on the second computing device, the function using the parameter data on the stack, (iv) obtaining output values from execution of the code for the function, and (v) passing parameter data, including the output values, to the first computing device;

wherein at least some of the operations performed by the first computing device and the second computing device are implemented using a programming language that does not support type introspection.

14. The method of claim 13 , wherein passing the information from the first computing device and passing the parameter data from the second computing device are part of a marshaling convention; and

wherein the first computing device and the second computing device recreate the marshaling convention for subsequent calls to the remote function from the first computing device.

15. The method of claim 14 , wherein, on the second computing device, the following operations are programmed using a first computing language: (i) building a stack based on the parameter data, and (iii) executing the code for the function on the second computing device; and

wherein, on the second computing device, the following operations are programmed using a second computing language: (iv) obtaining output values from execution of the code for the function, and (vi) passing parameter data, including the output values, to the first computing device.

16. The method of claim 15 , wherein the first computing language is Assembly language and the second computing language is the C computing language.

17. The method of claim 15 , wherein the second computing language does not support type introspection.

18. The method of claim 13 , wherein the information comprises a module identifier for identifying the second communication device and a function identifier for identifying the remote function, the module identifier and the function identifier being usable to obtain a physical address in which the code for the remove function is located.

19. The method of claim 18 , wherein using the information to locate code for the function on the second computing device comprises resolving the physical address using the module identifier and the function identifier, and retrieving the code for the function.

20. The method of claim 13 , wherein the first computing device writes data to registers on the second computing device; and

wherein the second computing device identifies the data in the registers and reacts to the data in the registers by locating the code for the function on the second computing device and by executing the code.

21. The method of claim 13 , wherein the first computing device receives the parameter data, identifies locations where to store return values in the parameter data, and stores the return values in the locations.

22. The method of claim 13 , further comprising at least one PCI bus on a path between the first computing device and the second computing device.

23. The method of claim 13 , wherein collecting the parameter data comprises identifying, in a parameter list, one or more parameter types, one or more corresponding parameter values, and an end-of-list indicator.

24. The method of claim 13 , wherein the first computing device is a client device and wherein the second computing device is a server device.

25. One or more non-transitory machine-readable media storing instructions that are executable to perform operations comprising:

on a first computing device performing operations comprising: (i) collecting parameter data for use by a remote function, and (ii) passing information, including the parameter data, to the second computing device; and

on second computing device performing operations comprising: (i) building a stack based on the parameter data, (ii) using the information to locate code for the function on the second computing device, (iii) executing the code for the function on the second computing device, the function using the parameter data on the stack, (iv) obtaining output values from execution of the code for function, (v) passing parameter data, including the output values, to the first computing device;

wherein at least some of the operations performed by the first computing device and the second computing device are implemented using a programming language that does not support type introspection.

Assignments (4)
SECURITY INTEREST Recorded May 7, 2020
From: TERADYNE, INC.
To: TRUIST BANK
Reel/Frame 052595/0632 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Jun 28, 2019
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: TERADYNE, INC.; EAGLE TEST SYSTEMS, INC.; LITEPOINT CORPORATION; NEXTEST SYSTEMS CORPORATION; GENRAD, LLC; ENERGID TECHNOLOGIES CORPORATION
Reel/Frame 049632/0940 →
PATENT SECURITY AGREEMENT Recorded Apr 27, 2015
From: TERADYNE, INC.; LITEPOINT CORPORATION
To: BARCLAYS BANK PLC
Reel/Frame 035507/0116 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2013
From: FRICK, LLOYD K.
To: TERADYNE, INC.
Reel/Frame 029713/0015 →