system/docs: update docs and SF constants to match actual kernel (#306)

- Update sysfuncs.txt and sysfuncr.txt to match actual kernel code:
  - Add missing SF's info
  - Add missing constants
  - Fix some mistakes
- Update KOSfuncs.inc to match actual kernel code:
  - Remove obsolete constants
  - Add missing constants
  - Rename some constants to match their names in docs

Reviewed-on: #306
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
This commit was merged in pull request #306.
This commit is contained in:
2026-02-26 17:25:16 +00:00
committed by Burer
parent b52da3e1c3
commit 06c1497624
3 changed files with 345 additions and 120 deletions

View File

@@ -1985,7 +1985,7 @@ path db 'HD0/1',0
подфункция 2 функции 15. подфункция 2 функции 15.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_BACKGROUND_GET_RECT (39) eax - SF_BACKGROUND_GET (39)
====================================================================== ======================================================================
== Функция 39, подфункция 3 - получить прямоугольную область фона = == Функция 39, подфункция 3 - получить прямоугольную область фона =
====================================================================== ======================================================================
@@ -2169,7 +2169,7 @@ path db 'HD0/1',0
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
* ecx = указатель на таблицу цветов * ecx = указатель на таблицу цветов
* edx = размер таблицы цветов * edx = размер таблицы цветов
(должен быть 40 байт для будущей совместимости) (до 192 байт; 40 байт для базовой структуры)
Формат таблицы цветов указан в описании подфункции 3. Формат таблицы цветов указан в описании подфункции 3.
Возвращаемое значение: Возвращаемое значение:
* функция не возвращает значения * функция не возвращает значения
@@ -2196,32 +2196,33 @@ path db 'HD0/1',0
* ecx = указатель на буфер размером edx байт, * ecx = указатель на буфер размером edx байт,
куда будет записана таблица куда будет записана таблица
* edx = размер таблицы цветов * edx = размер таблицы цветов
(должен быть 40 байт для будущей совместимости) (до 192 байт; 40 байт для базовой структуры)
Возвращаемое значение: Возвращаемое значение:
* функция не возвращает значения * функция не возвращает значения
Формат таблицы цветов: каждый элемент - Формат таблицы цветов: каждый элемент -
dword-значение цвета 0x00RRGGBB dword-значение цвета 0x00RRGGBB
* +0: dword: none - зарезервировано * +0: dword: frame
* +4: dword: none - зарезервировано * +4: dword: grab
* +8: dword: work_dark - темный цвет рабочей области для придания * +8: dword: work_dark - темный цвет рабочей области для придания
объемна элементам интерфейса объемна элементам интерфейса
* +12 = +0xC: dword: work_light - светлый цвет рабочей области для * +12 = +0xC: dword: work_light - светлый цвет рабочей области для
придания объемна элементам интерфейса придания объемна элементам интерфейса
* +16 = +0x10: dword: grab_text - цвет текста на заголовке * +16 = +0x10: dword: grab_text - цвет текста на заголовке
* +20 = +0x14: dword: work - цвет рабочей области * +20 = +0x14: dword: work - цвет рабочей области
* +24 = +0x18: dword: button - цвет кнопки в рабочей области * +24 = +0x18: dword: work_button - цвет кнопки в рабочей области
* +28 = +0x1C: dword: button_text - цвет текста на кнопке * +28 = +0x1C: dword: work_button_text - цвет текста на кнопке
в рабочей области в рабочей области
* +32 = +0x20: dword: work_text - цвет текста в рабочей области * +32 = +0x20: dword: work_text - цвет текста в рабочей области
* +36 = +0x24: dword: graph - цвет графики в рабочей области * +36 = +0x24: dword: graph - цвет графики в рабочей области
Замечания: Замечания:
* Структура таблицы цветов описана в стандартном включаемом файле * Структура таблицы цветов описана в стандартном включаемом файле
macros.inc под названием system_colors; например, можно писать: macros.inc под названием system_colors; например, можно писать:
sc system_colors ; объявление переменной sc system_colors ; объявление переменной
... ; где-то надо вызвать ... ; вызов описываемой функции с ecx = sc
; описываемую функцию с ecx=sc mov ecx, [sc.work_button_text] ; устанавливаем цвет текста
mov ecx, [sc.button_text] ; читаем цвет текста ; на кнопке в рабочей области
; на кнопке в рабочей области * Таблица может быть больше (до 192 байт); дополнительные поля
копируются как есть и интерпретируются скинами.
* Использование/неиспользование этих цветов - дело исключительно * Использование/неиспользование этих цветов - дело исключительно
самой программы. Для использования нужно просто при вызове функций самой программы. Для использования нужно просто при вызове функций
рисования указывать цвет, взятый из этой таблицы. рисования указывать цвет, взятый из этой таблицы.
@@ -2491,6 +2492,7 @@ dword-значение цвета 0x00RRGGBB
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SET_WINDOW_SHAPE (50) eax - SF_SET_WINDOW_SHAPE (50)
====================================================================== ======================================================================
===================== Функция 51, подфункция 1 ======================= ===================== Функция 51, подфункция 1 =======================
========================== Создать поток ============================= ========================== Создать поток =============================
@@ -2505,16 +2507,19 @@ dword-значение цвета 0x00RRGGBB
* иначе eax = TID - идентификатор потока * иначе eax = TID - идентификатор потока
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_CREATE_THREAD (51) eax - SF_CREATE_THREAD (51) /
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
====================================================================== ======================================================================
===================== Функция 51, подфункция 2 ======================= ===================== Функция 51, подфункция 2 =======================
=================== Получить номер слота потока ====================== ============= Получить номер слота текущего потока ===================
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 51 - номер функции * eax = 51 - номер функции
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
Возвращаемое значение: Возвращаемое значение:
* eax = номер слота потока * eax = номер слота текущего потока
====================================================================== ======================================================================
===================== Функция 51, подфункция 3 ======================= ===================== Функция 51, подфункция 3 =======================
@@ -2755,10 +2760,10 @@ IPC применяется для посылок сообщений от одн
Программе доступны данные графического экрана (область памяти, которая Программе доступны данные графического экрана (область памяти, которая
собственно и отображает содержимое экрана) напрямую без вызовов собственно и отображает содержимое экрана) напрямую без вызовов
системных функций через селектор gs: системных функций через селектор gs:
mov eax, [gs:0] mov eax, [gs:0]
поместит в eax первый dword буфера, содержащий информацию о цвете поместит в eax первый dword буфера, содержащий информацию о цвете
левой верхней точки (и, возможно, цвета нескольких следующих). левой верхней точки (и, возможно, цвета нескольких следующих).
mov [gs:0], eax mov [gs:0], eax
при работе в режимах VESA c LFB при работе в режимах VESA c LFB
установит цвет левой верхней точки установит цвет левой верхней точки
(и возможно, цвета нескольких следующих). (и возможно, цвета нескольких следующих).
@@ -3356,6 +3361,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_MEM_FREE (13) ebx - SSF_MEM_FREE (13)
====================================================================== ======================================================================
====================== Функция 68, подфункция 14 ===================== ====================== Функция 68, подфункция 14 =====================
====== Ожидать получения сигнала от других приложений/драйверов. ===== ====== Ожидать получения сигнала от других приложений/драйверов. =====
@@ -3368,12 +3374,16 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* eax разрушается * eax разрушается
* буфер, на который указывает ecx, содержит следующую информацию: * буфер, на который указывает ecx, содержит следующую информацию:
* +0: dword: идентификатор последующих данных сигнала * +0: dword: идентификатор последующих данных сигнала
* +4: данные принятого сигнала (20 байт), формат которых * +4: 5 dword: данные принятого сигнала, формат которых
определяется первым dword-ом определяется первым dword-ом
Замечания:
* Бесконечно ожидает любое событие в очереди событий текущего потока.
* Сбрасывает байт приоритета в буфере.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14) ebx - SSF_WAIT_SIGNAL (14)
====================================================================== ======================================================================
=========== Функция 68, подфункция 16 - загрузить драйвер. =========== =========== Функция 68, подфункция 16 - загрузить драйвер. ===========
====================================================================== ======================================================================
@@ -3382,19 +3392,20 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* ebx = 16 - номер подфункции * ebx = 16 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем драйвера * ecx = указатель на ASCIIZ-строку с именем драйвера
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - неудача * eax = хэндл драйвера
* иначе eax = хэндл драйвера 0 при ошибке
Замечания: Замечания:
* Если драйвер ещё не загружен, он загружается; * Если драйвер ещё не загружен, он загружается;
если драйвер уже загружен, ничего не меняется. если драйвер уже загружен, ничего не меняется.
* Имя драйвера чувствительно к регистру символов. * Имя драйвера чувствительно к регистру символов.
Максимальная длина имени - 16 символов, включая завершающий Максимальная длина имени - 16 символов, включая завершающий
нулевой символ, остальные символы игнорируются. нулевой символ, остальные символы игнорируются.
* Драйвер с именем ABC загружается из файла /sys/drivers/ABC.sys. * Драйвер с именем "ABC" загружается из файла /sys/drivers/ABC.sys.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16) ebx - SSF_LOAD_DRIVER (16)
====================================================================== ======================================================================
========== Функция 68, подфункция 17 - управление драйвером. ========= ========== Функция 68, подфункция 17 - управление драйвером. =========
====================================================================== ======================================================================
@@ -3405,19 +3416,21 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* +0: dword: хэндл драйвера * +0: dword: хэндл драйвера
* +4: dword: код функции драйвера * +4: dword: код функции драйвера
* +8: dword: указатель на входные данные * +8: dword: указатель на входные данные
* +12 = +0xC: dword: размер входных данных * +12 = +0x0C: dword: размер входных данных
* +16 = +0x10: dword: указатель на выходные данные * +16 = +0x10: dword: указатель на выходные данные
* +20 = +0x14: dword: размер выходных данных * +20 = +0x14: dword: размер выходных данных
Возвращаемое значение: Возвращаемое значение:
* eax = определяется драйвером * eax = определяется драйвером
-1 при ошибке
Замечания: Замечания:
* Коды функций и структура входных/выходных данных * Коды функций и структура входных/выходных данных
определяются драйвером. определяются драйвером.
* Предварительно должен быть получен хэндл драйвера подфункцией 16. * Хэндл драйвера необходимо предварительно получить подфункцией 16.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_CONTROL_DRIVER (17) ebx - SSF_CONTROL_DRIVER (17)
====================================================================== ======================================================================
== Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. == == Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. ==
====================================================================== ======================================================================
@@ -3482,7 +3495,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
Параметры: Параметры:
* eax = 68 - номер функции * eax = 68 - номер функции
* ebx = 21 - номер подфункции * ebx = 21 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем драйвера * ecx = указатель на ASCIIZ-строку с путем к файлу драйвера
* edx = указатель на командную строку * edx = указатель на командную строку
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - неудача * eax = 0 - неудача
@@ -3674,22 +3687,40 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* функция загружает и, при необходимости, распаковывает файл (kunpack) * функция загружает и, при необходимости, распаковывает файл (kunpack)
====================================================================== ======================================================================
======== Функция 68, подфункция 29 - allocate ring memory. ========= ======= Функция 68, подфункция 29 - выделить кольцевую память. =======
====================================================================== ======================================================================
Parameters: Параметры:
* eax = 68 - function number * eax = 68 - номер функции
* ebx = 29 - subfunction number * ebx = 29 - номер подфункции
* ecx = required size in bytes * ecx = требуемый размер в байтах
Returned value: Возвращаемое значение:
* eax = 0 - failed * eax = 0 - неудача
* eax = pointer to the allocated ring * eax = указатель на выделенную кольцевую память
Remarks: Замечания:
* The requested size must be an exact multiple of pagesize (4 Kb) * Запрошенный размер должен быть кратен размеру страницы (4 Кб).
* The function allocates memory in such a way that you can read and * Память выделяется так, что доступ за пределами буфера приводит
write beyond the size of the allocated memory and will reach the к чтению/записи в его начало.
beginning of the buffer again.
======================================================================
=========== Функция 68, подфункция 30 - выгрузить драйвер. ===========
======================================================================
Параметры:
* eax = 68 - номер функции
* ebx = 30 - номер подфункции
* ecx = указатель на структуру SRV (хэндл драйвера)
* edx = указатель на командную строку (может быть 0)
Возвращаемое значение:
* eax = -1 - неверные параметры
* eax = -2 - ошибка при освобождении памяти драйвера
* иначе eax = указатель на следующую структуру SRV (бывший SRV.fd)
Замечания:
* Перед выгрузкой вызывается точка входа драйвера с DRV_EXIT.
---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_UNLOAD_DRIVER (30)
====================================================================== ======================================================================
======== Функция 68, подфункция 31 - получить данные драйвера. ======= ======== Функция 68, подфункция 31 - получить данные драйвера. =======
====================================================================== ======================================================================
@@ -3788,7 +3819,7 @@ Remarks:
и при поступлении нового сообщения система будет ждать. и при поступлении нового сообщения система будет ждать.
Для синхронизации обрамляйте всю работу с буфером операциями Для синхронизации обрамляйте всю работу с буфером операциями
блокировки/разблокировки блокировки/разблокировки
neg [bufsize] neg [bufsize]
* Данные в буфере трактуются как массив элементов переменной длины - * Данные в буфере трактуются как массив элементов переменной длины -
сообщений. Формат сообщения указан в общем описании. сообщений. Формат сообщения указан в общем описании.
@@ -4527,7 +4558,7 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_COUNT (255) bl - SSF_DEVICE_COUNT (-1)
====================================================================== ======================================================================
==== Функция 74, подфункция 0, Получить тип сетевого устройства. ===== ==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
====================================================================== ======================================================================
@@ -4723,10 +4754,11 @@ Remarks:
Возвращаемое значение: Возвращаемое значение:
* eax = число пакетов, полученных с ошибкой с момента запуска * eax = число пакетов, полученных с ошибкой с момента запуска
устройства, -1 при ошибке устройства, -1 при ошибке
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_ERROR_COUNT (14) bl - SSF_RX_PACKET_ERROR_COUNT (14)
====================================================================== ======================================================================
== Функция 74.15, Получить число пакетов отброшенных при получении. == == Функция 74.15, Получить число пакетов отброшенных при получении. ==
====================================================================== ======================================================================
@@ -4740,7 +4772,7 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_DROP_COUNT (12) bl - SSF_RX_PACKET_DROP_COUNT (15)
====================================================================== ======================================================================
=== Функция 74.16, Получить число пакетов утерянных при получении. === === Функция 74.16, Получить число пакетов утерянных при получении. ===
====================================================================== ======================================================================
@@ -4990,13 +5022,39 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_PROTOCOL (76) eax - SF_NETWORK_PROTOCOL (76)
ebx - SSF_ETHERNET_READ_MAC (0x0000)
ebx - SSF_IP4_PACKETS_SENT (0x10000)
ebx - SSF_IP4_PACKETS_RECEIVED (0x10001)
ebx - SSF_IP4_READ_IP (0x10002)
ebx - SSF_IP4_WRITE_IP (0x10003)
ebx - SSF_IP4_READ_DNS (0x10004)
ebx - SSF_IP4_WRITE_DNS (0x10005)
ebx - SSF_IP4_READ_SUBNET (0x10006)
ebx - SSF_IP4_WRITE_SUBNET (0x10007)
ebx - SSF_IP4_READ_GATEWAY (0x10008)
ebx - SSF_IP4_WRITE_GATEWAY (0x10009)
ebx - SSF_ICMP_PACKETS_SENT (0x20000)
ebx - SSF_ICMP_PACKETS_RECEIVED (0x20001)
ebx - SSF_ICMP_ECHO_REPLY (0x20003)
ebx - SSF_UDP_PACKETS_SENT (0x30000)
ebx - SSF_UDP_PACKETS_RECEIVED (0x30001)
ebx - SSF_TCP_PACKETS_SENT (0x40000)
ebx - SSF_TCP_PACKETS_RECEIVED (0x40001)
ebx - SSF_ARP_PACKETS_SENT (0x50000)
ebx - SSF_ARP_PACKETS_RECEIVED (0x50001)
ebx - SSF_ARP_GET_ENTRY_COUNT (0x50002)
ebx - SSF_ARP_READ_ENTRY (0x50003)
ebx - SSF_ARP_ADD_STATIC_ENTRY (0x50004)
ebx - SSF_ARP_DEL_ENTRY (0x50005)
ebx - SSF_ARP_SEND_ANNOUNCE (0x50006)
ebx - SSF_ARP_CONFLICTS_COUNT (0x50007)
====================================================================== ======================================================================
============= Функция 77, подфункция 0, Создать фьютекс. ============= ============= Функция 77, подфункция 0, Создать фьютекс. =============
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 0 - номер подфункции * ebx = 0 - номер подфункции
* ecx = указатель на контрольное значение фьютекса (dword) * ecx = контрольное значение фьютекса (dword)
Возвращаемое значение: Возвращаемое значение:
* eax = дескриптор фьютекса, 0 при ошибке * eax = дескриптор фьютекса, 0 при ошибке
@@ -5025,11 +5083,12 @@ Remarks:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
* ecx = дескриптор фьютекса * ecx = дескриптор фьютекса
* edx = контрольное значение * edx = контрольное значение фьютекса (dword)
* esi = таймаут в сотых секунды, 0 - ждать бесконечно * esi = таймаут в сотых секунды, 0 - ждать бесконечно
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - успешно, -1 - таймаут, * eax = 0 - успешно,
-2 - контрольное значение не соответствует -1 - таймаут,
-2 - контрольное значение фьютекса не соответствует
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5049,7 +5108,11 @@ Remarks:
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - SSF_WAKE (3) ebx - SSF_WAKE (3)
====================================================================== ======================================================================
======= Функция 77, подфункция 10, Прочитать из файла в буфер. ======= Замечания:
* Подфункции 4-7 зарезервированы и сейчас возвращают -1.
* Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF (-9).
======================================================================
=========== Функция 77, подфункция 10, Прочитать из файла. ===========
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 77 - номер функции * eax = 77 - номер функции
@@ -5059,10 +5122,15 @@ Remarks:
* esi = сколько байт прочитать * esi = сколько байт прочитать
Возвращаемое значение: Возвращаемое значение:
* eax = количество прочитанных байт * eax = количество прочитанных байт
0 при EOF
-EBADF (-9) при ошибке
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - ... ebx - SSF_FILE_READ (10)
====================================================================== ======================================================================
======== Функция 77, подфункция 11, Записать из буфера в файл. ======= ======== Функция 77, подфункция 11, Записать из буфера в файл. =======
====================================================================== ======================================================================
@@ -5070,14 +5138,19 @@ Remarks:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 11 - номер подфункции * ebx = 11 - номер подфункции
* ecx = дескриптор файла * ecx = дескриптор файла
* edx = указатель на буфер, откуда брать данные для записи * edx = указатель на буфер, откуда брать данные для записи
* esi = сколько байт записать * esi = сколько байт записать
Возвращаемое значение: Возвращаемое значение:
* eax = количество записанных байт * eax = количество записанных байт
-EBADF (-9) при ошибке
-EPIPE (-32) если нет читателей
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - ... ebx - SSF_FILE_WRITE (11)
====================================================================== ======================================================================
=========== Функция 77, подфункция 13, Создать новый pipe. =========== =========== Функция 77, подфункция 13, Создать новый pipe. ===========
====================================================================== ======================================================================
@@ -5089,15 +5162,20 @@ Remarks:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 13 - номер подфункции * ebx = 13 - номер подфункции
* ecx = адрес pipefd * ecx = адрес pipefd
* edx = флаги. На данный момент если поднят O_CLOEXEC (0x40000), то * edx = флаги. Разрешен только O_CLOEXEC (0x40000).
сисфункция завершится с ошибкой. Поэтому в качестве флагов можно Любые другие биты приводят к -EINVAL (-11).
передать просто 0.
Возвращаемое значение: Возвращаемое значение:
* eax = 0 если успех, иначе ошибка. * eax = 0 если успех,
иначе отрицательный код ошибки:
-EINVAL (-11), -EFAULT (-14), -ENFILE (-23), -EMFILE (-24)
Примечания:
* В случае успеха pipefd[0] является дескриптором чтения, а pipefd[1]
- дескриптором записи.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - ... ebx - SSF_PIPE_CREATE (13)
====================================================================== ======================================================================
========== Функция -1 - завершить выполнение потока/процесса ========= ========== Функция -1 - завершить выполнение потока/процесса =========
====================================================================== ======================================================================
@@ -5115,6 +5193,7 @@ Remarks:
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_TERMINATE_PROCESS (-1) eax - SF_TERMINATE_PROCESS (-1)
====================================================================== ======================================================================
=== Функция 80 - работа с файловой системой с указанием кодировки. === === Функция 80 - работа с файловой системой с указанием кодировки. ===
====================================================================== ======================================================================

