"Легальный" deadlock при управлении питанием в W2K/XP
- From
- Gennady Mayko ()
- To
- Leo Yuriev ()
- Date
- 2003-01-22T16:22:29Z
- Area
- SU.WINDOWS.NT.PROG
From: "Gennady Mayko" <gennady.mayko@broadcom.com>
Добрый день!
LY> From: "Leo Yuriev" <ly@elcat.kg>
GM>> From: "Gennady Mayko" <gennady.mayko@broadcom.com>
GM>> А кто является "power policy owner"? Насколько я знаю, только один из
GM>> драйверов в стеке драйверов может выполнять такую роль. А если я
GM>> правильно понял твое объяснение, здесь есть 2 драйвера в одном стеке,
GM>> которые пытаются управлять состоянием power. Нет ли здесь проблемы?
LY> BusFDO является "power policy owner" для своего стека, но над каждым
LY> ChildPDO есть "ChildFDO", соответственно каждый из этих ChildFDO является
LY> "power policy owner" на своем стеке.
LY> Но даже если будут два "power policy owner" то ситуация будет не хуже чем
LY> с одним "power policy owner". Просто на каждый SystemPower-запрос будет
LY> посылаться не один, а два (или больше) DevicePower-запроса. При этом при
LY> PowerDown "главным" будет самый нижний "power policy owner", а при
LY> PowerUp - самый верхний. Я экспериментировал, все работает если нет
LY> описаной deadlock-ситуации.
--
Я стараюсь так не делать и иметь только один "power policy owner" драйвер в
стеке драйверов, который отвечает за все "манипуляции" с "power" для
устройства (PCI платы), которым он управляет.
Насколько я понял, в описанном тобой случае эти 2 драйвера каким-то образом
должны знать о состоянии друг друга и "договориться" о совместных действиях в
той или иной ситуации (например, после п.3 BusFDO уже не должен пытаться
посылать запрос на PowerDeviceD3 или по крайней мере должен его отложить до
обработки уже запущенного).
Нельзя ли IdleDetection перенести выше, в ChildPDO, так чтобы полностью
избавить BusFDO от этого? Я понимаю, что это своеобразное "дублирование" и
"размазывание" ответственности (потому что может быть несколько ChildPDO), но
все же...
А какой шиной (bus) управляет BusFDO и чем управляют ChildPDO, если не секрет?
--
С уважением,
Геннадий Майко.
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)