Pull to refresh
183
0
Send message
r66512 — заработала проводная сеть,
r66514 — заработала беспроводная сеть,
Драйверы для сетевых карт ReactOS-специфичные или ядро уже достаточно развито, чтобы подключить виндовые от производителя?
Какие трудности при этом могут возникнуть?
1. Придётся компилировать ещё и все библиотеки-зависимости.
2. Какая-то системная библиотека может отсутствовать. Например, нет pthread.
3. Какие-то функции в libc могут отсутствовать или быть заглушками. Например, clock() из POSIX возвращает суммарное процессорное время, использованное программой, ядро KolibriOS не отслеживает эту информацию; clock() из menuetlibc возвращает wall clock, clock() из newlibc возвращает ошибку (clock_t)-1.
Кроме того, система сборки сильно усложнена, это же fasm!), и собираться образ должен fasm kernel.asm ))

После того, как создать lang.inc, ядро нормально собирается командой fasm kernel.asm. Проблемы начинаются дальше:
* ядро в дистрибутиве упаковано, возможность вызывать дополнительный шаг kerpack должна быть и при этом должна быть опциональной, чтобы не увеличивать зря порог вхождения,
* образ системы — намного больше, чем ядро, в образе есть много разных файлов,
* автосборка на сервере должна понимать, что при коммите в файл kernel/trunk/fs/fat.inc нужно пересобрать ядро, но необязательно тратить время на пересборку всего остального, от kernel/trunk/bootloader/floppy1440.inc ядро не зависит, но зависит бутсектор,
* программы на си существуют, в том числе и в дистрибутиве, их тоже нужно уметь собирать — можно, конечно, вести долгие холивары вроде того, что идёт прямо здесь, насчёт включения, но ситуация, когда кто-то когда-то один раз собрал что-то и выложил на форуме в виде бинарника без возможности сборки и никто не может это повторить, очень сильно мешает радикальным изменениям во вполне ассемблерных частях проекта. Которые нужны,
* действия по добавлению/редактированию списка собираемых программ должны быть как можно проще, иначе никто этим не будет заниматься.

Tup сборку очень сильно упрощает.
Нет. Конечно, никто не мешает вам попробовать портировать его самостоятельно.
Вам, лично вам, никто не мешает клонировать наш svn-репозиторий в локальный git-репозиторий и продолжать работать с git — git svn clone svn://kolibrios.org создаст локальный git-репозиторий, с которым можно работать как обычно, только с git svn rebase вместо git pull для подтягивания новых изменений. Впрочем, весь репозиторий с 5179 ревизий на данный момент вам вряд ли нужен, git svn clone svn://kolibrios.org -r5000 && git svn rebase kolibrios.org несколько экономичнее.
API звуковой подсистемы: programs/develop/sdk/trunk/sound/include/sound.h. За исключением test_wav, все функции оттуда — вызовы драйвера, так что нативнее некуда.
Пример использования, с многопоточностью: programs/media/ac97snd/ac97snd/ac97wav.c.
Нет. Тот баг касается случая, когда qemu сам создаёт образ на основе папки по -hda fat:..., и делает это неправильно.
Хорошего SDK действительно не хватает, но для GSoC 2015 это плохая тема — студенты не справятся.
gittup.org/tup/lua_parser.html
Tup позволяет задавать правила сборки двумя способами: на своём собственном DSL — синтаксис которого использует большая часть мануала — и на Lua. Lua, будучи полноценным языком программирования, позволяет больше.

Вы взяли в качестве примера файл, который делает магию под капотом, в функциях compile_msvc и link_msvc из programs/use_msvc.lua. К сожалению, сейчас, чтобы получить Колибри-бинарник от gcc или msvc, нужно делать довольно много магических пассов, специфических для компилятора — Tup позволяет затолкать их под капот в use_gcc.lua/use_msvc.lua, но не избавиться от них.

