Enhanced techniques for detecting programming errors in device drivers
First Claim
1. A computer-implemented method for measuring processing of a plurality of interrupt request packets communicated to a stack comprising a plurality of device objects and a plurality of filters, the computer-implemented method comprising:
- receiving the plurality of interrupt request packets at a first filter of the plurality of filters;
communicating the plurality of interrupt request packets to one or more device objects of the plurality of device objects from the first filter for processing of the plurality of interrupt request packets at the one or more device objects;
communicating the plurality of interrupt request packets to a second filter of the plurality of filters from the one or more device objects; and
generating reporting data at the first filter and the second filter, the reporting data comprising an identification of individual interrupt request packets of the plurality of interrupt request packets, the reporting data indicating a received time-in value for the individual interrupt request packets, a time-out value for the individual interrupt request packets; and
one or more status values for the individual interrupt request packets.
1 Assignment
0 Petitions
Accused Products
Abstract
Enhanced techniques for detecting programming errors in device drivers are provided. The techniques disclosed herein enable a system to measure a number of aspects of IRPs including, but not limited to, data identifying processed IRPs, data indicating concurrent IRPs, data identifying a stack location associated with a status of an IRP, and individual status values, which may indicate whether IRPs have failed, succeeded or pended. The disclosed techniques enable a system to determine when and where IRPs were sent or not sent to a stack of device objects and/or to individual device objects. The disclosed techniques enable the system to measure the processing of concurrent IRPs. By the use of filters that are positioned in predetermined locations within a stack, disclosed techniques can test and monitor drivers without imposing unduly burdensome loads on the system.
7 Citations
20 Claims
-
1. A computer-implemented method for measuring processing of a plurality of interrupt request packets communicated to a stack comprising a plurality of device objects and a plurality of filters, the computer-implemented method comprising:
-
receiving the plurality of interrupt request packets at a first filter of the plurality of filters; communicating the plurality of interrupt request packets to one or more device objects of the plurality of device objects from the first filter for processing of the plurality of interrupt request packets at the one or more device objects; communicating the plurality of interrupt request packets to a second filter of the plurality of filters from the one or more device objects; and generating reporting data at the first filter and the second filter, the reporting data comprising an identification of individual interrupt request packets of the plurality of interrupt request packets, the reporting data indicating a received time-in value for the individual interrupt request packets, a time-out value for the individual interrupt request packets; and
one or more status values for the individual interrupt request packets. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system, comprising:
-
a processor; a memory having a stack data structure, the stack data structure comprising a plurality of device objects and a plurality of filters, the memory having computer-executable instructions stored thereupon which, when executed by the processor, cause the system to receive the plurality of interrupt request packets at a first filter of the plurality of filters; communicate the plurality of interrupt request packets to one or more device objects of the plurality of device objects from the first filter for processing of the plurality of interrupt request packets at the one or more device objects; communicate the plurality of interrupt request packets to a second filter of the plurality of filters from the one or more device objects; and generate reporting data at the first filter and the second filter, the reporting data comprising an identification of individual interrupt request packets of the plurality of interrupt request packets, the reporting data indicating a received time-in value for the individual interrupt request packets, a time-out value for the individual interrupt request packets; and
one or more status values for the individual interrupt request packets. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer-readable storage medium storing a stack data structure, the stack data structure comprising a plurality of device objects and a plurality of filters, wherein the computer-readable storage medium further comprises computer-executable instructions stored thereupon which, when executed by one or more processors of a system, cause the one or more processors of the system to:
-
receive the plurality of interrupt request packets at a first filter of the plurality of filters; communicate the plurality of interrupt request packets to one or more device objects of the plurality of device objects from the first filter for processing of the plurality of interrupt request packets at the one or more device objects; communicate the plurality of interrupt request packets to a second filter of the plurality of filters from the one or more device objects; and generate reporting data at the first filter and the second filter, the reporting data comprising an identification of individual interrupt request packets of the plurality of interrupt request packets, the reporting data indicating a received time-in value for the individual interrupt request packets, a time-out value for the individual interrupt request packets; and
one or more status values for the individual interrupt request packets. - View Dependent Claims (18, 19, 20)
-
Specification