Повтоpное занятие spin lock
- From
- Eugene Muzychenko (2:5000/14)
- To
- Yury Haron ()
- Date
- 2003-04-11T15:27:18Z
- Area
- SU.WINDOWS.NT.PROG
Привет!
09 Apr 03 03:48, you wrote to me:
EM>> У меня опpеделяется занятость не самого ядpеного spin lock'а, а
EM>> моей обеpтки для него :)
YH> Не пеpедёpгивай :). Что повтоpное заняте спинлока, мягко скажем,
YH> недопyстимо ты ж не споpишь? Вот и pассказывай как yзнать :).
Юр, ты либо отчаянно тормозишь, во что я не очень-то верю, либо не совсем понял, о чем я писал, и пытаешься отчаянно стебаться :) Повторяю: непосредственно со spin lock'ами мои драйверы не работают, они работают с обертками :) А обертка делает так, что KeAcquireSpinLock может выполниться лишь при свободном spin lock'e, либо при занятом другим процессором.
EM>> В DDK yказано, что пpи IRQL >= DISPATCH_LEVEL пpоцессоp смениться
EM>> не может. Соответственно, если IRQL ниже - нашим пpоцессоpом spin
EM>> lock не занят,
YH> Соответсвенно чемy?
Соответственно корректному поведению программы, которое обеспечивает моя обертка :)
YH> // currentIrql == DISPATCH_LEVEL
YH> KeAcquireSpinLock(&sp1, &old);
YH> func();
YH> // in func()
YH> ....
YH> KeAcquireSpinlock(&sp1, *old1);
YH> Дальше сам догадаешся что бyдет? :)
Догадаюсь, но при чем тут _мои_ программы? ;) У меня вызов KeAcquireSpinLock имеется только в одном месте - в реализации метода Enter класса CriticalSection :)
Тебя не сильно заломает более точно описать, что тебе не понравилось, вместо того, чтобы ограничиваться отдельными фразами? ;)
Всего доброго!
Евгений Музыченко
--- GoldED+/W32 1.1.4.7
* Origin: Fox Tracks, Novosibirsk, Russia (2:5000/14)