forked from KolibriOS/kolibrios
70 lines
1.8 KiB
HTML
70 lines
1.8 KiB
HTML
; =============================================================================
|
|
; Модуль : Инициализация драйвера VBoxGuest
|
|
; Назначение : Инициализация всех подсистем драйвера, подключение к VMMDev,
|
|
; настройка сервисов, установка обработчиков
|
|
; Файл : sys/init.inc
|
|
; =============================================================================
|
|
|
|
; Полная инициализация драйвера VBoxGuest
|
|
proc sys_init
|
|
|
|
call vmmdev_probe
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call mmio_map_vmmdev
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call ports_init ; чекалка
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call vmmdev_init_packets
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call vmmdev_check_version ; получить версию хоста (для guest_info2)
|
|
|
|
call vmmdev_init_protocol ; guest_info + caps + event_filter
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call hgcm_init ; подготовка пакетов/таймаутов
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call timer_init
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call vmmdev_irq_install
|
|
test eax, eax
|
|
jnz .fail
|
|
|
|
call dispatcher_init_all
|
|
call dispatcher_enable_autostart
|
|
|
|
call dispatcher_get_active_events
|
|
call vmmdev_update_event_filter
|
|
test eax, eax
|
|
jnz .fail_event_filter
|
|
|
|
call dispatcher_get_active_caps
|
|
call vmmdev_update_capabilities
|
|
test eax, eax
|
|
jnz .fail_caps
|
|
|
|
xor eax, eax
|
|
ret
|
|
|
|
.fail_event_filter:
|
|
DEBUGF 2, "[VBoxGuest] [Init] Event filter setup failed: 0x%x\n", eax
|
|
ret
|
|
|
|
.fail_caps:
|
|
DEBUGF 2, "[VBoxGuest] [Init] Guest capabilities setup failed: 0x%x\n", eax
|
|
ret
|
|
.fail:
|
|
ret
|
|
endp |