Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, fraddy, Вы писали:
F>>Я не программирую под Win, а занимаюсь firmware (real-time/embedded), но для тестирорования своей внешней железки необходимо было написать тестовую программу. В ней есть некий interrupt-handler.
PD>В Windows-программе ??? Или в драйвере ? Или в программе для embedded, работающей не под Windows ?
В виндах, ессно. Это все здесь поняли правильно.
Описываю проблему:
Я писал фирмварь для некоего девайса. Этот девайс работает на своем процессоре и подключается к РС через LPC-bus. Девайс может общаться с РС (хостом) только в течении окна в 500 микросекунд (конфигурируемый период) раз в определенный (также кон) интервал времени. Задача тестогого приложения — узнать, успевает ли РС в это окно принять все данные. То есть девайс посылает интеррапт, открывает окно и ждет. В интеррапт-хендлере РС посылает запрос и получает ответ. Девайс закрывает окно.
Задача — узнать, уложились ли в 500 микро с начала интеррапта до конца получения ответа. Если нас прерывали — хрен с ним. Игнорируем результат.
Наши инженеры по тестам (которые и должны писать эту тестовую программу) не такие уж большие спецы в программировании под винду и попросили меня уточнить для них на форумах как это сделать.
PD>Если первое — это никак невозможно. PD>Если второе — обращайся в Низкоуровневое программирование. PD>Если третье — тоже не в этом форуме.
>>Проблема в том, что необходимо, чтобы в течение этого хэндлера (он длится около одной миллисекунды) его НИЧТО не могло прервать (контекст-свич или другие интеррапты).
PD>Вполне возможно на уровне драйвера ядра, который запретит/замаскирует на это время прерывания. Во времена DOS — студенческое упражнение, не более. В драйвере Windows — скорее всего можно, но я тут не специалист. В общем, обращайся в Низкоуровневое программирование