RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : ... и всякое такое


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Alexander Conon, http://alexander-conon.narod.ru/
To : Slavik Gnatenko
Subj : ... и всякое такое

>>>>>> вот про тайный смысл поля "link to next header" кто-нибудь может рассказать ?
>>>>>> в смысле - возможность засунуть несколько драйверов в один файл, она зачем ?
>>>>>Поддерживать несколько девайсов одним экземпляром драйвера
>>>>одним файлом
>>>Одним файлом по любому несколько девайсов поддерживается.
>>>Если он, конечно, хоть сколь-нибудь универсален или девайсы идентичные.
>>>Фишка хедера в том, чтобы грузить один экземпляр.
>>в мануалах ясно написано - "несколько драйверов в один файл".
>>неужели врут ? :-/
>Врут :) Драйвер и файл тождественны.
-----
MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА
...
Драйвер устройства в MS-DOS - это подпрограмма, которая вызы-
вается MS-DOS, с одной стороны, и взаимодействует с конкретным
устройством, с другой.
...
При загрузке нового драйвера его адрес помещается в поле
связи предыдущего драйвера. Исключением являются файлы, содержа-
щие несколько драйверов одновременно. В этом случае первые два
байта поля связи должны содержать смещение заголовка следующего
драйвера.
...
Следующие два слова заголовка драйвера содержат смещения прог-
рамм СТРАТЕГИЙ и ПРЕРЫВАНИЙ, соответственно. MS-DOS использует
эту информацию совместно с сегментным адресом драйвера для опре-
деления точек входа в указанные программы. Сегментный адрес драй-
вера система, конечно же, узнает при его загрузке.
-----

>>сами драйвера сложнее
>Конкретнее, пожалуйста.
это поле - одна из составляющих итоговых дебрей

>Никто не мешает ограничить себя одним устройством на файл.
>Но лично мне com2com.sys в виде двух файлов добавил бы только
>существенного IDC траха при написании.
если оторваться от "legacy", то можно теоретически представить,
что могут быть драйвера и без лишних сложностей.

>>>Разработчику драйвера не надо озадачиваться, как определять,
>>а он и так не озадачивался.
>>было принято решение, что в писюке может быть максимум 4 ком-порта,
>Вот именно потому и не озадачивался, что использовал "кривую", по твоему мнению, фичу.
>Иначе бы пришлось. Зуб даю, эта задача на пару порядков сложнее,
>чем описать внутреннее взаимодействие с несколькими точками входа.

>>>Пользователю, как он сейчас огребает на USB контроллерах,
>>если он не хочет думать, то он может сделать a-la com.sys :
>>прописать их _больше_.
>Это чтобы при включённом PAUSEONERROR машина даже загрузиться не смогла?
это проблема _уже_решена_ в некоторых дровах ключом в параметрах.
а USB????.SYS только что проверил удвоением в конфиге.
так этим вообще фиолетово, что с /q, что без него - тишина...
давай зуб :)

>Отличный подход.
именно. в обоих смыслах.

>>>>>и менее ресурсоёмко, чем грузить по экземпляру на каждый девайс.
>>>>оно всё равно грузится по экземпляру на девайс
>>>Ну ну. У тебя компорта ещё два? Покажи мне два загруженых экземпляра com.sys.
>>"унутре у него" несколько драйверов. каким не хватило железа - не грузятся.
>Унутре у него один драйвер. С несколькими точками входа.
>И ресурсы расходуются в основном на открытое логическое устройство, а не на железное.
куда они расходуются - дело десятое, но унутре именно что несколько драйверов.
засунутых туда особым образом, но после загрузки,
грузили ли их из "многодрайверного" файла, или же из "однодрайверного",
для операционки результат будет одинаковый - по драйверу на девайс : com1$,com2$,...
это ведь не dll ?
и ещё табличка из масадоса
---
Колонка Attrib содержит слова атрибутов драйверов, колонка
Address содержит начальный адрес каждого драйвера (взятый из поля
связи предыдущего в списке драйвера) и колонки STRAT и INTRP со-
держат смещения программ СТРАТЕГИЙ и ПРЕРЫВАНИЙ от начала драйве-
ра.
--------------------------------------------------------------------
SD-ShowDriv, Version 1.00, Copyright 1988 Kevin Jaeger
Device Type Units Attrib Address STRAT INTRP
-------------------------------------------------------------------
COM1 Char 01 8000 0070:0203 00A7 00B8
COM2 Char 01 8000 0070:0B37 00A7 00BE
---

>"в смысле - возможность засунуть несколько драйверов в один файл, она зачем ?"
>Итак делаем нормальное API, убираем статическое описание точки входа через заголовок
>и заменяем на динамическую регистрацию на ините
>(а если помечтать, так вообще в произвольный момент).
>Кривость с ограничением количества железа уходит.
если не обеспечить лёгкость написания драйверов
то любой функциональности - грош цена
потому как не будет самих драйверов

>Тем не менее, исходная "кривость", т.е. возможность иметь несколько точек входа,
>вполне сохраняется.
типун тебе на язык ! :)


Mon 28 Jul 2008 19:21 Mozilla/5.0 (OS/2; U; Warp 4.5; ru; rv:1.8.1.12) Gecko/20080




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.