30 lines
877 B
Plaintext
30 lines
877 B
Plaintext
|
14 April 1997
|
||
|
19 May 1997
|
||
|
|
||
|
Locking Rules for Po interface code
|
||
|
|
||
|
1. The Dope structure and all elements in it
|
||
|
or referred to by it, including idle, notify,
|
||
|
and channel structures, are protected by a
|
||
|
global lock named PopDopeGlobalLock.
|
||
|
use PopLockDopeGlobal and PopUnlockDopeGlobal.
|
||
|
|
||
|
EXCEPTION: PoSetDeviceBusy is allowed to wack
|
||
|
directly on the IdleCount variable.
|
||
|
|
||
|
|
||
|
2. The Irp serial list is protected by the
|
||
|
PopIrpSerialLock, accessed via
|
||
|
PopLockIrpSerialList and PopReleaseIrpSerialList,
|
||
|
note that the later does NOT lower IRQL.
|
||
|
PowerFlags (sys state, dev state, pend, active) are
|
||
|
also protected by the irpserial list lock.
|
||
|
|
||
|
3. Notify network protected by eresource named PopNotifyLock,
|
||
|
dope/notify data protected by the DopeGlobalLock.
|
||
|
|
||
|
4. Lock order:
|
||
|
PopNotifyLock, DopeGlobalLock, IrpSerialLock.
|
||
|
|
||
|
|