View File

@@ -1972,7 +1972,7 @@ Remarks:
subfunction 2 of function 15. subfunction 2 of function 15.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_BACKGROUND_GET_RECT (39) eax - SF_BACKGROUND_GET (39)
====================================================================== ======================================================================
== Function 39, subfunction 3 - get rect from the background image. = == Function 39, subfunction 3 - get rect from the background image. =
====================================================================== ======================================================================
@@ -2152,7 +2152,7 @@ Parameters:
* ebx = 2 - subfunction number * ebx = 2 - subfunction number
* ecx = pointer to the color table * ecx = pointer to the color table
* edx = size of the color table * edx = size of the color table
(must be 40 bytes for future compatibility) (up to 192 bytes; 40 bytes for the base structure)
Format of the color table is shown in description of subfunction 3. Format of the color table is shown in description of subfunction 3.
Returned value: Returned value:
* function does not return value * function does not return value
@@ -2179,21 +2179,21 @@ Parameters:
* ecx = pointer to the buffer with size edx bytes, * ecx = pointer to the buffer with size edx bytes,
where table will be written where table will be written
* edx = size of color table * edx = size of color table
(must be 40 bytes for future compatibility) (up to 192 bytes; 40 bytes for the base structure)
Returned value: Returned value:
* function does not return value * function does not return value
Format of the color table: Format of the color table:
each item is dword-value for color 0x00RRGGBB each item is dword-value for color 0x00RRGGBB
* +0: dword: none - reserved * +0: dword: frame
* +4: dword: none - reserved * +4: dword: grab
* +8: dword: work_dark - dark color of working area * +8: dword: work_dark - dark color of working area
used to give a user 3D-like feelings about interface elements used to give a user 3D-like feelings about interface elements
* +12 = +0xC: dword: work_light - light color of working area * +12 = +0xC: dword: work_light - light color of working area
used to give a user 3D-like feelings about interface elements used to give a user 3D-like feelings about interface elements
* +16 = +0x10: dword: grab_text - color of text on header * +16 = +0x10: dword: grab_text - color of text on header
* +20 = +0x14: dword: work - color of working area * +20 = +0x14: dword: work - color of working area
* +24 = +0x18: dword: button - color of button in working area * +24 = +0x18: dword: work_button - color of button in working area
* +28 = +0x1C: dword: button_text - color of text on button * +28 = +0x1C: dword: work_button_text - color of text on button
in working area in working area
* +32 = +0x20: dword: work_text - color of text in working area * +32 = +0x20: dword: work_text - color of text in working area
* +36 = +0x24: dword: graph - color of graphics in working area * +36 = +0x24: dword: graph - color of graphics in working area
@@ -2206,6 +2206,8 @@ Remarks:
; this function with ecx=sc ; this function with ecx=sc
mov ecx, [sc.work_button_text] ; read text color on mov ecx, [sc.work_button_text] ; read text color on
; button in working area ; button in working area
* The table may be longer (up to 192 bytes); extra fields are copied
as-is and are interpreted by skins.
* A program itself decides to use or not to use color table. * A program itself decides to use or not to use color table.
For usage program must simply at calls to drawing functions select For usage program must simply at calls to drawing functions select
color taken from the table. color taken from the table.
@@ -2478,11 +2480,11 @@ Remarks:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SET_WINDOW_SHAPE (50) eax - SF_SET_WINDOW_SHAPE (50)
====================================================================== ======================================================================
==================== Function 51 - create thread. ==================== ============= Function 51, subfunction 1 - create thread. ============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 51 - function number * eax = 51 - function number
* ebx = 1 - unique subfunction * ebx = 1 - subfunction number
* ecx = address of thread entry point (starting eip) * ecx = address of thread entry point (starting eip)
* edx = pointer to thread stack (starting esp) * edx = pointer to thread stack (starting esp)
Returned value: Returned value:
@@ -2491,6 +2493,49 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_CREATE_THREAD (51) eax - SF_CREATE_THREAD (51)
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
======================================================================
================== Function 51, subfunction 2 ========================
================== Get current thread slot number ====================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 2 - subfunction number
Returned value:
* eax = slot number of the current thread
======================================================================
================== Function 51, subfunction 3 ========================
===================== Get thread priority ============================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 3 - subfunction number
* ecx = slot number of the thread or -1 (current thread)
Returned value:
* eax = -1 - error (invalid slot number or thread terminated)
* otherwise eax = thread priority
Remarks:
* Priority range is 0..255.
0 is the highest priority and is set by default at creation.
======================================================================
================== Function 51, subfunction 4 ========================
===================== Set thread priority ============================
======================================================================
Parameters:
* eax = 51 - function number
* ebx = 4 - subfunction number
* ecx = slot number of the thread or -1 (current thread)
* edx = new thread priority
Returned value:
* eax = -1 - error (invalid slot number or thread terminated)
* otherwise eax = previous thread priority
Remarks:
* Priority range is 0..255.
0 is the highest priority and is set by default at creation.
====================================================================== ======================================================================
==================== Function 54, subfunction 0 ====================== ==================== Function 54, subfunction 0 ======================
============== Get the number of slots in the clipboard. ============= ============== Get the number of slots in the clipboard. =============
@@ -3289,61 +3334,63 @@ Remarks:
ebx - SSF_MEM_FREE (13) ebx - SSF_MEM_FREE (13)
====================================================================== ======================================================================
===================== Function 68, subfunction 14 ==================== ===================== Function 68, subfunction 14 ====================
============ Wait for signal from another program/driver. ============ ======= Wait for a signal from other applications/drivers. ===========
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 14 - subfunction number * ebx = 14 - subfunction number
* ecx = pointer to the buffer for information (24 bytes) * ecx = pointer to data buffer (6 dword = 24 bytes)
Returned value: Returned value:
* eax is destroyed
* buffer pointed to by ecx contains the following information: * buffer pointed to by ecx contains the following information:
* +0: dword: identifier for following data of signal * +0: dword: EVENT.code (identifier of following data)
* +4: dword: data of signal (20 bytes), format of which is defined * +4: 5 dword: EVENT.data, format depends on EVENT.code
by the first dword Remarks:
* Waits indefinitely for any event in the current thread event queue.
* The priority byte in the buffer is cleared by the kernel.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14) ebx - SSF_WAIT_SIGNAL (14)
====================================================================== ======================================================================
============= Function 68, subfunction 16 - load driver. ============= =========== Function 68, subfunction 16 - load driver. ===============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 16 - subfunction number * ebx = 16 - subfunction number
* ecx = pointer to ASCIIZ-string with driver name * ecx = pointer to ASCIIZ-string with driver name
Returned value: Returned value:
* eax = 0 - failed * eax = driver handle, 0 on error
* otherwise eax = driver handle
Remarks: Remarks:
* If the driver was not loaded yet, it is loaded; * If the driver is not loaded yet, it is loaded;
if the driver was loaded yet, nothing happens. if the driver is already loaded, nothing changes.
* Driver name is case-sensitive. * Driver name is case-sensitive.
Maximum length of the name is 16 characters, including Maximum length of the name is 16 characters, including
terminating null character, the rest is ignored. terminating null character, the rest is ignored.
* Driver ABC is loaded from file /sys/drivers/ABC.sys. * Driver with name "ABC" is loaded from /sys/drivers/ABC.sys.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_LOAD_DRIVER (16) ebx - SSF_LOAD_DRIVER (16)
====================================================================== ======================================================================
============ Function 68, subfunction 17 - driver control. =========== ========== Function 68, subfunction 17 - control driver. =============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 17 - subfunction number * ebx = 17 - subfunction number
* ecx = pointer to the control structure: * ecx = pointer to the control structure:
* +0: dword: handle of driver * +0: dword: driver handle
* +4: dword: code of driver function * +4: dword: driver function code
* +8: dword: pointer to input data * +8: dword: pointer to input data
* +12 = +0xC: dword: size of input data * +12: dword: size of input data
* +16 = +0x10: dword: pointer to output data * +16: dword: pointer to output data
* +20 = +0x14: dword: size of output data * +20: dword: size of output data
Returned value: Returned value:
* eax = determined by driver * eax = determined by driver, -1 on error
Remarks: Remarks:
* Function codes and the structure of input/output data * Function codes and the structure of input/output data
are defined by driver. are defined by the driver.
* Previously one must obtain driver handle by subfunction 16. * Driver handle can be obtained by subfunction 16.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
@@ -3411,7 +3458,7 @@ Remarks:
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 21 - subfunction number * ebx = 21 - subfunction number
* ecx = pointer to ASCIIZ-string with driver name * ecx = pointer to ASCIIZ-string with path to driver file
* edx = pointer to command line * edx = pointer to command line
Returned value: Returned value:
* eax = 0 - failed * eax = 0 - failed
@@ -3616,9 +3663,24 @@ Remarks:
write beyond the size of the allocated memory and will reach the write beyond the size of the allocated memory and will reach the
beginning of the buffer again. beginning of the buffer again.
======================================================================
=========== Function 68, subfunction 30 - unload driver. ============
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 30 - subfunction number
* ecx = pointer to SRV structure (driver handle)
* edx = pointer to command line (may be 0)
Returned value:
* eax = -1 - invalid parameters
* eax = -2 - error while freeing driver memory
* otherwise eax = pointer to the next SRV structure (former SRV.fd)
Remarks:
* The driver entry is called with DRV_EXIT before unloading.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_MEM_ALLOC_RING (29) ebx - SSF_UNLOAD_DRIVER (30)
====================================================================== ======================================================================
=========== Function 68, subfunction 31 - get driver data. =========== =========== Function 68, subfunction 31 - get driver data. ===========
@@ -3833,7 +3895,7 @@ Remarks:
eax - SF_DEBUG (69) eax - SF_DEBUG (69)
ebx - SSF_RESUME (5) ebx - SSF_RESUME (5)
====================================================================== ======================================================================
= Fucntion 69, subfunction 6 - read from memory of debugged process. = = Function 69, subfunction 6 - read from memory of debugged process. =
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 69 - function number * eax = 69 - function number
@@ -4442,17 +4504,17 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_BLITTER (73) eax - SF_BLITTER (73)
====================================================================== ======================================================================
= Function 74, Subfunction 255, Get number of active network devices. = = Function 74, Subfunction -1, Get number of active network devices. =
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 74 - function number * eax = 74 - function number
* bl = 255 - subfunction number * bl = -1 - subfunction number
Returned value: Returned value:
* eax = number of active network devices * eax = number of active network devices
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_DEVICE_COUNT (255) bl - SSF_DEVICE_COUNT (-1)
====================================================================== ======================================================================
======== Function 74, Subfunction 0, Get network device type. ======== ======== Function 74, Subfunction 0, Get network device type. ========
====================================================================== ======================================================================
@@ -4605,7 +4667,7 @@ Parameters:
* bl = 11 - subfunction number * bl = 11 - subfunction number
* bh = device number * bh = device number
Returned value: Returned value:
* eax = Number of erroneous packets received since device start, -1 on error * eax = Number of erroneous packets transmitted since device start, -1 on error
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
@@ -4661,7 +4723,7 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_GET (74) eax - SF_NETWORK_GET (74)
bl - SSF_RX_PACKET_DROP_COUNT (12) bl - SSF_RX_PACKET_DROP_COUNT (15)
====================================================================== ======================================================================
==== Function 74, Subfunction 16, Get RX missed packets counter. ===== ==== Function 74, Subfunction 16, Get RX missed packets counter. =====
====================================================================== ======================================================================
@@ -5174,19 +5236,41 @@ Returned value:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_NETWORK_PROTOCOL (76) eax - SF_NETWORK_PROTOCOL (76)
ebx - SSF_ETHERNET_READ_MAC (0x0000)
ebx - SSF_IP4_PACKETS_SENT (0x10000)
ebx - SSF_IP4_PACKETS_RECEIVED (0x10001)
ebx - SSF_IP4_READ_IP (0x10002)
ebx - SSF_IP4_WRITE_IP (0x10003)
ebx - SSF_IP4_READ_DNS (0x10004)
ebx - SSF_IP4_WRITE_DNS (0x10005)
ebx - SSF_IP4_READ_SUBNET (0x10006)
ebx - SSF_IP4_WRITE_SUBNET (0x10007)
ebx - SSF_IP4_READ_GATEWAY (0x10008)
ebx - SSF_IP4_WRITE_GATEWAY (0x10009)
ebx - SSF_ICMP_PACKETS_SENT (0x20000)
ebx - SSF_ICMP_PACKETS_RECEIVED (0x20001)
ebx - SSF_ICMP_ECHO_REPLY (0x20003)
ebx - SSF_UDP_PACKETS_SENT (0x30000)
ebx - SSF_UDP_PACKETS_RECEIVED (0x30001)
ebx - SSF_TCP_PACKETS_SENT (0x40000)
ebx - SSF_TCP_PACKETS_RECEIVED (0x40001)
ebx - SSF_ARP_PACKETS_SENT (0x50000)
ebx - SSF_ARP_PACKETS_RECEIVED (0x50001)
ebx - SSF_ARP_GET_ENTRY_COUNT (0x50002)
ebx - SSF_ARP_READ_ENTRY (0x50003)
ebx - SSF_ARP_ADD_STATIC_ENTRY (0x50004)
ebx - SSF_ARP_DEL_ENTRY (0x50005)
ebx - SSF_ARP_SEND_ANNOUNCE (0x50006)
ebx - SSF_ARP_CONFLICTS_COUNT (0x50007)
====================================================================== ======================================================================
========== Function 77, Subfunction 0, Create futex object =========== ========== Function 77, Subfunction 0, Create futex object ===========
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 77 - function number * eax = 77 - function number
* ebx = 0 - subfunction number * ebx = 0 - subfunction number
* ecx = pointer to futex dword * ecx = futex control value (dword)
Returned value: Returned value:
* eax = futex handle, 0 on error * eax = futex handle, 0 on error
Remarks:
* Use subfunction 1 to destroy the futex.
The kernel destroys the futexes automatically when the process
terminates.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5201,7 +5285,8 @@ Parameters:
Returned value: Returned value:
* eax = 0 - successfull, -1 on error * eax = 0 - successfull, -1 on error
Remarks: Remarks:
* The futex handle must have been created by subfunction 0 * The kernel destroys the futexes automatically when the process
terminates.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5213,17 +5298,12 @@ Parameters:
* eax = 77 - function number * eax = 77 - function number
* ebx = 2 - subfunction number * ebx = 2 - subfunction number
* ecx = futex handle * ecx = futex handle
* edx = control value * edx = futex control value (dword)
* esi = timeout in system ticks or 0 for infinity * esi = timeout in hundredths of a second, 0 - wait forever
Returned value: Returned value:
* eax = 0 - successfull * eax = 0 - successfull
-1 - timeout -1 - timeout
-2 - futex dword does not have the same value as edx -2 - futex control value doesn't match
Remarks:
* This functionn tests that the value at the futex dword still
contains the expected control value, and if so, then sleeps
waiting for a wake operation on the futex.
* The futex handle must have been created by subfunction 0
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5239,15 +5319,71 @@ Parameters:
Returned value: Returned value:
* eax = number of waiters that were woken up * eax = number of waiters that were woken up
Remarks:
* This function wakes at most edx of the waiters that are
waiting (e.g., inside futex wait) on the futex dword
* The futex handle must have been created by subfunction 0
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - SSF_WAKE (3) ebx - SSF_WAKE (3)
====================================================================== ======================================================================
Remarks:
* Subfunctions 4-7 are reserved and currently return -1.
* Subfunctions 8-9 and 12 are not implemented and return -EBADF (-9).
======================================================================
============ Function 77, Subfunction 10, Read from file. ============
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 10 - subfunction number
* ecx = file handle
* edx = pointer to destination buffer
* esi = number of bytes to read
Returned value:
* eax = number of bytes read,
0 on EOF,
-EBADF (-9) on error
Remarks:
* Only pipe descriptors are supported.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - SSF_FILE_READ (10)
======================================================================
=========== Function 77, Subfunction 11, Write to file. =============
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 11 - subfunction number
* ecx = file handle
* edx = pointer to source buffer
* esi = number of bytes to write
Returned value:
* eax = number of bytes written,
-EBADF (-9) on error,
-EPIPE (-32) if no readers
Remarks:
* Only pipe descriptors are supported.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - SSF_FILE_WRITE (11)
======================================================================
========== Function 77, Subfunction 13, Create pipe. ================
======================================================================
Parameters:
* eax = 77 - function number
* ebx = 13 - subfunction number
* ecx = pointer to pipefd[2] array (two dword handles)
* edx = flags (only O_CLOEXEC is allowed)
Returned value:
* eax = 0 on success,
negative errno value on error:
-EINVAL (-11), -EFAULT (-14), -ENFILE (-23), -EMFILE (-24)
Remarks:
* On success, pipefd[0] is a read handle and pipefd[1] is a
write handle.
---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77)
ebx - SSF_PIPE_CREATE (13)
======================================================================
=== Function 80 - file system interface with parameter of encoding === === Function 80 - file system interface with parameter of encoding ===
====================================================================== ======================================================================
Parameters: Parameters:

