Ещё раз о , так скажем, eax -> al
Цитата: "не будет этого, аминь."
На самом деле только сейчас имеется (недокументированная!) возможность использовать старшие байты eax для чего-то ещё. Если задокументировать ситуацию de facto (как я рекомендовал ранее), то такая возможность пропадёт, ибо макрос mcall может быть изменён так, что в программах в старших байтах eax начнёт храниться мусор. Документировать это de facto всё равно надо, однако в документацию некоторых функций надо будет внести примечание: "Для будущей совместимости надо обнулять старшие байты eax, например, посредством "xor eax, eax", ибо в будущем ah может быть использован для номера подфункций." Первая кандидатура : SysFn9 (смело снизить требуемы размер буфера до 128 байт, против нынешних 1024)
P.S.
Надо ещё подумать - нет ли каких-то неучтённых "подводных камней" - спасибо art_zh за блестящую интуицию!
Предложения по коррекции программного интерфейса ядра
Провёл экспресс поиск по дистрибутиву на предмет использования "устаревших" системных функций:
Hdread использует SysFn58. (Наконец, одно приложение найдено )
Ghost Monitor (./Gmon) использует SysFn46 (зарезервировать, освободить группу портов).
Hdd_info также использует SysFn46
./Network/Tftpc использует SysFn6 (чтение из RAM-диска). (Можно предположить, что её используют и другие сетевые приложения - я их просто не протестировал в режиме чтения/записи файла)
Приложения, использующие SysFn64:
./3d/Cubeline
./3d/Gears
./3d/View3ds
./Demos/Life2
./File managers/Kfm
./Games/Kosilka
./Games/Megamaze
./Games/Rforces
./Games/Xonix
Hdread использует SysFn58. (Наконец, одно приложение найдено )
Ghost Monitor (./Gmon) использует SysFn46 (зарезервировать, освободить группу портов).
Hdd_info также использует SysFn46
./Network/Tftpc использует SysFn6 (чтение из RAM-диска). (Можно предположить, что её используют и другие сетевые приложения - я их просто не протестировал в режиме чтения/записи файла)
Приложения, использующие SysFn64:
./3d/Cubeline
./3d/Gears
./3d/View3ds
./Demos/Life2
./File managers/Kfm
./Games/Kosilka
./Games/Megamaze
./Games/Rforces
./Games/Xonix
Извиняюсь, я тут многое пропустил, ткните пальцем почему
Функция 46 - зарезервировать/освободить группу портов ввода/вывода. Объявлена устаревшей!
Привет,
если еще не в курсе, то за прошедшие без тебя 3 года наметились две четкие тенденции: одни люди пилят ядро в сторону десктопа, другие (хотя о них несколько нескромно говорить во мн. числе) - затачивают Колибри для встраиваемых приложений.
1-я генеральная линия предусматривает повсеместное введение ACPI, глухой системной защиты и других печенек. При таком подходе от пользователя закрываются не только порты, но и PCI-сервис и еще многое другое. Всё - в драйверы.
2-й подход можно выразить как "ничего лишнего, и ближе к железу!". Предполагается, что пользователь не идиот и понимает чего нельзя делать с конфигурационным пространством, портами, MMIO, и DMA. Все в его руках.
Очевидно, что ни первым, ни вторым 40-е функции нафиг не нужны.
если еще не в курсе, то за прошедшие без тебя 3 года наметились две четкие тенденции: одни люди пилят ядро в сторону десктопа, другие (хотя о них несколько нескромно говорить во мн. числе) - затачивают Колибри для встраиваемых приложений.
1-я генеральная линия предусматривает повсеместное введение ACPI, глухой системной защиты и других печенек. При таком подходе от пользователя закрываются не только порты, но и PCI-сервис и еще многое другое. Всё - в драйверы.
2-й подход можно выразить как "ничего лишнего, и ближе к железу!". Предполагается, что пользователь не идиот и понимает чего нельзя делать с конфигурационным пространством, портами, MMIO, и DMA. Все в его руках.
Очевидно, что ни первым, ни вторым 40-е функции нафиг не нужны.
Что-то я не могу найти исходники Hdread ...
Автор их никогда не выкладывал.
Who is online
Users browsing this forum: No registered users and 1 guest