ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
4 июля
122495 Топик полностью
Evgeny_CD, Архитектор (09.06.2008 18:18, просмотров: 211) ответил AlexandrY на Со Sleep-ом не так просто как кажется.
Если же говорить серьезно про мой не совсем удачный пример драйвера, то Любой драйвер должен состоять из ISR и собственно драйвера. Никаких Sleep () в ISR быть не может. В теле основного драйвера может быть, но! Чем больше я изучаю ОСи, тем отчетливее я понимаю, что должен быть продвинутый таймерный сервис. Не просто сервис на уровне тика, а сервис на уроувне такта некоего таймера (пустить и системного). Т.е. я регистрирую в системе некое событие, которое привязано к значению таймера, и засыпаю на семафоре. У системы есть дерево событий. Пусть таймер сработал. Мы сбрасыаем семафор, выбираем из дерева следующую временную метку, ставим на нее compare регистр таймера. Вызываем задачи, висящие на семафоре. Обычный тик ОСи - это одно из событий в дереве. Например, тот же самый sleep выглядит так. Я могу прочитать системное время, и задать - разбудить меня в такое - то время. А могу сказать - разбудить через столько-то единиц времени. Может я ошибаюсь, но реализация этого представляется разумной по сложности.