View File

@@ -70,11 +70,11 @@ SF_SYSTEM=18
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
SSSF_GET_WB=1 SSSF_GET_WB=1
SSSF_SET_WB=2 SSSF_SET_WB=2
SF_MIDI=20 SF_MIDI=20 ; deprecated/undefined in current kernel
SSF_RESET=1 SSF_RESET=1 ; deprecated
SSF_OUTPUT=2 SSF_OUTPUT=2 ; deprecated
SF_SYSTEM_SET=21 SF_SYSTEM_SET=21
SSF_MPU_MIDI_BASE=1 SSF_MPU_MIDI_BASE=1 ; not used (reserved)
SSF_KEYBOARD_LAYOUT=2 SSF_KEYBOARD_LAYOUT=2
SSF_SYS_LANG=5 SSF_SYS_LANG=5
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
@@ -112,7 +112,7 @@ SF_BACKGROUND_GET=39
;SSF_PIXEL_BG=2 ;SSF_PIXEL_BG=2
;SSF_MODE_BG=4 ;SSF_MODE_BG=4
SF_SET_EVENTS_MASK=40 ; turn on/off desired events SF_SET_EVENTS_MASK=40 ; turn on/off desired events
SF_PORT_IN_OUT=43 ; input/output to a port SF_PORT_IN_OUT=43 ; deprecated/undefined in current kernel
SF_SET_PORTS=46 ; reserve/free a group of input/output ports SF_SET_PORTS=46 ; reserve/free a group of input/output ports
SF_DRAW_NUMBER=47 ; draw number to the window SF_DRAW_NUMBER=47 ; draw number to the window
SF_STYLE_SETTINGS=48 SF_STYLE_SETTINGS=48
@@ -132,6 +132,10 @@ SF_STYLE_SETTINGS=48
SF_APM=49 SF_APM=49
SF_SET_WINDOW_SHAPE=50 SF_SET_WINDOW_SHAPE=50
SF_CREATE_THREAD=51 SF_CREATE_THREAD=51
SSF_CREATE_THREAD=1
SSF_GET_CURR_THREAD_SLOT=2
SSF_GET_THREAD_PRIORITY=3
SSF_SET_THREAD_PRIORITY=4
SF_CLIPBOARD=54 SF_CLIPBOARD=54
SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard
SSF_READ_CB=1 SSF_READ_CB=1
@@ -184,7 +188,7 @@ SF_SYS_MISC=68
SSF_HEAP_INIT=11 SSF_HEAP_INIT=11
SSF_MEM_ALLOC=12 SSF_MEM_ALLOC=12
SSF_MEM_FREE=13 SSF_MEM_FREE=13
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver SSF_WAIT_SIGNAL=14 ; wait for a signal from other process
SSF_LOAD_DRIVER=16 SSF_LOAD_DRIVER=16
SSF_CONTROL_DRIVER=17 SSF_CONTROL_DRIVER=17
SSF_LOAD_DLL=19 SSF_LOAD_DLL=19
@@ -196,6 +200,9 @@ SF_SYS_MISC=68
SSF_SET_EXCEPTION_STATE=25 SSF_SET_EXCEPTION_STATE=25
SSF_MEM_FREE_EXT=26 SSF_MEM_FREE_EXT=26
SSF_LOAD_FILE=27 SSF_LOAD_FILE=27
SSF_MEM_ALLOC_RING=29
SSF_UNLOAD_DRIVER=30
SSF_GET_DRIVER_DATA=31
SF_DEBUG=69 SF_DEBUG=69
SSF_SET_MESSAGE_AREA=0 SSF_SET_MESSAGE_AREA=0
SSF_GET_REGISTERS=1 SSF_GET_REGISTERS=1
@@ -221,7 +228,7 @@ SF_FILE=70
SF_SET_CAPTION=71 SF_SET_CAPTION=71
SF_SEND_MESSAGE=72 SF_SEND_MESSAGE=72
SF_BLITTER=73 SF_BLITTER=73
SF_NETWORK_DEVICE=74 SF_NETWORK_GET=74
SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_COUNT=255 ; get number of active network devices
SSF_DEVICE_TYPE=0 SSF_DEVICE_TYPE=0
SSF_DEVICE_NAME=1 SSF_DEVICE_NAME=1
@@ -250,7 +257,7 @@ SF_NETWORK_SOCKET=75
SSF_RECEIVE=7 SSF_RECEIVE=7
SSF_SET_OPTIONS=8 SSF_SET_OPTIONS=8
SSF_GET_OPTIONS=9 SSF_GET_OPTIONS=9
SSF_SOCKET_PAIR=10 SSF_GET_PAIR=10
SF_NETWORK_PROTOCOL=76 SF_NETWORK_PROTOCOL=76
SSF_ETHERNET_READ_MAC=0 SSF_ETHERNET_READ_MAC=0
SSF_IP4_PACKETS_SENT=10000h SSF_IP4_PACKETS_SENT=10000h
@@ -283,6 +290,9 @@ SF_FUTEX=77
SSF_DESTROY=1 SSF_DESTROY=1
SSF_WAIT=2 SSF_WAIT=2
SSF_WAKE=3 SSF_WAKE=3
SSF_FILE_READ=10
SSF_FILE_WRITE=11
SSF_PIPE_CREATE=13
; File system errors: ; File system errors:
FSERR_SUCCESS=0 FSERR_SUCCESS=0