System and methods for generating and managing a virtual device
Abstract
Embodiments of the present disclosure may be configured to permit development and validation of a device driver or a device application program by using improved virtual devices. Such improved virtual devices may facilitate driver development without use of physical devices or hardware prototypes. In various embodiments, advanced validation of a device-driver combination may be permitted that would be difficult to achieve even with a physical device. Certain embodiments also may detect inconsistencies between virtual and physical devices, which may be used to improve drivers and device application programs and increase compatibility of such drivers and device application programs with physical devices.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A computer-implemented method for developing a device driver or a device application program, comprising:
constructing a virtual device; executing, by a symbolic execution engine, the virtual device symbolically, wherein the symbolic execution engine includes a virtual machine interface configured to communicate with a virtual device stub; providing a virtual machine configured to simulate operation of certain hardware or operating system with minimal access to the certain hardware or operating system of a host computer system, wherein the virtual machine includes the virtual device stub configured to communicate with the virtual machine interface; developing a device driver configured to facilitate communication between the physical device or the virtual device and an environmental infrastructure, such that the virtual device or the physical device is able to process information to produce a perceivable output; and verifying a device driver with a physical device with test cases generated by the virtual device.
2 . The computer-implemented method of claim 1 in which the virtual device is configured to operate in a profiling mode in which the virtual device is simultaneously executed in a concrete manner in the virtual machine and in a symbolic mode by the symbolic execution engine.
3 . The computer-implemented method of claim 1 in which the virtual device is configured to operate in a debugging mode in which the virtual device is executed symbolically by the symbolic execution engine, and in which all feasible execution paths of execution are identified and displayed in a display device.
4 . The computer-implemented method of claim 1 in which the symbolic execution engine includes a loop bound configured to limit repetition of a loop having a symbolic loop condition to a certain number of iterations.
5 . The computer-implemented method of claim 1 in which the symbolic execution engine includes a time limit such that the symbolic execution engine terminates execution at the end of the time limit whether or not each path of virtual device has been symbolically executed.
6 . The computer-implemented method of claim 1 , further comprising:
generating automatically one or more test cases that include concrete values for program variables; running a test by incorporating the concrete values into code for the virtual device, driver, or device application program; and outputting a report that shows results of the test including information regarding at least one of statement coverage, branch coverage, or transaction coverage of the code.
7 . At least one computer-readable medium comprising instructions that, in response to execution of the instructions by a computing device, enable the computing device to:
construct a virtual device; cause to be executed symbolically, by a symbolic execution engine, the virtual device, wherein the symbolic execution engine includes a virtual machine interface configured to communicate with a virtual device stub; provide a virtual machine configured to simulate operation of certain hardware or operating system with minimal access to the certain hardware or operating system of a host computer system, wherein the virtual machine includes the virtual device stub configured to communicate with the virtual machine interface; develop a device driver configured to facilitate communication between the physical device or the virtual device and an environmental infrastructure, such that the virtual device or the physical device is able to process information to produce a perceivable output; and verify the device driver with a physical device using test cases generated by the virtual device.
8 . The at least one computer-readable medium of claim 7 in which the virtual device is configured to operate in a profiling mode in which the virtual device is simultaneously executed in a concrete manner in the virtual machine and in a symbolic mode by the symbolic execution engine.
9 . The at least one computer-readable medium of claim 7 in which the virtual device is configured to operate in a debugging mode in which the virtual device is executed symbolically by the symbolic execution engine, and in which all feasible execution paths of execution are identified and displayed in a display device.
10 . The at least one computer-readable medium of claim 7 in which the symbolic execution engine includes a loop bound configured to limit repetition of a loop having a symbolic loop condition to a certain number of iterations.
11 . The at least one computer-readable medium of claim 7 in which the symbolic execution engine includes a time limit such that the symbolic execution engine terminates execution at the end of the time limit whether or not each path of virtual device has been symbolically executed.
12 . The at least one computer-readable medium of claim 7 , further comprising instructions that, in response to execution of the instructions by the computing device, enable the computing device to:
generate automatically one or more test cases that include concrete values for program variables; run a test by incorporating the concrete values into code for the virtual device, driver, or device application program; and
output a report that shows results of the test including information regarding at least one of statement coverage, branch coverage, or transaction coverage of the code.Join the waitlist — get patent alerts
Track US2015355933A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.