Тестируем поддержку USB

Drivers for periphery equipment
  • Это общий код для OHCI и UHCI?
  • Да, драйверу USB-устройства должно быть безразлично, какой именно контроллер используется - за возможным исключением минорных различий в поведении usb1 и usb2.
    Сделаем мир лучше!
  • Если точнее, то я спрашивал про само тестовое ядро или в нем уже оба типа контроллера обрабатываются?
  • В ядре оба обрабатываются.
    Сделаем мир лучше!
  • CleverMouse wrote:IOCTL interface is not supported
    Ещё один рецепт в сборник "Убей ядро из user-mode" ?
  • Serge, естественно, вместе с введением функции reg_usb_driver, разрешающей нулевой ioctl-обработчик, в srv_handler[Ex] должна быть добавлена проверка на нулевой ioctl-обработчик. В trunk вся эта часть пока не залита.
    Сделаем мир лучше!
  • Раз уж ядро экспортирует специальные функции для usb почему не добавить ещё один вызов вместо использования reg_service не по назначению ? У нас не C++ с перегрузкой операторов и функций.
  • Не совсем в тему, но обработка таймеров в osloop неудачная идея. С одной стороны никакая точность срабатывания, с другой угроза длительного блокирования ключевых функций. Надо переходить к выполнению сложных сервисов в самостоятельных потоках. Тогда можно задействовать систему событий. Точности при нынешнем планировщике это скорее всего не прибавит, но блокировки позволит избежать.
  • Чтобы не заставлять драйвер вызывать две функции, вызов каждой из которых обязателен - reg_service обязательно, чтобы его можно было потом найти при повторной необходимости, и регистрация как usb обязательна, потому что это всё же usb-драйвер.
    Сделаем мир лучше!
  • В документации прямо рекомендуется не ставить в качестве таймеров долгие процессы, для них рекомендуется именно создание потоков. USB, к слову, создаёт отдельный ядерный поток; поскольку родителем для него всегда является основной процесс ядра, то для этого достаточно нескольких строчек в taskman.inc.
    Сделаем мир лучше!
  • То есть не желая вызывать ещё одну функцию начинаем создавать продуманную систему подпорок и костылей ? В которой каждый драйвер будет трактовать вызовы ядра так, как хочется программисту ?
  • В чём подпорка или костыль? Почему драйвер должен трактовать вызовы ядра не так, как ядро?
  • CleverMouse wrote:В документации прямо рекомендуется не ставить в качестве таймеров долгие процессы
    Если бы этим рекомендациям ещё следовали программисты. Сама же нарушаешь существующее API для драйверов и ожидаешь что остальные будут следовать рекомендациям ?

    Update.
    В документации ничего не говорится о последствиях вызова блокировок из таймерных функций.
    Раз драйвер usb работает в своём потоке лучше сразу использовать события, пока не стало поздно.
    Last edited by Serge on Fri Aug 26, 2011 11:24 pm, edited 1 time in total.
  • С reg_service извиняюсь, невнимательно посмотрел исходники. Хотя отсутствие поддержки IOCTL нарушает существующую драйверную модель.
  • Who is online

    Users browsing this forum: No registered users and 1 guest