информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[NT] Управление питанием 22.01.03 12:12  Число просмотров: 1305
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> На днях отлаживал драйвер, нашел свою ошибку, исправил. Но
> по-пути пришел к выводу что в системе управления питанием
> W2K/XP и т.д. возможен "корректный" deadlock.
> Возможно что я ошибаюсь, вот собственно поэтому и хочу
> обсудить...
>
> 1) Имеем два устройства "bus enumerator" - BusFDO и его
> "child device" - ChildPDO. Оба устройства без
> DO_POWER_INRUSH;
> 2) Предположим что в некоторый момент времени BusFDO был в
> PowerDeviceD1, а ChildPDO в PowerDeviceD2;
> 3) Далее юзер начинает использовать ChildPDO, и
> function-драйвер над ChildPDO запускает запрос на
> PowerDeviceD0 для стека ChildPDO;
> 4) Предположим, что одновременно с этим истекает интервал
> IdleDetection для BusFDO, и "Power Manager" запускает
> запрос на PowerDeviceD3 для BusFDO (или еще как-нибудь
> возникает запрос на PowerDeviceD3);
> 5) Далее bus-драйвер для ChildPDO запускает запрос на
> PowerDeviceD0 для BusFDO и ждет результата, при этом
> power-стек ChildPDO остается занятым;
> 6) Но и стек BusFDO уже занят запросом PowerDeviceD3,
> причем драйвер BusFDO сначала выключит все
> child-устройства, и только потом продолжит обработку
> запроса на PowerDeviceD3;
> 7) В итоге получается deadlock между запросами, и его
> нельзя просто "развязать" в bus-драйвере, потому что
> обработка power-запросов должна быть последовательной хотя
> и асинхронной, и всегда начинаться с верхушки стека;
>
> Ну хоть кто-нибуть что-нибудь понял ?

А разве повер манагер по таймауту от повердевайса0 не отвалится?
<operating systems> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach