Cepгeй Бopщ (29.01.2008 15:58, просмотров: 163) ответил =AlexD= на 8-0 С какого это бодуна он станет инвертироваться??? Впрочем с отказом от совмещения согласен.
Ну как же? if (ProcessMap) // if any process waits for event
{
OS::Kernel.ReadyProcessMap |= ProcessMap; // place all waiting processes to ready map
ProcessMap &= efOn; // remove all processes from waiting map
}
else
{
ProcessMap = efOn; // set efOn bit
}
Первый проход - никто не ждет, ProcessMap пустой. Попадаем в else, заносим efOn в ProcessMap. Второй проход - в ProcessMap взведен efOn, попадаем в первую ветку, сбрасываем efOn в ProcessMap... Тьфу, он же как раз не сбрасывается! Да, что называется "между глаз лежало".
Исправил, положил в реп.