Если вы хотите понять принципы, я советую начать с более простых fasm или nasm: например, programs/network/ftpc/Tupfile.lua, programs/develop/examples/thread/trunk/Tupfile.lua. Тема на форуме с некоторыми комментариями: board.kolibrios.org/viewtopic.php?f=7&t=2869 — там уклон на сравнение со старой системой автосборки на Make, но и просто информация есть.
Из того, что оказалось под рукой в репозитории, SDL_image отказался собираться с libpng из-за того, что последняя с какого-то момента перестала выставлять на всеобщее обозрение в png.h внутренности своих структур, а первая до какого-то момента эти внутренности использовала. Я думаю, что это решается обновлением версии, но этим кто-то должен заниматься.
С прозрачностью не должно быть проблем, внутри SDL собственный рендерер, умеющий прозрачность.

SDL_mixer под рукой нет. Если там нет каких-то хитрых зависимостей — не должно быть и проблем. Если есть — вы рискуете получить игрушку размером больше img-образа системы.
SDL 1.2.2, на следующие версии никто не смотрел. SDL_ttf требует FreeType, которого нет. Звук в SDL есть. Файл конфигурации сборки SDL-версии Quake, со звуком: contrib/other/sdlquake-1.0.9/Tupfile.lua.
Есть TinyGL, подмножество OpenGL с программным рендерингом. Если его хватит, можно использовать.
Бит ED не имеет отношения к тому, как будет использоваться селектор — хоть для стека, хоть для данных. Он влияет на проверки сегментной защиты — если ED=0, то сегментная защита разрешает адреса от 0 до лимита, если ED=1, то сегментная защита разрешает адреса от лимита+1 до максимального. Во время проектирования — в 286-х — сегментная защита была единственным средством защиты, и expand-down сегменты предполагалось использовать для растущих стеков — условно, когда в начале работы программы ей выделяется N байт «вверху» сегмента с SS с выбросом исключения, когда SP опускается ниже выделенного размера, и при необходимости программа запрашивает у системы больше стекового пространства, уменьшая лимит. Отсюда и фразы в документации про «dynamic stack segments», хотя, я повторюсь, ED не имеет отношения к собственно стеку. Потом появилась страничная защита, которая, хоть и с двумя уровнями привилегий против 4-х сегментных, оказалась намного удобней, и flat-модель памяти, в которой сегментные проверки фактически отключены, но выкидывать разные странные биты было уже поздно в интересах совместимости.
Более правильная картинка:
Ну да, совсем никаких проблем, и на форуме нет десятков жалоб на проблемы с компиляцией.
Факт остаётся фактом: за три года существования автосборки список программ на fasm с компиляцией изменяется постоянно всеми, кому не лень, а все — абсолютно все — программы, использующие libc, включаются строго уже скомпилированными бинарниками или не включаются совсем. Может быть, всё-таки проблемы в консерватории?
В ассемблерном наборе разных полезных и бесполезных макросов события именуются. Признанных заголовков для программ на ЯВУ просто не существует, каждый изобретает свои собственные.
Теоретически — да, есть, например, порт SDL и какое-то количество портированных программ, которые не умеет собирать никто, кроме тех, кто портировал.
Практически — для настройки понадобятся очень крепкие нервы — скажем, мои не выдерживают — и контакт с кем-нибудь из наших ЯВУшников. Можете быть уверены, что с первого раза ничего собрать не получится. ЯВУшники проекта подскажут, что именно вы сделали не так, но делать так, чтобы у всех всё просто собиралось, и не подумают.
Как показала практика, никто так и не смог настроить автосборку чего бы то ни было с libc. Только compiles on my machine, только ручная работа с бубном.
Для использования которых нужны очень развитые навыки танцев и работы с бубном.
Для коммуникации мы используем форум. Соглашения по стилю программирования есть для ядра, прекоммитный хук проверяет их и не даёт нарушать. Для программ единый зафиксированный стиль менее актуален, потому что редко бывает ситуация, когда над одной программой одновременно работают несколько человек.

Information

Rating
Does not participate
Registered
Activity