IP Library Granted Patent US 8,607,231
Granted Patent B1
US 8,607,231 · App. 13/751,300 · Granted Dec 10, 2013

Method and system for processing isochronous data packets using virtual USB controller and placing the isochronous data packets into a look-ahead queue having a plurality of blank packets

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,607,231
App. No.
13/751,300
Granted
Dec 10, 2013
Kind
B1
Abstract

A method, system and a computer program product for processing isochronous data packets in a guest memory of a Virtual Machine (VM) using a virtual USB controller. The virtual USB controller is implemented as a software application running on computer system where the VM is implemented. The virtual USB controller is a software component emulating a physical USB controller. The virtual controller uses chains of isochronous packets processed and stored in the guest memory of the VM. Processing of the isochronous data packets includes allocating a buffer in the guest memory for each isochronous data packet and writing the isochronous data packet to the buffer. According to the proposed method, each VM has its own virtual USB controller. The method allows a number of the VMs implemented on a host operating system of a physical machine to concurrently receive data from various USB end-points by employing the virtual USB controllers.

Claims (40)

1. A method for processing isochronous data packets on a computer having a Virtual Machine (VM), the method comprising:

allocating a pre-defined set of buffers in a host memory for the isochronous data packets, the isochronous data packets including continuous and periodic data,

wherein the number of the buffers does not increase until receipt of all the isochronous data packets is completed;

receiving the isochronous data packets;

arranging the isochronous data packets into a look-ahead queue, wherein the look-ahead queue includes a plurality of blank packets, and wherein the blank packets are used to maintain consistent timing of the look-ahead queue;

storing the isochronous data packets in the buffers, such that if a time for processing a particular packet is over, the packet is discarded;

copying the isochronous data packets to a guest memory frame buffer; and

utilizing the isochronous data packets in a guest application within the VM.

2. The method of claim 1 , further comprising:

activating a plurality of VMs connected to a plurality of USB devices, wherein each USB device generates the isochronous data packets received by a guest USB controller application in the VM according to a queue;

forming a plurality of requests for receiving data from the USB devices, wherein each request is placed in the queue;

generating an input request for transmitting the isochronous data packets to the VMs; and

isochronously writing the isochronous data packets into a buffer.

3. The method of claim 1 , wherein the packets are utilized by the guest application that emulates a USB controller of the computer.

4. The method of claim 3 , wherein the guest application is a video controller application.

5. The method of claim 3 , wherein the guest application is an audio controller application.

6. The method of claim 1 , wherein a predetermined number of the isochronous data packets are written into the guest memory frame buffer and each packet is provided to the VM in an order it was received.

7. The method of claim 1 , wherein the isochronous data packets copied to the guest memory frame buffer are synchronized according to intervals between the isochronous data packets.

8. The method of claim 1 , wherein the packets are received from a USB device.

9. A non-transitory computer useable storage medium having computer executable program logic stored thereon for executing on the processor for implementing the steps of:

allocating a pre-defined set of buffers in a host memory for the isochronous data packets, the isochronous data packets including continuous and periodic data,

wherein the number of the buffers does not increase until receipt of all the isochronous data packets is completed;

receiving the isochronous data packets;

arranging the isochronous data packets into a look-ahead queue, wherein the look-ahead queue includes a plurality of blank packets, and wherein the blank packets are used to maintain consistent timing of the look-ahead queue;

storing the isochronous data packets in the buffers, such that if a time for processing a particular packet is over, the packet is discarded;

copying the isochronous data packets to a guest memory frame buffer; and

utilizing the isochronous data packets in a guest application within the VM.

10. A system for processing isochronous data packets using a virtual USB controller, the system comprising:

a Virtual Machine (VM) running under a host operating system of a computer;

a pre-defined set of buffers allocated in a host memory for the isochronous data packets, the isochronous data packets including continuous and periodic data,

wherein the number of the buffers does not increase until receipt of all the isochronous data packets is completed;

the isochronous data packets stored in the buffers, such that if a time for processing a particular packet is over, the packet is discarded;

a look-ahead queue into which the packets are arranged, wherein the look-ahead queue includes a plurality of blank packets corresponding to unutilized buffers, and wherein the blank packets are used to maintain consistent timing of the look-ahead queue; and

a guest application within the VM that utilizes the isochronous data packets.

11. The system of claim 10 , further comprising a Virtual Machine Monitor supervising the VM, wherein the VMM is coupled to a guest USB controller component in the VM via a hyperswitch.

12. The system of claim 11 , wherein the guest USB controller component is an emulation of a USB controller of the computer.

13. The system of claim 11 , wherein the guest USB controller component is a video controller application.

14. The system of claim 11 , wherein the guest USB controller component is an audio controller application.

15. The system of claim 10 , wherein processing of the isochronous data packets includes filling a buffer of the isochronous data packet with data.

16. The system of claim 10 , wherein the isochronous data packets provided to the VM are synchronized according to time intervals between the isochronous data packets.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Jul 18, 2019
From: UBS AG, STAMFORD BRANCH, AS ADMINISTRATIVE AND COLLATERAL AGENT
To: COREL CORPORATION; CLEARSLIDE, INC.; PARALLELS INTERNATIONAL GMBH
Reel/Frame 049787/0073 →
RELEASE OF SECURITY INTEREST RECORDED AT : REEL 047973 FRAME 0797 Recorded Jul 17, 2019
From: UBS AG, STAMFORD BRANCH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 049773/0590 →
SECURITY INTEREST Recorded Dec 21, 2018
From: PARALLELS INTERNATIONAL GMBH
To: UBS AG, STAMFORD BRANCH
Reel/Frame 047973/0797 →
MERGER Recorded Jan 30, 2018
From: PARALLELS IP HOLDINGS GMBH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 045193/0679 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2013
From: TORMASOV, ALEXANDER G.; OMELYANCHUK, ANDREY A.; KODORKIN, ALEXANDER V.; DOBROVOLSKIY, NIKOLAY N.; NESTERENKO, DMITRY A.
To: PARALLELS IP HOLDINGS GMBH
Reel/Frame 029702/0476 →