Difference between revisions of "Kernel code/ru"

From KolibriOS wiki
Jump to navigation Jump to search
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/

...