Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Может читать и читает. Там просто есть "примитивное... 18.10.08 21:55 Число просмотров: 2780
Автор: void <Grebnev Valery> Статус: Elderman
|
> Ну мож и нет примитивов, поскольку эти структуры > обновляются ядром в прерываниях на высоких IRQ level'ах, + > наверное LOCK-префиксы инструкций записи, то их никто не > сможет читать во время записи, что и требуется.
Может читать и читает. Там просто есть "примитивное использоване примитивов", поскольку ISR не может использовать никаких "lock", но должен обновить KSYSTEM_TIME как можно быстрее:
1) ISR (clock interrupt service routine) обновляет данные в строгом порядке:
вначале High2Time, затем LowPart, и в последнюю очередь High1Time.
2) Пользовательское приложение читает данные в обратном порядке:
High1Time, затем LowPart, и в последнюю очередь High2Time.
Синхронизация в том, что если High1Time != High2Time, то чтение повторяется снова (loop)
Например,
while (true) {
myTime.High1Part = USER_SHARED_DATA->SystemTime.High1Time;
myTime.LowPart = USER_SHARED_DATA->SystemTime.LowPart;
if (myTime.High1Part == USER_SHARED_DATA->SystemTime.High2Time)
{
break;
}
else
{
// _asm { pause } не уверен
}
}
---
|
|
|