Kernel code/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 40: Line 40:


=== kernel32.inc ===
=== kernel32.inc ===
Этот файл не содержит реализаций и является по сути заголовочным
: Этот файл не содержит реализаций и является по сути заголовочным
здесь содержатся инклюды .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.
см. https://wiki.osdev.org/RSDP

rsdt_find

В ecx принимает адрес RSDT, в edx сигнатуру таблицы, которую нужно найти (например ACPI_FADT_SIGN)
В eax возвращает адрес требуемой таблицы
см. https://wiki.osdev.org/RSDT

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/

...