ROS Newsletter69

Материал из Русский WINE
Перейти к: навигация, поиск

Выпуск новостей ReactOS №69

Обработка прерываний

Одним из способов низкоуровнего взаимодействия с оборудованием являются исключения и прерывания. Чтобы использовать их в ReactOS, был написан обработчик прерываний (trap handling). Оригинальный вариант обработчика в ReactOS написан на чистом ассемблере, что само по себе в какой-то степени неизбежно, поскольку для некоторых операций в языке Си попросту не существует нужных методов. В их число входит работа со стеком, а также чтение и запись некоторых регистров (эти операции сами по себе являются специфическими для конкретной платформы, и включение их в стандарт Си не пошло бы на пользу переносимости кода). Поэтому в рамках портирования ReactOS на платформу ARM начался процесс переписывания кода, чтобы предоставить хотя бы тонкий слой абстракции на Си с архитектурно-зависимыми вставками на встроенном ассемблере. Встроенный ассемблер - это особый вид макросов для компилятора, указывающих, какую ассемблерную инструкцию требуется использовать в коде на Си. Благодаря этому удалось увеличить удобство редактирования и читабельность кода в целом, а так же попутно исправить несколько ошибок. Для портирования на ARM это было не критично, однако команда ARM-ветки решила, что это важный задел на будущее для всего проекта в целом. К сожалению, использование встроенного ассемблера GCC повлекло невозможность использовать MSVC для компиляции. Ранее, код на ассемблере мог быть скомпилирован в бинарные объекты, с которыми MSVC в дальнейшем работал, но перевод кода на Си сделал его бесполезным. Тут в дело вступил Тимо Крейцер (Timo Kreuzer) заменив вставки на встроенном ассемблере на "сырой" ассемблер. Это может показаться шагом назад, однако основной код, написанный на Си, по-прежнему на месте, а единственное, что было изменено - использование вставок на встроенном ассемблере GCC. Попутно Тимо исправил несколько параметров, относящихся к сегментам и флагам ассемблерного кода, а так же преобразовал передачу параметров функций через регистры, сделав ориентированный на GCC код независимым от компилятора. Теоретически, это делает возможным использование не только компилятора, но и ассемблера Microsoft.

ACPI

Усовершенствованный интерфейс конфигурации и управления электропитанием (Advanced Configuration and Power Interface) - это стандарт, описывающий характеристики управления электропитанием в компьютерах. Над поддержкой ACPI в ReactOS работал Самуэль Серапион (Samuel Serapion), автор выпусков новостей и программист, принимающий участие в портировании ReactOS на платформу x64. Самуэль взял демонстрационную реализацию ACPI, предлагаемую комитетом по стандартизации, и портировал её в ReactOS. К сожалению, из-за проблемы со способом представления идентификаторов аппаратуры, этот код не работал. Камерон Гутман (Cameron Gutman), заново просмотрев код, обнаружил причину проблемы, и устранил ее. Однако код в ReactOS остается незаконченным, и некоторые IRP (I/O Request Packets, пакеты запросов ввода/вывода), генерируемые ACPI, все ещё не обрабатываются. Тем не менее, теперь ничто не мешает доработать первоначальный код Самуэля.

Windows Driver Headers

Команда ReactOS и раньше в той или иной степени сотрудничала с проектом mingw64. Теперь же, приблизительно пять дней назад, Кай Тиец (Kai Tietz) обратился к Амину Хальди (Amine Khaldi), занимающемуся обработкой сообщений об ошибках, и спросил у него, не захочет ли ReactOS совместно работать над заголовками драйверов Windows. По большей части, заголовки в ReactOS правильны или хотя бы более или менее закончены, хотя и несколько беспорядочны. Амин и Кай надеются должным образом выделить информацию в заголовках и обеспечить её правильную структуру. Эту работу они будут вести в отдельной ветке, чтобы не помешать разработке в транке. Тимо Крейцер (Timo Kreuzer) и Алексей Брагин также включились в работу, и Тимо предложил автоматически генерировать набор общих заголовков для драйверов, подобно тому, как Microsoft генерирует заголовки для своих SDK и WDK. Возможно, есть еще несколько моментов, требующих доработки для обеспечения совместимости заголовков с mingw64, но окончательным результатом станет среда разработки драйверов для Windows, отдельная от выпущенной Microsoft. До сих пор есть несколько проблем (по большей части связанных со структурной поддержкой обработки исключений, SEH) при использовании GCC для сборки драйверов Windows, но, по крайней мере, это послужит хорошей начальной точкой.

ReactOS на Chemnitz Linux Day

Несколько участников команды ReactOS отправятся на выставку Chemnitz Linux Day, которая будет проходить с 13 по 14 марта в городе Кемниц в Германии. Они едут туда чтобы представлять проект, отвечать на вопросы, и просто пообщаться с представителями сообщества Open Source.

Newsletters
30-39 #30#31#32#33#34#35#36#37#38#39
40-49 #40#41#42#43#44#45#46#47#48#49
50-59 #50#51#52#53#54#55#56#57#58#59
60-69 #60#61#62#63#64#65#66#67#68#69
70-79 #70#71#72#73#74#75#76#77#78#79
80-89 #80#81#82#83#84#85#86#87#88#89
90-99 #90#91#92#93#94#95#96#97#98#99