Difference between revisions of "Kernel code/ru"

From KolibriOS wiki
Jump to navigation Jump to search
Line 39: Line 39:
 
: Инициализация HPET (High Perfomance Event Timer)
 
: Инициализация HPET (High Perfomance Event Timer)
  
----
+
 
 
=== Файл kernel32.inc ===
 
=== Файл kernel32.inc ===
 
: Этот файл не содержит реализаций и является по сути заголовочным
 
: Этот файл не содержит реализаций и является по сути заголовочным
  
 
: Здесь содержатся инклуды .inc файлов почти всех подсистем ядра
 
: Здесь содержатся инклуды .inc файлов почти всех подсистем ядра
 +
----
  
----
 
 
=== Файл proc32.inc ===
 
=== Файл proc32.inc ===
 
: Содержит макросы для определения и вызова процедур:
 
: Содержит макросы для определения и вызова процедур:
 +
----
 
==== stdcall proc ====
 
==== stdcall proc ====
 
: Directly call STDCALL procedure
 
: Directly call STDCALL procedure
Line 58: Line 59:
 
==== proc ====
 
==== proc ====
  
----
 
 
=== Файл macros.inc ===
 
=== Файл macros.inc ===
 
: Содержит разные полезные макросы, в том числе для работы со связными списками
 
: Содержит разные полезные макросы, в том числе для работы со связными списками
 +
----
 
==== $Revision ====
 
==== $Revision ====
 
: Клиент svn при работе с репозиторием после ключевого слова $Revision: подставляет текущую ревизию файла.
 
: Клиент svn при работе с репозиторием после ключевого слова $Revision: подставляет текущую ревизию файла.
Line 83: Line 84:
 
==== list_del ====
 
==== list_del ====
  
----
 
 
=== Файл struct.inc ===
 
=== Файл struct.inc ===
 
: Содержит макросы для объявления структур и работы с ними
 
: Содержит макросы для объявления структур и работы с ними
 +
----
 
==== struct ====
 
==== struct ====
 
: Макрос для объявления структур
 
: Макрос для объявления структур

Revision as of 11:47, 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/

...