Difference between revisions of "Kernel code/ru"
Jump to navigation
Jump to search
Line 40: | Line 40: | ||
=== kernel32.inc === | === kernel32.inc === | ||
− | Этот файл не содержит реализаций и является по сути заголовочным | + | : Этот файл не содержит реализаций и является по сути заголовочным |
− | + | ||
+ | : Здесь содержатся инклуды .inc файлов почти всех подсистем ядра | ||
+ | |||
+ | === proc32.inc === | ||
+ | : Содержит макросы для определения и вызова процедур: | ||
+ | ==== stdcall proc ==== | ||
+ | : Directly call STDCALL procedure | ||
+ | ==== invoke proc ==== | ||
+ | : Indirectly call STDCALL procedure | ||
+ | ==== ccall proc ==== | ||
+ | : Directly call CDECL procedure | ||
+ | ==== invoke proc ==== | ||
+ | : Indirectly call CDECL procedure | ||
+ | ==== proc ==== | ||
+ | |||
+ | === macros.inc ==== | ||
+ | : Содержит разные полезные макросы, в том числе для работы со связными списками | ||
+ | ==== $Revision ==== | ||
+ | : Клиент svn при работе с репозиторием после ключевого слова $Revision: подставляет текущую ревизию файла. | ||
+ | |||
+ | В macros.inc из исходников ядра, подключающемся первым, определён макрос fasm'а $Revision, который вычисляет максимум из всех мест, где он встретился (то есть во всех файлах, прямо или косвенно подключаемым к kernel.asm), каковой максимум и является номером самой свежей ревизии ядра (не драйверов). | ||
+ | |||
+ | В конце kernel.asm он присваивается переменной __REV__, ну а boot/bootstr.inc включает значение __REV__ в начальную выводимую строку. | ||
+ | |||
+ | ==== diff16 ==== | ||
+ | : TODO | ||
+ | ==== diff10 ==== | ||
+ | : TODO | ||
+ | ==== dbgstr ==== | ||
+ | : Вывод строки на доску отладки. | ||
+ | |||
+ | Макросы для работы со связными списками: | ||
+ | ==== list_init head ==== | ||
+ | ==== __list_add ==== | ||
+ | : Внутреннее использование | ||
+ | ==== list_add ==== | ||
+ | ==== list_add_tail ==== | ||
+ | ==== list_del ==== | ||
+ | |||
+ | === struct.inc === | ||
+ | : Содержит макросы для объявления структур и работы с ними | ||
+ | ==== struct ==== | ||
+ | : Макрос для объявления структур | ||
== detect/ == | == detect/ == | ||
... | ... |
Revision as of 11:42, 14 May 2021
Ветка trunk ядра KolibriOS. Путеводитель-справочник по исходному коду.
/
init.inc
mem_test
- Тестирование памяти. Если bios имеет функцию 0xE820, то тестирование не производится и происходит выход из функции.
init_mem
- Инициализация системной таблицы страниц
init_page_map
- TODO
init_BIOS32
- TODO
test_cpu
- Получение информации о процессоре.
acpi_locate
- Поиск поиск структуры RSDP (Root System Description Pointer) которая используется в ACPI.
- Функция возвращает указатель на RSDP в регистре eax.
rsdt_find
- В ecx принимает адрес RSDT, в edx сигнатуру таблицы, которую нужно найти (например ACPI_FADT_SIGN)
- В eax возвращает адрес требуемой таблицы
check_acpi
- TODO
init_hpet
- Инициализация HPET (High Perfomance Event Timer)
kernel32.inc
- Этот файл не содержит реализаций и является по сути заголовочным
- Здесь содержатся инклуды .inc файлов почти всех подсистем ядра
proc32.inc
- Содержит макросы для определения и вызова процедур:
stdcall proc
- Directly call STDCALL procedure
invoke proc
- Indirectly call STDCALL procedure
ccall proc
- Directly call CDECL procedure
invoke proc
- Indirectly call CDECL procedure
proc
macros.inc =
- Содержит разные полезные макросы, в том числе для работы со связными списками
$Revision
- Клиент svn при работе с репозиторием после ключевого слова $Revision: подставляет текущую ревизию файла.
В macros.inc из исходников ядра, подключающемся первым, определён макрос fasm'а $Revision, который вычисляет максимум из всех мест, где он встретился (то есть во всех файлах, прямо или косвенно подключаемым к kernel.asm), каковой максимум и является номером самой свежей ревизии ядра (не драйверов).
В конце kernel.asm он присваивается переменной __REV__, ну а boot/bootstr.inc включает значение __REV__ в начальную выводимую строку.
diff16
- TODO
diff10
- TODO
dbgstr
- Вывод строки на доску отладки.
Макросы для работы со связными списками:
list_init head
__list_add
- Внутреннее использование
list_add
list_add_tail
list_del
struct.inc
- Содержит макросы для объявления структур и работы с ними
struct
- Макрос для объявления структур
detect/
...