Freeman пишет:Я ориентируюсь на более современные версии Delphi. Будет время — посмотрю, какой код генерит Delphi 2007. В его System функции уже без FWAIT. В CodeGear наконец-то занялись исправлением багов.
Насколько я знаю, KolibriOS поддерживает процессоры, начиная с Pentium-a.
А для более ранних процессоров(до 486) была необходима синхронизация с помощью FWAIT\WAIT.
Но теперь, получается, что это уже не актуально.
То есть, оставлено в целях совместимости, а KolibriOS всё равно не поддерживает слишком старые процессоры(да и самих процессоров давно уж нет таких).
Да, тогда, выходит, что можно обойтись без FWAIT.
Добавлено 2021-01-10 в 09:56
https://github.com/vapaamies/KolibriOS/ … 55d6570a9a
Это должно быть в другом модуле, а не в модуле KolibriOS.
Для сборки программ под KolibriOS функция распаковки не требуется — следовательно в этом модуле ей не место.
Добавлено 2021-01-10 в 14:48
Freeman пишет:0CodErr пишет:После HeapInit перестаёт работать ReallocAppMemory.
Это всё так и задумано.
Теперь уже системная функция ReallocAppMemory очень редко используется.
Но, например, в PELoad используется.
И что делать?
Если не вернуть как было, то ReallocAppMemory работать не будет, а она зачем-то определено в модуле KolibriOS.
Если приложение использует библиотеку, то после её загрузки вызов InitHeap уже не требуется — куча создаётся автоматически.
C другой стороны, если приложение не использует библиотеки, то придётся самостоятельно вызывать InitHeap.
У меня идея такая: когда будет готова GUI-библиотека, то при её инициализации(в блоке initialization) будет происходить при необходимости InitHeap.
Тогда в консольных приложениях куча инициализируется после загрузки библиотеки консоли.
В GUI-приложениях при инициализации модуля.
В остальных случаях — вручную.
Тогда и ReallocAppMemory можно будет использовать при необходимости, раз уж такая функция имеется.
Неизвестно ещё, как в MENUET02 реализовано, а то может вместе с TLS там и куча тоже инициализируется.
Вот так пока.
Сейчас GUI-приложения не используют никакую библиотеку дополнительно, только сис. функции — можно оставить InitHeap вручную.
Когда в uses добавится модуль GUI-библиотеки(что-то типа uses KolibriOS, GUI2D;), то в этом модуле будет происходить инициализация.