SIMULATED INPUT/OUTPUT DEVICES
First Claim
1. A method of simulating communication between devices, the method comprising:
- receiving a plurality of host requests that represent commands in a communication protocol, wherein the plurality of host requests are associated with a plurality of communication endpoints;
distributing the plurality of host requests across the plurality of communication endpoints, wherein requests are distributed, in the order that they are received, to their associated endpoints to generate a distribution of requests;
generating a reordered plurality of host requests by selecting the plurality of host requests from the plurality of communication endpoints in an order based upon the order in which the requests are received and one or more simulation factors;
receiving a plurality of device requests from a simulated device that simulates a communication controller in accordance with the communication protocol;
merging the reordered plurality of host requests and the plurality of device requests to form a merged sequence of requests; and
performing commands from the merged sequence of requests in the order in which the requests occur in the merged sequence of requests, wherein the commands access state data that represents a simulated state of the simulated device.
1 Assignment
0 Petitions
Accused Products
Abstract
In one or more embodiments, methods and apparatus are provided for simulating device communications such as those of the Universal Serial Bus (“USB”) or the like. The methods and apparatus involve receiving host requests that represent commands in a communication protocol and are associated with communication endpoints, distributing the host requests across the communication endpoints in the order that they are received, to their associated endpoints to generate a distribution of requests, generating a reordered plurality of host requests by selecting the host requests from the communication endpoints in an order based upon the order in which the requests are received and one or more simulation factors, receiving device requests from a simulated device in accordance with the communication protocol, merging the reordered host requests and the plurality of device requests to form a merged sequence of requests, and performing commands from the merged sequence of requests in the order.
-
Citations
20 Claims
-
1. A method of simulating communication between devices, the method comprising:
-
receiving a plurality of host requests that represent commands in a communication protocol, wherein the plurality of host requests are associated with a plurality of communication endpoints; distributing the plurality of host requests across the plurality of communication endpoints, wherein requests are distributed, in the order that they are received, to their associated endpoints to generate a distribution of requests; generating a reordered plurality of host requests by selecting the plurality of host requests from the plurality of communication endpoints in an order based upon the order in which the requests are received and one or more simulation factors; receiving a plurality of device requests from a simulated device that simulates a communication controller in accordance with the communication protocol; merging the reordered plurality of host requests and the plurality of device requests to form a merged sequence of requests; and performing commands from the merged sequence of requests in the order in which the requests occur in the merged sequence of requests, wherein the commands access state data that represents a simulated state of the simulated device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system comprising:
-
a processor; a memory storing computer executable instructions that when executed by the processor cause the processor to; retrieve, using a plurality of concurrent threads of execution, a plurality of host requests from a plurality of endpoint queues that correspond to communication endpoints; store the retrieved plurality of host requests in a first queue to form a reordered sequence of host requests; receive a sequence of controller requests from a simulated device that simulates a communication controller in accordance with a communication protocol; store the reordered sequence of host requests and the sequence of controller requests in a second queue, wherein the second queue merges the reordered sequence of host requests and the sequence of controller requests to form a merged sequence of requests; and perform commands represented by the merged sequence of requests in sequential order, wherein the commands access data that represents the state of the simulated device. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A system comprising:
-
a simulation computer system including a simulated communication controller and simulated hardware model, and a remote simulator interface; and a host computer system including a remote daemon process that communicates with a simulated communication interface device driver that communicates with an operating system of the host computer, wherein the remote simulator interface sends output of the simulated communication controller via a network to the remote daemon process on the host computer system, the remote daemon process sends the output of the simulated communication controller to the device driver, and the device driver translates the output to transactions of a communication protocol and sends the transactions to the operating system of the host computer.
-
-
17. A system comprising:
-
a processor configured to; receive, at a host machine, one or more transactions from a host operating system; translate the one or more transactions to commands using a virtual device driver that communicates with the host operating system and appears to the host operating system as a device driver; receive, at a remote daemon process, the commands; forward, using the remote daemon process, the commands to a remote interface server process; translate, using the remote interface server process, the commands to register read and write operations; execute a hardware simulator that simulates operation of a device, including a simulated controller and simulated registers; and perform the register read and write operations on the simulated registers in the simulated controller, wherein the read and write operations simulate the transactions from the host operating system. - View Dependent Claims (18)
-
-
19. A system comprising:
a processor configured to; execute a hardware simulator that simulates operation of a device, including a simulated controller and simulated registers; receive one or more read and write operations at a remote interface server from a simulated controller, the read and write operations referencing the simulated registers; translate, at the remote interface server, the read and write operations to commands; send the commands from the remote interface server to a remote daemon process via network communication; receive the commands at the remote daemon process; send the commands from the remote daemon process to a virtual device driver that communicates with the a operating system; receive, using a simulator server process at a host machine, commands from a remote simulator interface; translate the commands received from the remote simulator interface to transactions; and provide the transactions to a host operating system via a device driver, wherein the host processes the transactions, and the transactions are based on the read and write operations generated by the simulated controller. - View Dependent Claims (20)
Specification