forked from runtimejs/runtime
-
Notifications
You must be signed in to change notification settings - Fork 12
__SYSCALL
Ivanq edited this page Apr 22, 2018
·
4 revisions
Для доступа к низкоуровнему API можно использовать системные вызовы (__SYSCALL). Это глобальный JavaScript объект, содержащий функции:
- log - Отображает сообщение в порт COM1 (при использовании QEMU - в терминале родительской системы)
- write
- eval - Аналог JS eval
- version - Версия ядра и V8 ({"kernel": Number, "v8": String})
- getCommandLine - Возвращает параметры запуска (обычно - путь к ядру)
- initrdReadFile - Читает файл из системного раздела
- initrdReadFileBuffer - Читает файл в буфер из системного раздела
- initrdListFiles - Возвращает массив со всеми системными файлами (аналог find в linux)
- initrdGetKernelIndex
- startProfiling - Запускает профайлинг (не работает)
- stopProfiling - Останавливает профайлинг
- debug - Предназначение неизвестно.
- takeHeapSnapshot - Снимает снимок кучи V8, но зачем?
- memoryInfo - Информация об используемой и доступной оперативной памяти
- systemInfo - Зачем?
- reboot - Перезагрузка ОС
- bufferAddress - Получение физического адреса буффера в памяти (внимание, из за страничной памяти может работать не совсем предсказуемо)
- memoryBarrier - Зачем он в JS?
- allocDMA - Выделить страницу памяти, обычно используется для DMA. Размер страницы - 2 мегабайта
- getSystemResources - Получает системные ресурсы вроде IO портов и памяти
- stopVideoLog - Отключает вывод сообщений ядра на экран, обратного пути нет.
- setTime - Задать системное время
- halt - Разгрузить процессор и ждать до события (инструкция
hlt
на ассемблере) - acpiGetPciDevices
- acpiSystemReset - Перезагрузка через ACPI
- acpiEnterSleepState - Изменяет состояние питания. Недоработано, этим можно только выключить.
- vesaGetCInfo - (временно не работает до реализации VESA)
Use syscalls (__SYSCALL) to access low-level API. __SYSCALL is a global JavaScript object containing the following functions:
- log - Shows a message in COM1 (this is parent OS terminal when using QEMU)
- write
- eval - practically the same as JS eval
- version - Core and V8 version ({"kernel": Number, "v8": String})
- getCommandLine - Returns kernel arguments (usually path to core)
- initrdReadFile - Reads a file from system partition
- initrdReadFileBuffer - Reads a file from system partition to a buffer
- initrdListFiles - Returns an array of all system files (like find in Linux)
- initrdGetKernelIndex
- startProfiling - Starts profiling (doesn't work right now)
- stopProfiling - Stops profiling
- debug - Unknown (???)
- takeHeapSnapshot - Takes V8 heap snapshot, but why?
- memoryInfo - Info about used and available memory
- systemInfo - Why?
- reboot - Reboots OS
- bufferAddress - Returns physical address of a buffer in memory (warning: may work rather odd because of memory pages)
- memoryBarrier - Why do we need it in JS?
- allocDMA - Allocates emmory page, usually for DMA. Page size is 2 MB
- getSystemResources - Returns system resources such as IO ports and memory
- stopVideoLog - Disables kernel messages, no way to enable back
- setTime - Sets system time
- halt - Stop processor and wait for an event (
hlt
instruction in Assembler) - acpiGetPciDevices
- acpiSystemReset - Reboots via ACPI
- acpiEnterSleepState - Changes power state. Not ready yet, can only be disabled
- vesaGetCInfo - (not working till VESA implementation is ready)