Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: защищать порты или нет?  (Прочитано 5716 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Копенгаген
Гость
« : 20-11-2005 16:55 » 

Написал тут примочку, обеспечивает USER MODE аппликухе чтение-запись в PCI Configuration space. Делает это через два зарезервированных порта В/В.
Обработчики этих операций в драйвере пока ! никак не защищены.
Посему вопрос, стоит ли защитить чтение (или может только запись ?) в эти регистры.
И если да, то как лучше и почему? Critical sections или просто поднятием/опускание IRQL?

Предположительно, винда и другие приложения оперируют с этими регистрами нечасто, но боюсь, а мало-ли?  Отлично
Ах да, асинхронный ВВ приложением не используется.

Записан
Копенгаген
Гость
« Ответ #1 : 28-12-2005 21:28 » 

Может все таки кто-то поможет?  Жаль

  Уточняю. Есть два порта отвечающие за PCI, по одному указывается адрес, по второму - читаются/пишутся данные инструкциями IN/OUT. Пока все работает. Как же лучше сделать, чтобы из-за перепланирования потоков не оказаться в ситуации, что мой запрос не пересечется во времени с другим желающим покрутить PCI config space.
  Или обрабатывая запрос ввода-вывода от приложения поток monolithic драйвера не прерывается в принципе? Может поднять приоритет до LOW_REALTIME (они точно не прерываются ничем кроме обработчиков DIRQL)?

  У кого какие мысли? ОЧЕНЬ хочется АБСОЛЮТНОЙ надежности.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 28-12-2005 22:51 » new

думаю стоит... и одназначно IRQL... кроме того можно и для мультипроцессорной системы учесть, раз пошла такая пьянка...)
брокировать стоит и чтение и запись... если операции не атомарны.а они скорее всего не атомарны.
когда может произойти чтение/запись этих регистров? - изменение статуса шины... включение выключение питания? переконфигурация..?!

все, что работает ниже диспача - прерывается и вытесняется. и драйвера в том числе.
на диспаче - происходит переключение задач, пока вы на нем - переключения не будет, могут быть только DIRQL... но думаю что по ним никто конфиг читать не станет?... если только вдруг по появлению нового устройства в PCI, например...Улыбаюсь
мультипроцессорность - даже наверное обязалова, потому что "Р4-HT", как я недавно копался могут реально планировать два независимых потока на разных IRQL судя по всему. как такое обойти - я пока не представляю... быть может IRQL до межпроцессорного поднять, если позволят?Ага
да, и старайтесь чтобы запросы от апликухи к драйверу могли выполнятся атомарно за один раз.

мое ИМХО такое! Отлично
« Последнее редактирование: 28-12-2005 22:58 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines