Yes well, there is a phrase: "suitability for purpose" that should be
applied to any design issues that consider the time constraints described
If, for example, your hardware requires that you do x,y,z before you
complete your interrupt processing, then you have to do x,y,z and you don't
have to consider how many units of 50us x,y,z consume. You may have to
describe the performance impact of installing your hardware on a system, but
your hardware overrides this arbitrary timing constraint.
Likewise, outside of J. Hanrahan, I have never heard of or seen a driver
that considers the time spent inside its DPC routine. About the last thing I
would put into my dpc 'loop' is a test for elapsed time.
The timing constraint on spinlocks is equally problematic. One should
minimize serialized code segments. This is good programming practice. But I
have a really hard time with arbitrary, plucked out of the air (or perhaps
elsewhere) time limits. I can imagine some poor programmer counting assembly
instructions (at least this is now down to one processor family) and trying
to decide which clock speed ought to be used and then trying to re-arrange
code and sprinkle in arbitrary release and re-acquire (and recalculate
state) operations to satisfy what should have been stated as a more general:
"minimize time spent within code segments serialized by spinlocks."
From: Sriram [mailto:[email protected]
Sent: Tuesday, May 30, 2000 12:56 AM
To: NT Developers Interest List
Subject: [ntdev] Re: About time spend when processing Dispatch routine?
These are some of the time constraints..
Not more than 50 Microseconds at Device IRQL
Not more than 25 Microseconds while holding any DISPATCH_LEVEL Spinlocks...
Not more than 1 Millisecond at DISPATCH_LEVEL (Dpc routine, startio routine,
I/o timer routine, I/o Completion Call backs, AdapterControl Routines...)
Integra Micro Systems (P) Ltd.[email protected]
From: Prekupec Boris < [email protected]
To: NT Developers Interest List < [email protected]
Date: Monday, May 29, 2000 9:13 PM
Subject: [ntdev] About time spend when processing Dispatch routine?
Can someone tell me how long can driver be on a Dispatch_LEVEL, I mean time
in seconds (inside Dispatch routine)? I don't remeber if I have read this in
You are currently subscribed to ntdev as: [email protected]
To unsubscribe send a blank email to $subst('Email.Unsub')