From 8fb3bb76c671287152c1d14fff6c0898b6dd438d Mon Sep 17 00:00:00 2001 From: Burer Date: Thu, 1 Jan 2026 15:56:42 +0200 Subject: [PATCH 1/9] system/docs: align docs with actual kernel, add constants for SF 51 --- kernel/trunk/docs/sysfuncr.txt | 232 ++++++++++++++--------- kernel/trunk/docs/sysfuncs.txt | 263 +++++++++++++++++++++------ programs/KOSfuncs.inc | 26 ++- programs/develop/koldbg/kosfuncs.inc | 26 ++- 4 files changed, 386 insertions(+), 161 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 2c4230a5d..47c5d6b3d 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -1985,7 +1985,7 @@ path db 'HD0/1',0 подфункция 2 функции 15. ---------------------- Константы для регистров: ---------------------- - eax - SF_BACKGROUND_GET_RECT (39) + eax - SF_BACKGROUND_GET (39) ====================================================================== == Функция 39, подфункция 3 - получить прямоугольную область фона = ====================================================================== @@ -2169,7 +2169,7 @@ path db 'HD0/1',0 * ebx = 2 - номер подфункции * ecx = указатель на таблицу цветов * edx = размер таблицы цветов - (должен быть 40 байт для будущей совместимости) + (до 192 байт; 40 байт для базовой структуры) Формат таблицы цветов указан в описании подфункции 3. Возвращаемое значение: * функция не возвращает значения @@ -2201,16 +2201,16 @@ path db 'HD0/1',0 * функция не возвращает значения Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB - * +0: dword: none - зарезервировано - * +4: dword: none - зарезервировано + * +0: dword: frame + * +4: dword: grab * +8: dword: work_dark - темный цвет рабочей области для придания объемна элементам интерфейса * +12 = +0xC: dword: work_light - светлый цвет рабочей области для придания объемна элементам интерфейса * +16 = +0x10: dword: grab_text - цвет текста на заголовке * +20 = +0x14: dword: work - цвет рабочей области - * +24 = +0x18: dword: button - цвет кнопки в рабочей области - * +28 = +0x1C: dword: button_text - цвет текста на кнопке + * +24 = +0x18: dword: work_button - цвет кнопки в рабочей области + * +28 = +0x1C: dword: work_button_text - цвет текста на кнопке в рабочей области * +32 = +0x20: dword: work_text - цвет текста в рабочей области * +36 = +0x24: dword: graph - цвет графики в рабочей области @@ -2220,8 +2220,10 @@ dword-значение цвета 0x00RRGGBB sc system_colors ; объявление переменной ... ; где-то надо вызвать ; описываемую функцию с ecx=sc - mov ecx, [sc.button_text] ; читаем цвет текста + mov ecx, [sc.work_button_text] ; читаем цвет текста ; на кнопке в рабочей области + * Таблица может быть больше (до 192 байт); дополнительные поля + копируются как есть и интерпретируются скинами. * Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы. @@ -2505,16 +2507,18 @@ dword-значение цвета 0x00RRGGBB * иначе eax = TID - идентификатор потока ---------------------- Константы для регистров: ---------------------- - eax - SF_CREATE_THREAD (51) + eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (51) + ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2), + SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4) ====================================================================== ===================== Функция 51, подфункция 2 ======================= -=================== Получить номер слота потока ====================== +============= Получить номер слота текущего потока =================== ====================================================================== Параметры: * eax = 51 - номер функции * ebx = 2 - номер подфункции Возвращаемое значение: - * eax = номер слота потока + * eax = номер слота текущего потока ====================================================================== ===================== Функция 51, подфункция 3 ======================= @@ -3358,66 +3362,66 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ebx - SSF_MEM_FREE (13) ====================================================================== ====================== Функция 68, подфункция 14 ===================== -====== Ожидать получения сигнала от других приложений/драйверов. ===== +========== Получить событие ядра (обертка GetEvent). ========== ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 14 - номер подфункции - * ecx = указатель на буфер для информации (24 байта) + * ecx = указатель на буфер данных (6 dword = 24 байта) Возвращаемое значение: - * eax разрушается + * eax = дескриптор события * буфер, на который указывает ecx, содержит следующую информацию: - * +0: dword: идентификатор последующих данных сигнала - * +4: данные принятого сигнала (20 байт), формат которых - определяется первым dword-ом + * +0: dword: EVENT.code (идентификатор последующих данных) + * +4: 5 dword: EVENT.data, формат зависит от EVENT.code +Замечания: + * Бесконечно ожидает любое событие в очереди событий текущего потока. + * Сбрасывает байт приоритета в буфере. ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) ebx - SSF_WAIT_SIGNAL (14) ====================================================================== -=========== Функция 68, подфункция 16 - загрузить драйвер. =========== +=========== Функция 68, подфункция 16 - получить сервис. =========== ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 16 - номер подфункции - * ecx = указатель на ASCIIZ-строку с именем драйвера + * ecx = указатель на ASCIIZ-строку с именем сервиса Возвращаемое значение: - * eax = 0 - неудача - * иначе eax = хэндл драйвера + * eax = указатель на структуру SRV, 0 при ошибке Замечания: - * Если драйвер ещё не загружен, он загружается; - если драйвер уже загружен, ничего не меняется. - * Имя драйвера чувствительно к регистру символов. + * Если сервис ещё не загружен, ядро пытается загрузить его из + /sys/drivers/.sys. + * Имя сервиса чувствительно к регистру символов. Максимальная длина имени - 16 символов, включая завершающий нулевой символ, остальные символы игнорируются. - * Драйвер с именем ABC загружается из файла /sys/drivers/ABC.sys. ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_LOAD_DRIVER (16) + ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) ====================================================================== -========== Функция 68, подфункция 17 - управление драйвером. ========= +========== Функция 68, подфункция 17 - вызвать сервис. ========= ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 17 - номер подфункции - * ecx = указатель на управляющую структуру: - * +0: dword: хэндл драйвера - * +4: dword: код функции драйвера - * +8: dword: указатель на входные данные - * +12 = +0xC: dword: размер входных данных - * +16 = +0x10: dword: указатель на выходные данные - * +20 = +0x14: dword: размер выходных данных + * ecx = указатель на структуру IOCTL: + * +0: dword: хэндл сервиса (указатель на SRV) + * +4: dword: io_code + * +8: dword: указатель на входные данные + * +12: dword: размер входных данных + * +16: dword: указатель на выходные данные + * +20: dword: размер выходных данных Возвращаемое значение: - * eax = определяется драйвером + * eax = значение, возвращаемое обработчиком сервиса, -1 при ошибке Замечания: * Коды функций и структура входных/выходных данных - определяются драйвером. - * Предварительно должен быть получен хэндл драйвера подфункцией 16. + определяются сервисом. + * Хэндл сервиса можно получить подфункцией 16. ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_CONTROL_DRIVER (17) + ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17) ====================================================================== == Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. == ====================================================================== @@ -3482,7 +3486,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 68 - номер функции * ebx = 21 - номер подфункции - * ecx = указатель на ASCIIZ-строку с именем драйвера + * ecx = указатель на ASCIIZ-строку с путем к файлу драйвера * edx = указатель на командную строку Возвращаемое значение: * eax = 0 - неудача @@ -3674,22 +3678,40 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * функция загружает и, при необходимости, распаковывает файл (kunpack) ====================================================================== -======== Функция 68, подфункция 29 - allocate ring memory. ========= +======== Функция 68, подфункция 29 - выделить кольцевую память. ========= ====================================================================== -Parameters: - * eax = 68 - function number - * ebx = 29 - subfunction number - * ecx = required size in bytes -Returned value: - * eax = 0 - failed - * eax = pointer to the allocated ring -Remarks: - * The requested size must be an exact multiple of pagesize (4 Kb) - * 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. +Параметры: + * eax = 68 - номер функции + * ebx = 29 - номер подфункции + * ecx = требуемый размер в байтах +Возвращаемое значение: + * eax = 0 - неудача + * eax = указатель на выделенное кольцо +Замечания: + * Запрошенный размер должен быть кратен размеру страницы (4 Кб). + * Память выделяется так, что доступ за пределами буфера приводит + к чтению/записи в его начало. +====================================================================== +=========== Функция 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 - 30 + ====================================================================== ======== Функция 68, подфункция 31 - получить данные драйвера. ======= ====================================================================== @@ -4516,17 +4538,17 @@ Remarks: ---------------------- Константы для регистров: ---------------------- eax - SF_BLITTER (73) ====================================================================== -=================== Функция 74, подфункция -1 ======================== +=================== Функция 74, подфункция 255 ======================== =========== Получить количество активных сетевых устройств. ========== ====================================================================== Параметры: * eax = 74 - номер функции - * bl = -1 - номер подфункции + * bl = 255 - номер подфункции Возвращаемое значение: * eax = количество активных сетевых устройств ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_COUNT (255) ====================================================================== ==== Функция 74, подфункция 0, Получить тип сетевого устройства. ===== @@ -4539,7 +4561,7 @@ Remarks: * eax = тип устройства ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_TYPE (0) ====================================================================== ==== Функция 74, подфункция 1, Получить имя сетевого устройства. ===== @@ -4554,7 +4576,7 @@ Remarks: * В случае успеха в буфер записывается имя сетевого устройства ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_NAME (1) ====================================================================== ======= Функция 74, подфункция 2, Сброс сетевого устройства. ========= @@ -4567,7 +4589,7 @@ Remarks: * eax = -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RESET_DEVICE (2) ====================================================================== ====== Функция 74, подфункция 3, Остановить сетевое устройство. ====== @@ -4580,7 +4602,7 @@ Remarks: * eax = -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_STOP_DEVICE (3) ====================================================================== ===== Функция 74, подфункция 4, Получить указатель на устройство ===== @@ -4593,7 +4615,7 @@ Remarks: * eax = указатель, -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_POINTER (4) ====================================================================== === Функция 74, подфункция 6, Получить количество посланых пакетов === @@ -4606,7 +4628,7 @@ Remarks: * eax = количество с момента старта устройства, -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_COUNT (6) ====================================================================== === Функция 74, подфункция 7, Получить количество принятых пакетов === @@ -4619,7 +4641,7 @@ Remarks: * eax = количество с момента старта устройства, -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_COUNT (7) ====================================================================== ==== Функция 74, подфункция 8, Получить количество посланых байт. ==== @@ -4633,7 +4655,7 @@ Remarks: * ebx = старшая часть ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_BYTE_COUNT (8) ====================================================================== ==== Функция 74, подфункция 9, Получить количество принятых байт. ==== @@ -4647,7 +4669,7 @@ Remarks: * ebx = старшая часть ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_BYTE_COUNT (9) ====================================================================== ======= Функция 74, подфункция 10, Получить статус соединения. ======= @@ -4668,7 +4690,7 @@ Remarks: 10b = флаг полного дуплекса ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_LINK_STATUS (10) ====================================================================== == Функция 74.11, Получить количество пакетов переданных с ошибкой. == @@ -4682,7 +4704,7 @@ Remarks: устройства, -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_ERROR_COUNT (11) ====================================================================== === Функция 74.12, Получить число пакетов отброшенных при отправке. == @@ -4696,7 +4718,7 @@ Remarks: -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_DROP_COUNT (12) ====================================================================== === Функция 74.13, Получить число пакетов утерянных при отправке. ==== @@ -4710,7 +4732,7 @@ Remarks: -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_MISS_COUNT (13) ====================================================================== @@ -4725,7 +4747,7 @@ Remarks: устройства, -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_ERROR_COUNT (14) ====================================================================== == Функция 74.15, Получить число пакетов отброшенных при получении. == @@ -4739,8 +4761,8 @@ Remarks: -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) - bl - SSF_RX_PACKET_DROP_COUNT (12) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + bl - SSF_RX_PACKET_DROP_COUNT (15) ====================================================================== === Функция 74.16, Получить число пакетов утерянных при получении. === ====================================================================== @@ -4753,7 +4775,7 @@ Remarks: -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_MISS_COUNT (16) ====================================================================== ============== Функция 75, подфункция 0, Открыть сокет. ============== @@ -4945,7 +4967,7 @@ Remarks: ---------------------- Константы для регистров: ---------------------- eax - SF_NETWORK_SOCKET (75) - bl - SSF_GET_PAIR (10) + bl - SSF_GET_PAIR (10) / SSF_SOCKET_PAIR (10) ====================================================================== =============== Функция 76, Сетевые опции и статистика. ============== ====================================================================== @@ -4990,6 +5012,32 @@ Remarks: ---------------------- Константы для регистров: ---------------------- 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, Создать фьютекс. ============= ====================================================================== @@ -5026,7 +5074,7 @@ Remarks: * ebx = 2 - номер подфункции * ecx = дескриптор фьютекса * edx = контрольное значение - * esi = таймаут в сотых секунды, 0 - ждать бесконечно + * esi = таймаут в тиках системного таймера, 0 - ждать бесконечно Возвращаемое значение: * eax = 0 - успешно, -1 - таймаут, -2 - контрольное значение не соответствует @@ -5049,35 +5097,45 @@ Remarks: eax - SF_FUTEX (77) ebx - SSF_WAKE (3) ====================================================================== -======= Функция 77, подфункция 10, Прочитать из файла в буфер. ======= +Замечания: + * Подфункции 4-7 зарезервированы и сейчас возвращают -1. + * Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF. +====================================================================== +======= Функция 77, подфункция 10, Прочитать из pipe. ======= ====================================================================== Параметры: * eax = 77 - номер функции * ebx = 10 - номер подфункции - * ecx = дескриптор файла + * ecx = дескриптор pipe * edx = указатель на буфер, куда читать * esi = сколько байт прочитать Возвращаемое значение: - * eax = количество прочитанных байт + * eax = количество прочитанных байт, 0 при EOF, + или -EBADF при ошибке +Замечания: + * Поддерживаются только pipe-дескрипторы. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - ... + ebx - 10 ====================================================================== -======== Функция 77, подфункция 11, Записать из буфера в файл. ======= +======== Функция 77, подфункция 11, Записать в pipe. ======= ====================================================================== Параметры: * eax = 77 - номер функции * ebx = 11 - номер подфункции - * ecx = дескриптор файла - * edx = указатель на буфер, откуда брать данные для записи + * ecx = дескриптор pipe + * edx = указатель на буфер, откуда брать данные для записи * esi = сколько байт записать Возвращаемое значение: - * eax = количество записанных байт + * eax = количество записанных байт, -EBADF при ошибке, + -EPIPE если нет читателей +Замечания: + * Поддерживаются только pipe-дескрипторы. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - ... + ebx - 11 ====================================================================== =========== Функция 77, подфункция 13, Создать новый pipe. =========== ====================================================================== @@ -5089,15 +5147,15 @@ Remarks: * eax = 77 - номер функции * ebx = 13 - номер подфункции * ecx = адрес pipefd - * edx = флаги. На данный момент если поднят O_CLOEXEC (0x40000), то - сисфункция завершится с ошибкой. Поэтому в качестве флагов можно - передать просто 0. + * edx = флаги. Разрешен только O_CLOEXEC (0x40000). + Любые другие биты приводят к -EINVAL. Возвращаемое значение: - * eax = 0 если успех, иначе ошибка. + * eax = 0 если успех, иначе отрицательный код ошибки: + -EFAULT, -EINVAL, -EMFILE, -ENFILE. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - ... + ebx - 13 ====================================================================== ========== Функция -1 - завершить выполнение потока/процесса ========= ====================================================================== diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 504892967..e3711f342 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -1972,7 +1972,7 @@ Remarks: subfunction 2 of function 15. ---------------------- Constants for registers: ---------------------- - eax - SF_BACKGROUND_GET_RECT (39) + eax - SF_BACKGROUND_GET (39) ====================================================================== == Function 39, subfunction 3 - get rect from the background image. = ====================================================================== @@ -2179,21 +2179,21 @@ Parameters: * ecx = pointer to the buffer with size edx bytes, where table will be written * edx = size of color table - (must be 40 bytes for future compatibility) + (up to 192 bytes; 40 bytes for base structure) Returned value: * function does not return value Format of the color table: each item is dword-value for color 0x00RRGGBB - * +0: dword: none - reserved - * +4: dword: none - reserved + * +0: dword: frame + * +4: dword: grab * +8: dword: work_dark - dark color of working area used to give a user 3D-like feelings about interface elements * +12 = +0xC: dword: work_light - light color of working area used to give a user 3D-like feelings about interface elements * +16 = +0x10: dword: grab_text - color of text on header * +20 = +0x14: dword: work - color of working area - * +24 = +0x18: dword: button - color of button in working area - * +28 = +0x1C: dword: button_text - color of text on button + * +24 = +0x18: dword: work_button - color of button in working area + * +28 = +0x1C: dword: work_button_text - color of text on button in working area * +32 = +0x20: dword: work_text - color of text in working area * +36 = +0x24: dword: graph - color of graphics in working area @@ -2206,6 +2206,8 @@ Remarks: ; this function with ecx=sc mov ecx, [sc.work_button_text] ; read text color on ; 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. For usage program must simply at calls to drawing functions select color taken from the table. @@ -2482,7 +2484,7 @@ Remarks: ====================================================================== Parameters: * eax = 51 - function number - * ebx = 1 - unique subfunction + * ebx = 1 - subfunction number * ecx = address of thread entry point (starting eip) * edx = pointer to thread stack (starting esp) Returned value: @@ -2490,7 +2492,50 @@ Returned value: * otherwise eax = TID - thread identifier ---------------------- Constants for registers: ---------------------- - eax - SF_CREATE_THREAD (51) + eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (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 ====================== ============== Get the number of slots in the clipboard. ============= @@ -3289,65 +3334,66 @@ Remarks: ebx - SSF_MEM_FREE (13) ====================================================================== ===================== Function 68, subfunction 14 ==================== -============ Wait for signal from another program/driver. ============ +================= Get kernel event (GetEvent wrapper). =============== ====================================================================== Parameters: * eax = 68 - function 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: + * eax = event handle * buffer pointed to by ecx contains the following information: - * +0: dword: identifier for following data of signal - * +4: dword: data of signal (20 bytes), format of which is defined - by the first dword + * +0: dword: EVENT.code (identifier of following data) + * +4: 5 dword: EVENT.data, format depends on EVENT.code +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: ---------------------- eax - SF_SYS_MISC (68) ebx - SSF_WAIT_SIGNAL (14) ====================================================================== -============= Function 68, subfunction 16 - load driver. ============= +============= Function 68, subfunction 16 - get service. ============= ====================================================================== Parameters: * eax = 68 - function number * ebx = 16 - subfunction number - * ecx = pointer to ASCIIZ-string with driver name + * ecx = pointer to ASCIIZ-string with service name Returned value: - * eax = 0 - failed - * otherwise eax = driver handle + * eax = pointer to SRV structure, 0 on error Remarks: - * If the driver was not loaded yet, it is loaded; - if the driver was loaded yet, nothing happens. - * Driver name is case-sensitive. + * If the service is not loaded yet, the kernel attempts to load it + from /sys/drivers/.sys. + * Service name is case-sensitive. Maximum length of the name is 16 characters, including terminating null character, the rest is ignored. - * Driver ABC is loaded from file /sys/drivers/ABC.sys. ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_LOAD_DRIVER (16) + ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) ====================================================================== -============ Function 68, subfunction 17 - driver control. =========== +============ Function 68, subfunction 17 - call service. ============= ====================================================================== Parameters: * eax = 68 - function number * ebx = 17 - subfunction number - * ecx = pointer to the control structure: - * +0: dword: handle of driver - * +4: dword: code of driver function - * +8: dword: pointer to input data - * +12 = +0xC: dword: size of input data - * +16 = +0x10: dword: pointer to output data - * +20 = +0x14: dword: size of output data + * ecx = pointer to the IOCTL structure: + * +0: dword: service handle (pointer to SRV) + * +4: dword: io_code + * +8: dword: pointer to input data + * +12: dword: size of input data + * +16: dword: pointer to output data + * +20: dword: size of output data Returned value: - * eax = determined by driver + * eax = value returned by the service handler, -1 on error Remarks: * Function codes and the structure of input/output data - are defined by driver. - * Previously one must obtain driver handle by subfunction 16. + are defined by the service. + * The service handle can be obtained by subfunction 16. ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_CONTROL_DRIVER (17) + ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17) ====================================================================== == Function 68, subfunction 18 - load DLL, specifying the encoding. == ====================================================================== @@ -3411,7 +3457,7 @@ Remarks: Parameters: * eax = 68 - function 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 Returned value: * eax = 0 - failed @@ -3620,6 +3666,25 @@ Remarks: eax - SF_SYS_MISC (68) ebx - SSF_MEM_ALLOC_RING (29) +====================================================================== +=========== 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: ---------------------- + eax - SF_SYS_MISC (68) + ebx - 30 + ====================================================================== =========== Function 68, subfunction 31 - get driver data. =========== ====================================================================== @@ -4451,7 +4516,7 @@ Returned value: * eax = number of active network devices ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_COUNT (255) ====================================================================== ======== Function 74, Subfunction 0, Get network device type. ======== @@ -4464,7 +4529,7 @@ Returned value: * eax = device type number, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_TYPE (0) ====================================================================== ======== Function 74, Subfunction 1, Get network device name. ======== @@ -4479,7 +4544,7 @@ Returned value: * The network device name is written into the buffer, on success ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_NAME (1) ====================================================================== ========= Function 74, Subfunction 2, Reset network device. ========== @@ -4492,7 +4557,7 @@ Returned value: * eax = -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RESET_DEVICE (2) ====================================================================== ========== Function 74, Subfunction 3, Stop network device. ========== @@ -4505,7 +4570,7 @@ Returned value: * eax = -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_STOP_DEVICE (3) ====================================================================== =========== Function 74, Subfunction 4, Get device pointer. ========== @@ -4518,7 +4583,7 @@ Returned value: * eax = device pointer, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_DEVICE_POINTER (4) ====================================================================== ========= Function 74, Subfunction 6, Get packet TX counter. ========= @@ -4531,7 +4596,7 @@ Returned value: * eax = Number of packets sent since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_COUNT (6) ====================================================================== ========= Function 74, Subfunction 7, Get packet RX counter. ========= @@ -4544,7 +4609,7 @@ Returned value: * eax = Number of packets received since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_COUNT (7) ====================================================================== ========== Function 74, Subfunction 8, Get TX byte counter. ========== @@ -4559,7 +4624,7 @@ Returned value: * ebx = Number of bytes sent since device start (higher dword) ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_BYTE_COUNT (8) ====================================================================== ========== Function 74, Subfunction 9, Get RX byte counter. ========== @@ -4574,7 +4639,7 @@ Returned value: * ebx = Number of bytes received since device start (higher dword) ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_BYTE_COUNT (9) ====================================================================== ========== Function 74, Subfunction 10, Get link status. ============= @@ -4595,7 +4660,7 @@ Returned value: ETH_LINK_1G = 1100b ; gigabit ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_LINK_STATUS (10) ====================================================================== ==== Function 74, Subfunction 11, Get TX error packets counter. ====== @@ -4605,10 +4670,10 @@ Parameters: * bl = 11 - subfunction number * bh = device number 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: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_ERROR_COUNT (11) ====================================================================== === Function 74, Subfunction 12, Get TX dropped packets counter. ===== @@ -4621,7 +4686,7 @@ Returned value: * eax = Number of dropped packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_DROP_COUNT (12) ====================================================================== ==== Function 74, Subfunction 13, Get TX missed packets counter. ===== @@ -4634,7 +4699,7 @@ Returned value: * eax = Number of missed packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_MISS_COUNT (13) ====================================================================== ==== Function 74, Subfunction 14, Get RX error packets counter. ====== @@ -4647,7 +4712,7 @@ Returned value: * eax = Number of erroneous packets received since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_ERROR_COUNT (14) ====================================================================== === Function 74, Subfunction 15, Get RX dropped packets counter. ===== @@ -4660,8 +4725,8 @@ Returned value: * eax = Number of dropped packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) - bl - SSF_RX_PACKET_DROP_COUNT (12) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + bl - SSF_RX_PACKET_DROP_COUNT (15) ====================================================================== ==== Function 74, Subfunction 16, Get RX missed packets counter. ===== ====================================================================== @@ -4673,7 +4738,7 @@ Returned value: * eax = Number of missed packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) + eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_MISS_COUNT (16) ====================================================================== ============== Function 75, Subfunction 0, Open socket. ============== @@ -4867,7 +4932,7 @@ Returned value: ---------------------- Constants for registers: ---------------------- eax - SF_NETWORK_SOCKET (75) - bl - SSF_GET_PAIR (10) + bl - SSF_GET_PAIR (10) / SSF_SOCKET_PAIR (10) ====================================================================== ============ Function 76, Network options and statistics. ============ ====================================================================== @@ -5174,6 +5239,32 @@ Returned value: ---------------------- Constants for registers: ---------------------- 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 =========== ====================================================================== @@ -5217,10 +5308,10 @@ Parameters: * esi = timeout in system ticks or 0 for infinity Returned value: * eax = 0 - successfull - -1 - timeout - -2 - futex dword does not have the same value as edx + -1 - timeout + -2 - futex dword does not have the same value as edx Remarks: - * This functionn tests that the value at the futex dword still + * This function 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 @@ -5248,6 +5339,62 @@ Remarks: eax - SF_FUTEX (77) 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. +====================================================================== +=========== Function 77, Subfunction 10, Read from pipe. ============ +====================================================================== +Parameters: + * eax = 77 - function number + * ebx = 10 - subfunction number + * ecx = pipe descriptor + * edx = pointer to destination buffer + * esi = number of bytes to read +Returned value: + * eax = number of bytes read, 0 on EOF, or -EBADF on error +Remarks: + * Only pipe descriptors are supported. + +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - 10 +====================================================================== +=========== Function 77, Subfunction 11, Write to pipe. ============= +====================================================================== +Parameters: + * eax = 77 - function number + * ebx = 11 - subfunction number + * ecx = pipe descriptor + * edx = pointer to source buffer + * esi = number of bytes to write +Returned value: + * eax = number of bytes written, -EBADF on error, -EPIPE if no readers +Remarks: + * Only pipe descriptors are supported. + +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - 11 +====================================================================== +========== Function 77, Subfunction 13, Create pipe. ================ +====================================================================== +Parameters: + * eax = 77 - function number + * ebx = 13 - subfunction number + * ecx = pointer to pipefd[2] array (two dword descriptors) + * edx = flags (only O_CLOEXEC is allowed) +Returned value: + * eax = 0 on success, or negative errno value on error: + -EFAULT, -EINVAL, -EMFILE, -ENFILE +Remarks: + * On success, pipefd[0] is a read descriptor and pipefd[1] is a + write descriptor. + +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - 13 +====================================================================== === Function 80 - file system interface with parameter of encoding === ====================================================================== Parameters: diff --git a/programs/KOSfuncs.inc b/programs/KOSfuncs.inc index 4c484ae25..b4f370018 100644 --- a/programs/KOSfuncs.inc +++ b/programs/KOSfuncs.inc @@ -70,11 +70,11 @@ SF_SYSTEM=18 SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows SSSF_GET_WB=1 SSSF_SET_WB=2 -SF_MIDI=20 - SSF_RESET=1 - SSF_OUTPUT=2 +SF_MIDI=20 ; deprecated/undefined in current kernel + SSF_RESET=1 ; deprecated + SSF_OUTPUT=2 ; deprecated SF_SYSTEM_SET=21 - SSF_MPU_MIDI_BASE=1 + SSF_MPU_MIDI_BASE=1 ; not used (reserved) SSF_KEYBOARD_LAYOUT=2 SSF_SYS_LANG=5 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_MODE_BG=4 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_DRAW_NUMBER=47 ; draw number to the window SF_STYLE_SETTINGS=48 @@ -132,6 +132,11 @@ SF_STYLE_SETTINGS=48 SF_APM=49 SF_SET_WINDOW_SHAPE=50 SF_CREATE_THREAD=51 +SF_THREAD_CONTROL=51 + SSF_CREATE_THREAD=1 + SSF_GET_CURR_THREAD_SLOT=2 + SSF_GET_THREAD_PRIORITY=3 + SSF_SET_THREAD_PRIORITY=4 SF_CLIPBOARD=54 SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard SSF_READ_CB=1 @@ -184,9 +189,11 @@ SF_SYS_MISC=68 SSF_HEAP_INIT=11 SSF_MEM_ALLOC=12 SSF_MEM_FREE=13 - SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver - SSF_LOAD_DRIVER=16 - SSF_CONTROL_DRIVER=17 + SSF_WAIT_SIGNAL=14 ; GetEvent wrapper (wait for kernel event) + SSF_GET_SERVICE=16 + SSF_CALL_SERVICE=17 + SSF_LOAD_DRIVER=16 ; alias (deprecated name) + SSF_CONTROL_DRIVER=17 ; alias (deprecated name) SSF_LOAD_DLL=19 SSF_MEM_REALLOC=20 SSF_LOAD_DRIVER_PE=21 @@ -196,6 +203,7 @@ SF_SYS_MISC=68 SSF_SET_EXCEPTION_STATE=25 SSF_MEM_FREE_EXT=26 SSF_LOAD_FILE=27 + SSF_MEM_ALLOC_RING=29 SF_DEBUG=69 SSF_SET_MESSAGE_AREA=0 SSF_GET_REGISTERS=1 @@ -222,6 +230,7 @@ SF_SET_CAPTION=71 SF_SEND_MESSAGE=72 SF_BLITTER=73 SF_NETWORK_DEVICE=74 +SF_NETWORK_GET=74 ; alias SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_TYPE=0 SSF_DEVICE_NAME=1 @@ -251,6 +260,7 @@ SF_NETWORK_SOCKET=75 SSF_SET_OPTIONS=8 SSF_GET_OPTIONS=9 SSF_SOCKET_PAIR=10 + SSF_GET_PAIR=10 ; alias SF_NETWORK_PROTOCOL=76 SSF_ETHERNET_READ_MAC=0 SSF_IP4_PACKETS_SENT=10000h diff --git a/programs/develop/koldbg/kosfuncs.inc b/programs/develop/koldbg/kosfuncs.inc index 4c484ae25..b4f370018 100644 --- a/programs/develop/koldbg/kosfuncs.inc +++ b/programs/develop/koldbg/kosfuncs.inc @@ -70,11 +70,11 @@ SF_SYSTEM=18 SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows SSSF_GET_WB=1 SSSF_SET_WB=2 -SF_MIDI=20 - SSF_RESET=1 - SSF_OUTPUT=2 +SF_MIDI=20 ; deprecated/undefined in current kernel + SSF_RESET=1 ; deprecated + SSF_OUTPUT=2 ; deprecated SF_SYSTEM_SET=21 - SSF_MPU_MIDI_BASE=1 + SSF_MPU_MIDI_BASE=1 ; not used (reserved) SSF_KEYBOARD_LAYOUT=2 SSF_SYS_LANG=5 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_MODE_BG=4 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_DRAW_NUMBER=47 ; draw number to the window SF_STYLE_SETTINGS=48 @@ -132,6 +132,11 @@ SF_STYLE_SETTINGS=48 SF_APM=49 SF_SET_WINDOW_SHAPE=50 SF_CREATE_THREAD=51 +SF_THREAD_CONTROL=51 + SSF_CREATE_THREAD=1 + SSF_GET_CURR_THREAD_SLOT=2 + SSF_GET_THREAD_PRIORITY=3 + SSF_SET_THREAD_PRIORITY=4 SF_CLIPBOARD=54 SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard SSF_READ_CB=1 @@ -184,9 +189,11 @@ SF_SYS_MISC=68 SSF_HEAP_INIT=11 SSF_MEM_ALLOC=12 SSF_MEM_FREE=13 - SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver - SSF_LOAD_DRIVER=16 - SSF_CONTROL_DRIVER=17 + SSF_WAIT_SIGNAL=14 ; GetEvent wrapper (wait for kernel event) + SSF_GET_SERVICE=16 + SSF_CALL_SERVICE=17 + SSF_LOAD_DRIVER=16 ; alias (deprecated name) + SSF_CONTROL_DRIVER=17 ; alias (deprecated name) SSF_LOAD_DLL=19 SSF_MEM_REALLOC=20 SSF_LOAD_DRIVER_PE=21 @@ -196,6 +203,7 @@ SF_SYS_MISC=68 SSF_SET_EXCEPTION_STATE=25 SSF_MEM_FREE_EXT=26 SSF_LOAD_FILE=27 + SSF_MEM_ALLOC_RING=29 SF_DEBUG=69 SSF_SET_MESSAGE_AREA=0 SSF_GET_REGISTERS=1 @@ -222,6 +230,7 @@ SF_SET_CAPTION=71 SF_SEND_MESSAGE=72 SF_BLITTER=73 SF_NETWORK_DEVICE=74 +SF_NETWORK_GET=74 ; alias SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_TYPE=0 SSF_DEVICE_NAME=1 @@ -251,6 +260,7 @@ SF_NETWORK_SOCKET=75 SSF_SET_OPTIONS=8 SSF_GET_OPTIONS=9 SSF_SOCKET_PAIR=10 + SSF_GET_PAIR=10 ; alias SF_NETWORK_PROTOCOL=76 SSF_ETHERNET_READ_MAC=0 SSF_IP4_PACKETS_SENT=10000h -- 2.49.1 From 5ed012b0d9dc0f18ea781d14c118e42e812ee94d Mon Sep 17 00:00:00 2001 From: Burer Date: Fri, 2 Jan 2026 14:33:50 +0200 Subject: [PATCH 2/9] system/docs: revert some old tweaks, add some new --- kernel/trunk/docs/sysfuncr.txt | 110 +++++++++++++++++++-------------- kernel/trunk/docs/sysfuncs.txt | 60 +++++++----------- 2 files changed, 84 insertions(+), 86 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 47c5d6b3d..83e6c806a 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -2217,11 +2217,10 @@ dword-значение цвета 0x00RRGGBB Замечания: * Структура таблицы цветов описана в стандартном включаемом файле macros.inc под названием system_colors; например, можно писать: - sc system_colors ; объявление переменной - ... ; где-то надо вызвать - ; описываемую функцию с ecx=sc - mov ecx, [sc.work_button_text] ; читаем цвет текста - ; на кнопке в рабочей области + sc system_colors ; объявление переменной + ... ; вызов описываемой функции с ecx = sc + mov ecx, [sc.work_button_text] ; устанавливаем цвет текста + ; на кнопке в рабочей области * Таблица может быть больше (до 192 байт); дополнительные поля копируются как есть и интерпретируются скинами. * Использование/неиспользование этих цветов - дело исключительно @@ -2493,6 +2492,7 @@ dword-значение цвета 0x00RRGGBB ---------------------- Константы для регистров: ---------------------- eax - SF_SET_WINDOW_SHAPE (50) + ====================================================================== ===================== Функция 51, подфункция 1 ======================= ========================== Создать поток ============================= @@ -2510,6 +2510,7 @@ dword-значение цвета 0x00RRGGBB eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (51) ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2), SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4) + ====================================================================== ===================== Функция 51, подфункция 2 ======================= ============= Получить номер слота текущего потока =================== @@ -2759,10 +2760,10 @@ IPC применяется для посылок сообщений от одн Программе доступны данные графического экрана (область памяти, которая собственно и отображает содержимое экрана) напрямую без вызовов системных функций через селектор gs: - mov eax, [gs:0] + mov eax, [gs:0] поместит в eax первый dword буфера, содержащий информацию о цвете левой верхней точки (и, возможно, цвета нескольких следующих). - mov [gs:0], eax + mov [gs:0], eax при работе в режимах VESA c LFB установит цвет левой верхней точки (и возможно, цвета нескольких следующих). @@ -3360,19 +3361,21 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) ebx - SSF_MEM_FREE (13) + ====================================================================== ====================== Функция 68, подфункция 14 ===================== -========== Получить событие ядра (обертка GetEvent). ========== +====== Ожидать получения сигнала от других приложений/драйверов. ===== ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 14 - номер подфункции - * ecx = указатель на буфер данных (6 dword = 24 байта) + * ecx = указатель на буфер для информации (24 байта) Возвращаемое значение: - * eax = дескриптор события + * eax разрушается * буфер, на который указывает ecx, содержит следующую информацию: - * +0: dword: EVENT.code (идентификатор последующих данных) - * +4: 5 dword: EVENT.data, формат зависит от EVENT.code + * +0: dword: идентификатор последующих данных сигнала + * +4: 5 dword: данные принятого сигнала, формат которых + определяется первым dword-ом Замечания: * Бесконечно ожидает любое событие в очереди событий текущего потока. * Сбрасывает байт приоритета в буфере. @@ -3380,48 +3383,54 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) ebx - SSF_WAIT_SIGNAL (14) + ====================================================================== -=========== Функция 68, подфункция 16 - получить сервис. =========== +=========== Функция 68, подфункция 16 - загрузить драйвер. =========== ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 16 - номер подфункции - * ecx = указатель на ASCIIZ-строку с именем сервиса + * ecx = указатель на ASCIIZ-строку с именем драйвера Возвращаемое значение: - * eax = указатель на структуру SRV, 0 при ошибке + * eax = хэндл драйвера + 0 при ошибке Замечания: - * Если сервис ещё не загружен, ядро пытается загрузить его из - /sys/drivers/.sys. - * Имя сервиса чувствительно к регистру символов. + * Если драйвер ещё не загружен, он загружается; + если драйвер уже загружен, ничего не меняется. + * Имя драйвера чувствительно к регистру символов. Максимальная длина имени - 16 символов, включая завершающий нулевой символ, остальные символы игнорируются. + * Драйвер с именем "ABC" загружается из файла /sys/drivers/ABC.sys. ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) + ebx - SSF_LOAD_DRIVER (16) / SSF_GET_SERVICE (16) + ====================================================================== -========== Функция 68, подфункция 17 - вызвать сервис. ========= +========== Функция 68, подфункция 17 - управление драйвером. ========= ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 17 - номер подфункции - * ecx = указатель на структуру IOCTL: - * +0: dword: хэндл сервиса (указатель на SRV) - * +4: dword: io_code - * +8: dword: указатель на входные данные - * +12: dword: размер входных данных - * +16: dword: указатель на выходные данные - * +20: dword: размер выходных данных + * ecx = указатель на управляющую структуру: + * +0: dword: хэндл драйвера + * +4: dword: код функции драйвера + * +8: dword: указатель на входные данные + * +12 = +0x0C: dword: размер входных данных + * +16 = +0x10: dword: указатель на выходные данные + * +20 = +0x14: dword: размер выходных данных Возвращаемое значение: - * eax = значение, возвращаемое обработчиком сервиса, -1 при ошибке + * eax = определяется драйвером + -1 при ошибке Замечания: * Коды функций и структура входных/выходных данных - определяются сервисом. - * Хэндл сервиса можно получить подфункцией 16. + определяются драйвером. + * Хэндл драйвера необходимо предварительно получить подфункцией 16. ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17) + ebx - SSF_CONTROL_DRIVER (17) / SSF_CALL_SERVICE (17) + ====================================================================== == Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. == ====================================================================== @@ -3678,7 +3687,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * функция загружает и, при необходимости, распаковывает файл (kunpack) ====================================================================== -======== Функция 68, подфункция 29 - выделить кольцевую память. ========= +======= Функция 68, подфункция 29 - выделить кольцевую память. ======= ====================================================================== Параметры: * eax = 68 - номер функции @@ -3810,7 +3819,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); и при поступлении нового сообщения система будет ждать. Для синхронизации обрамляйте всю работу с буфером операциями блокировки/разблокировки - neg [bufsize] + neg [bufsize] * Данные в буфере трактуются как массив элементов переменной длины - сообщений. Формат сообщения указан в общем описании. @@ -4693,7 +4702,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_LINK_STATUS (10) ====================================================================== -== Функция 74.11, Получить количество пакетов переданных с ошибкой. == +== Функция 74.11, Получить количество пакетов переданных с ошибкой. == ====================================================================== Параметры: * eax = 74 - номер функции @@ -4707,7 +4716,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_ERROR_COUNT (11) ====================================================================== -=== Функция 74.12, Получить число пакетов отброшенных при отправке. == +=== Функция 74.12, Получить число пакетов отброшенных при отправке. == ====================================================================== Параметры: * eax = 74 - номер функции @@ -4721,7 +4730,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_DROP_COUNT (12) ====================================================================== -=== Функция 74.13, Получить число пакетов утерянных при отправке. ==== +=== Функция 74.13, Получить число пакетов утерянных при отправке. ==== ====================================================================== Параметры: * eax = 74 - номер функции @@ -4736,7 +4745,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); bl - SSF_TX_PACKET_MISS_COUNT (13) ====================================================================== -==== Функция 74.14, Получить число пакетов полученных с ошибкой. ===== +==== Функция 74.14, Получить число пакетов полученных с ошибкой. ===== ====================================================================== Параметры: * eax = 74 - номер функции @@ -4745,12 +4754,13 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Возвращаемое значение: * eax = число пакетов, полученных с ошибкой с момента запуска устройства, -1 при ошибке - + ---------------------- Константы для регистров: ---------------------- eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_ERROR_COUNT (14) + ====================================================================== -== Функция 74.15, Получить число пакетов отброшенных при получении. == +== Функция 74.15, Получить число пакетов отброшенных при получении. == ====================================================================== Параметры: * eax = 74 - номер функции @@ -4764,7 +4774,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_DROP_COUNT (15) ====================================================================== -=== Функция 74.16, Получить число пакетов утерянных при получении. === +=== Функция 74.16, Получить число пакетов утерянных при получении. === ====================================================================== Параметры: * eax = 74 - номер функции @@ -5074,10 +5084,11 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * ebx = 2 - номер подфункции * ecx = дескриптор фьютекса * edx = контрольное значение - * esi = таймаут в тиках системного таймера, 0 - ждать бесконечно + * esi = таймаут в сотых секунды, 0 - ждать бесконечно Возвращаемое значение: - * eax = 0 - успешно, -1 - таймаут, - -2 - контрольное значение не соответствует + * eax = 0 - успешно, + -1 - таймаут, + -2 - контрольное значение не соответствует ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) @@ -5118,24 +5129,25 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) ebx - 10 + ====================================================================== -======== Функция 77, подфункция 11, Записать в pipe. ======= +======== Функция 77, подфункция 11, Записать из буфера в файл. ======= ====================================================================== Параметры: * eax = 77 - номер функции * ebx = 11 - номер подфункции - * ecx = дескриптор pipe + * ecx = дескриптор файла * edx = указатель на буфер, откуда брать данные для записи * esi = сколько байт записать Возвращаемое значение: - * eax = количество записанных байт, -EBADF при ошибке, + * eax = количество записанных байт + -EBADF при ошибке -EPIPE если нет читателей -Замечания: - * Поддерживаются только pipe-дескрипторы. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) ebx - 11 + ====================================================================== =========== Функция 77, подфункция 13, Создать новый pipe. =========== ====================================================================== @@ -5156,6 +5168,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) ebx - 13 + ====================================================================== ========== Функция -1 - завершить выполнение потока/процесса ========= ====================================================================== @@ -5173,6 +5186,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_TERMINATE_PROCESS (-1) + ====================================================================== === Функция 80 - работа с файловой системой с указанием кодировки. === ====================================================================== diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index e3711f342..41ab93445 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -2179,7 +2179,7 @@ Parameters: * ecx = pointer to the buffer with size edx bytes, where table will be written * edx = size of color table - (up to 192 bytes; 40 bytes for base structure) + (must be 40 bytes for future compatibility) Returned value: * function does not return value Format of the color table: @@ -2480,7 +2480,7 @@ Remarks: ---------------------- Constants for registers: ---------------------- eax - SF_SET_WINDOW_SHAPE (50) ====================================================================== -==================== Function 51 - create thread. ==================== +============= Function 51, subfunction 1 - create thread. ============ ====================================================================== Parameters: * eax = 51 - function number @@ -3334,14 +3334,14 @@ Remarks: ebx - SSF_MEM_FREE (13) ====================================================================== ===================== Function 68, subfunction 14 ==================== -================= Get kernel event (GetEvent wrapper). =============== +==== Wait for a signal from other applications/drivers. ============== ====================================================================== Parameters: * eax = 68 - function number * ebx = 14 - subfunction number * ecx = pointer to data buffer (6 dword = 24 bytes) Returned value: - * eax = event handle + * eax is destroyed * buffer pointed to by ecx contains the following information: * +0: dword: EVENT.code (identifier of following data) * +4: 5 dword: EVENT.data, format depends on EVENT.code @@ -3353,43 +3353,44 @@ Remarks: eax - SF_SYS_MISC (68) ebx - SSF_WAIT_SIGNAL (14) ====================================================================== -============= Function 68, subfunction 16 - get service. ============= +=========== Function 68, subfunction 16 - load driver. =============== ====================================================================== Parameters: * eax = 68 - function number * ebx = 16 - subfunction number - * ecx = pointer to ASCIIZ-string with service name + * ecx = pointer to ASCIIZ-string with driver name Returned value: - * eax = pointer to SRV structure, 0 on error + * eax = driver handle, 0 on error Remarks: - * If the service is not loaded yet, the kernel attempts to load it - from /sys/drivers/.sys. - * Service name is case-sensitive. + * If the driver is not loaded yet, it is loaded; + if the driver is already loaded, nothing changes. + * Driver name is case-sensitive. Maximum length of the name is 16 characters, including terminating null character, the rest is ignored. + * Driver with name "ABC" is loaded from /sys/drivers/ABC.sys. ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) ====================================================================== -============ Function 68, subfunction 17 - call service. ============= +========== Function 68, subfunction 17 - control driver. ============= ====================================================================== Parameters: * eax = 68 - function number * ebx = 17 - subfunction number - * ecx = pointer to the IOCTL structure: - * +0: dword: service handle (pointer to SRV) - * +4: dword: io_code + * ecx = pointer to the control structure: + * +0: dword: driver handle + * +4: dword: driver function code * +8: dword: pointer to input data * +12: dword: size of input data * +16: dword: pointer to output data * +20: dword: size of output data Returned value: - * eax = value returned by the service handler, -1 on error + * eax = determined by driver, -1 on error Remarks: * Function codes and the structure of input/output data - are defined by the service. - * The service handle can be obtained by subfunction 16. + are defined by the driver. + * Driver handle can be obtained by subfunction 16. ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) @@ -3662,10 +3663,6 @@ Remarks: write beyond the size of the allocated memory and will reach the beginning of the buffer again. ----------------------- Constants for registers: ---------------------- - eax - SF_SYS_MISC (68) - ebx - SSF_MEM_ALLOC_RING (29) - ====================================================================== =========== Function 68, subfunction 30 - unload driver. ============ ====================================================================== @@ -3898,7 +3895,7 @@ Remarks: eax - SF_DEBUG (69) 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: * eax = 69 - function number @@ -5274,10 +5271,6 @@ Parameters: * ecx = pointer to futex dword Returned value: * 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: ---------------------- eax - SF_FUTEX (77) @@ -5292,7 +5285,8 @@ Parameters: Returned value: * eax = 0 - successfull, -1 on error Remarks: - * The futex handle must have been created by subfunction 0 + * The kernel destroys the futexes automatically when the process + terminates. ---------------------- Constants for registers: ---------------------- eax - SF_FUTEX (77) @@ -5305,16 +5299,11 @@ Parameters: * ebx = 2 - subfunction number * ecx = futex handle * edx = control value - * esi = timeout in system ticks or 0 for infinity + * esi = timeout in hundredths of a second, 0 - wait forever Returned value: * eax = 0 - successfull -1 - timeout -2 - futex dword does not have the same value as edx -Remarks: - * This function 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: ---------------------- eax - SF_FUTEX (77) @@ -5330,11 +5319,6 @@ Parameters: Returned value: * 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: ---------------------- eax - SF_FUTEX (77) ebx - SSF_WAKE (3) -- 2.49.1 From 746808c462830f49c9f1b4ebfc79fdde07701c15 Mon Sep 17 00:00:00 2001 From: Burer Date: Sat, 10 Jan 2026 14:33:24 +0200 Subject: [PATCH 3/9] More docs tweaks and SF constants added --- kernel/trunk/docs/sysfuncr.txt | 29 +++++++++++++++------------ kernel/trunk/docs/sysfuncs.txt | 30 ++++++++++++++-------------- programs/KOSfuncs.inc | 5 +++++ programs/develop/koldbg/kosfuncs.inc | 21 +++++++++++-------- 4 files changed, 49 insertions(+), 36 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 83e6c806a..6a6b60000 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -3695,7 +3695,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * ecx = требуемый размер в байтах Возвращаемое значение: * eax = 0 - неудача - * eax = указатель на выделенное кольцо + * eax = указатель на выделенную кольцевую память Замечания: * Запрошенный размер должен быть кратен размеру страницы (4 Кб). * Память выделяется так, что доступ за пределами буфера приводит @@ -3719,7 +3719,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - 30 + ebx - SSF_UNLOAD_DRIVER (30) ====================================================================== ======== Функция 68, подфункция 31 - получить данные драйвера. ======= @@ -4547,12 +4547,12 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_BLITTER (73) ====================================================================== -=================== Функция 74, подфункция 255 ======================== +=================== Функция 74, подфункция -1 ======================== =========== Получить количество активных сетевых устройств. ========== ====================================================================== Параметры: * eax = 74 - номер функции - * bl = 255 - номер подфункции + * bl = -1 (или 255) - номер подфункции Возвращаемое значение: * eax = количество активных сетевых устройств @@ -4702,7 +4702,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_LINK_STATUS (10) ====================================================================== -== Функция 74.11, Получить количество пакетов переданных с ошибкой. == +== Функция 74.11, Получить количество пакетов переданных с ошибкой. == ====================================================================== Параметры: * eax = 74 - номер функции @@ -4716,7 +4716,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_ERROR_COUNT (11) ====================================================================== -=== Функция 74.12, Получить число пакетов отброшенных при отправке. == +=== Функция 74.12, Получить число пакетов отброшенных при отправке. == ====================================================================== Параметры: * eax = 74 - номер функции @@ -4730,7 +4730,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_TX_PACKET_DROP_COUNT (12) ====================================================================== -=== Функция 74.13, Получить число пакетов утерянных при отправке. ==== +=== Функция 74.13, Получить число пакетов утерянных при отправке. ==== ====================================================================== Параметры: * eax = 74 - номер функции @@ -4745,7 +4745,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); bl - SSF_TX_PACKET_MISS_COUNT (13) ====================================================================== -==== Функция 74.14, Получить число пакетов полученных с ошибкой. ===== +==== Функция 74.14, Получить число пакетов полученных с ошибкой. ===== ====================================================================== Параметры: * eax = 74 - номер функции @@ -4760,7 +4760,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); bl - SSF_RX_PACKET_ERROR_COUNT (14) ====================================================================== -== Функция 74.15, Получить число пакетов отброшенных при получении. == +== Функция 74.15, Получить число пакетов отброшенных при получении. == ====================================================================== Параметры: * eax = 74 - номер функции @@ -4774,7 +4774,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) bl - SSF_RX_PACKET_DROP_COUNT (15) ====================================================================== -=== Функция 74.16, Получить число пакетов утерянных при получении. === +=== Функция 74.16, Получить число пакетов утерянных при получении. === ====================================================================== Параметры: * eax = 74 - номер функции @@ -5128,7 +5128,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - 10 + ebx - SSF_PIPE_READ (10) ====================================================================== ======== Функция 77, подфункция 11, Записать из буфера в файл. ======= @@ -5146,7 +5146,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - 11 + ebx - SSF_PIPE_WRITE (11) ====================================================================== =========== Функция 77, подфункция 13, Создать новый pipe. =========== @@ -5164,10 +5164,13 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Возвращаемое значение: * eax = 0 если успех, иначе отрицательный код ошибки: -EFAULT, -EINVAL, -EMFILE, -ENFILE. +Примечания: + * В случае успеха pipefd[0] является дескриптором чтения, а pipefd[1] + — дескриптором записи. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - 13 + ebx - SSF_PIPE_CREATE (13) ====================================================================== ========== Функция -1 - завершить выполнение потока/процесса ========= diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 41ab93445..280732315 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -2480,7 +2480,7 @@ Remarks: ---------------------- Constants for registers: ---------------------- eax - SF_SET_WINDOW_SHAPE (50) ====================================================================== -============= Function 51, subfunction 1 - create thread. ============ +============= Function 51, subfunction 1 - create thread. ============ ====================================================================== Parameters: * eax = 51 - function number @@ -3678,9 +3678,9 @@ Returned value: Remarks: * The driver entry is called with DRV_EXIT before unloading. ----------------------- Constants for registers: ---------------------- - eax - SF_SYS_MISC (68) - ebx - 30 +---------------------- Constants for registers: ---------------------- + eax - SF_SYS_MISC (68) + ebx - SSF_UNLOAD_DRIVER (30) ====================================================================== =========== Function 68, subfunction 31 - get driver data. =========== @@ -3895,7 +3895,7 @@ Remarks: eax - SF_DEBUG (69) ebx - SSF_RESUME (5) ====================================================================== -== Function 69, subfunction 6 - read from memory of debugged process. == += Function 69, subfunction 6 - read from memory of debugged process. = ====================================================================== Parameters: * eax = 69 - function number @@ -5325,7 +5325,7 @@ Returned value: ====================================================================== Remarks: * Subfunctions 4-7 are reserved and currently return -1. - * Subfunctions 8, 9 and 12 are not implemented and return -EBADF. + * Subfunctions 8-9 and 12 are not implemented and return -EBADF. ====================================================================== =========== Function 77, Subfunction 10, Read from pipe. ============ ====================================================================== @@ -5340,9 +5340,9 @@ Returned value: Remarks: * Only pipe descriptors are supported. ----------------------- Constants for registers: ---------------------- - eax - SF_FUTEX (77) - ebx - 10 +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - SSF_PIPE_READ (10) ====================================================================== =========== Function 77, Subfunction 11, Write to pipe. ============= ====================================================================== @@ -5357,9 +5357,9 @@ Returned value: Remarks: * Only pipe descriptors are supported. ----------------------- Constants for registers: ---------------------- - eax - SF_FUTEX (77) - ebx - 11 +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - SSF_PIPE_WRITE (11) ====================================================================== ========== Function 77, Subfunction 13, Create pipe. ================ ====================================================================== @@ -5375,9 +5375,9 @@ Remarks: * On success, pipefd[0] is a read descriptor and pipefd[1] is a write descriptor. ----------------------- Constants for registers: ---------------------- - eax - SF_FUTEX (77) - ebx - 13 +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - SSF_PIPE_CREATE (13) ====================================================================== === Function 80 - file system interface with parameter of encoding === ====================================================================== diff --git a/programs/KOSfuncs.inc b/programs/KOSfuncs.inc index b4f370018..00e874e69 100644 --- a/programs/KOSfuncs.inc +++ b/programs/KOSfuncs.inc @@ -204,6 +204,8 @@ SF_SYS_MISC=68 SSF_MEM_FREE_EXT=26 SSF_LOAD_FILE=27 SSF_MEM_ALLOC_RING=29 + SSF_UNLOAD_DRIVER=30 + SSF_GET_DRIVER_DATA=31 SF_DEBUG=69 SSF_SET_MESSAGE_AREA=0 SSF_GET_REGISTERS=1 @@ -293,6 +295,9 @@ SF_FUTEX=77 SSF_DESTROY=1 SSF_WAIT=2 SSF_WAKE=3 + SSF_PIPE_READ=10 + SSF_PIPE_WRITE=11 + SSF_PIPE_CREATE=13 ; File system errors: FSERR_SUCCESS=0 diff --git a/programs/develop/koldbg/kosfuncs.inc b/programs/develop/koldbg/kosfuncs.inc index b4f370018..978eb613f 100644 --- a/programs/develop/koldbg/kosfuncs.inc +++ b/programs/develop/koldbg/kosfuncs.inc @@ -201,9 +201,11 @@ SF_SYS_MISC=68 SSF_MEM_CLOSE=23 SSF_SET_EXCEPTION_HANDLER=24 SSF_SET_EXCEPTION_STATE=25 - SSF_MEM_FREE_EXT=26 - SSF_LOAD_FILE=27 - SSF_MEM_ALLOC_RING=29 + SSF_MEM_FREE_EXT=26 + SSF_LOAD_FILE=27 + SSF_MEM_ALLOC_RING=29 + SSF_UNLOAD_DRIVER=30 + SSF_GET_DRIVER_DATA=31 SF_DEBUG=69 SSF_SET_MESSAGE_AREA=0 SSF_GET_REGISTERS=1 @@ -288,11 +290,14 @@ SF_NETWORK_PROTOCOL=76 SSF_ARP_DEL_ENTRY=50005h SSF_ARP_SEND_ANNOUNCE=50006h SSF_ARP_CONFLICTS_COUNT=50007h -SF_FUTEX=77 - SSF_CREATE=0 - SSF_DESTROY=1 - SSF_WAIT=2 - SSF_WAKE=3 +SF_FUTEX=77 + SSF_CREATE=0 + SSF_DESTROY=1 + SSF_WAIT=2 + SSF_WAKE=3 + SSF_PIPE_READ=10 + SSF_PIPE_WRITE=11 + SSF_PIPE_CREATE=13 ; File system errors: FSERR_SUCCESS=0 -- 2.49.1 From 1bd596dc0193404c82416a9cfaec8720b1150ca9 Mon Sep 17 00:00:00 2001 From: Burer Date: Sun, 11 Jan 2026 16:30:02 +0200 Subject: [PATCH 4/9] Remove unused alias, clarify constants --- kernel/trunk/docs/sysfuncr.txt | 36 ++++++++-------- kernel/trunk/docs/sysfuncs.txt | 64 ++++++++++++++-------------- programs/KOSfuncs.inc | 3 +- programs/develop/koldbg/kosfuncs.inc | 29 ++++++------- 4 files changed, 65 insertions(+), 67 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 6a6b60000..4c67a6d48 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -4557,8 +4557,8 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = количество активных сетевых устройств ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) - bl - SSF_DEVICE_COUNT (255) + eax - SF_NETWORK_GET (74) + bl - SSF_DEVICE_COUNT (-1 / 255) ====================================================================== ==== Функция 74, подфункция 0, Получить тип сетевого устройства. ===== ====================================================================== @@ -4570,7 +4570,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = тип устройства ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_DEVICE_TYPE (0) ====================================================================== ==== Функция 74, подфункция 1, Получить имя сетевого устройства. ===== @@ -4585,7 +4585,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * В случае успеха в буфер записывается имя сетевого устройства ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_DEVICE_NAME (1) ====================================================================== ======= Функция 74, подфункция 2, Сброс сетевого устройства. ========= @@ -4598,7 +4598,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RESET_DEVICE (2) ====================================================================== ====== Функция 74, подфункция 3, Остановить сетевое устройство. ====== @@ -4611,7 +4611,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_STOP_DEVICE (3) ====================================================================== ===== Функция 74, подфункция 4, Получить указатель на устройство ===== @@ -4624,7 +4624,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = указатель, -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_DEVICE_POINTER (4) ====================================================================== === Функция 74, подфункция 6, Получить количество посланых пакетов === @@ -4637,7 +4637,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = количество с момента старта устройства, -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_COUNT (6) ====================================================================== === Функция 74, подфункция 7, Получить количество принятых пакетов === @@ -4650,7 +4650,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = количество с момента старта устройства, -1 для ошибки ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_COUNT (7) ====================================================================== ==== Функция 74, подфункция 8, Получить количество посланых байт. ==== @@ -4664,7 +4664,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * ebx = старшая часть ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_BYTE_COUNT (8) ====================================================================== ==== Функция 74, подфункция 9, Получить количество принятых байт. ==== @@ -4678,7 +4678,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * ebx = старшая часть ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_BYTE_COUNT (9) ====================================================================== ======= Функция 74, подфункция 10, Получить статус соединения. ======= @@ -4699,7 +4699,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); 10b = флаг полного дуплекса ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_LINK_STATUS (10) ====================================================================== == Функция 74.11, Получить количество пакетов переданных с ошибкой. == @@ -4713,7 +4713,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); устройства, -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_ERROR_COUNT (11) ====================================================================== === Функция 74.12, Получить число пакетов отброшенных при отправке. == @@ -4727,7 +4727,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_DROP_COUNT (12) ====================================================================== === Функция 74.13, Получить число пакетов утерянных при отправке. ==== @@ -4741,7 +4741,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_MISS_COUNT (13) ====================================================================== @@ -4756,7 +4756,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); устройства, -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_ERROR_COUNT (14) ====================================================================== @@ -4771,7 +4771,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_DROP_COUNT (15) ====================================================================== === Функция 74.16, Получить число пакетов утерянных при получении. === @@ -4785,7 +4785,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); -1 при ошибке ---------------------- Константы для регистров: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_MISS_COUNT (16) ====================================================================== ============== Функция 75, подфункция 0, Открыть сокет. ============== diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 280732315..ccbd328b4 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -3678,9 +3678,9 @@ Returned value: Remarks: * The driver entry is called with DRV_EXIT before unloading. ----------------------- Constants for registers: ---------------------- - eax - SF_SYS_MISC (68) - ebx - SSF_UNLOAD_DRIVER (30) +---------------------- Constants for registers: ---------------------- + eax - SF_SYS_MISC (68) + ebx - SSF_UNLOAD_DRIVER (30) ====================================================================== =========== Function 68, subfunction 31 - get driver data. =========== @@ -4504,17 +4504,17 @@ Returned value: ---------------------- Constants for registers: ---------------------- 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: * eax = 74 - function number - * bl = 255 - subfunction number + * bl = -1 (255) - subfunction number Returned value: * eax = number of active network devices ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) - bl - SSF_DEVICE_COUNT (255) + eax - SF_NETWORK_GET (74) + bl - SSF_DEVICE_COUNT (-1 / 255) ====================================================================== ======== Function 74, Subfunction 0, Get network device type. ======== ====================================================================== @@ -4526,7 +4526,7 @@ Returned value: * eax = device type number, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_DEVICE_TYPE (0) ====================================================================== ======== Function 74, Subfunction 1, Get network device name. ======== @@ -4541,7 +4541,7 @@ Returned value: * The network device name is written into the buffer, on success ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_DEVICE_NAME (1) ====================================================================== ========= Function 74, Subfunction 2, Reset network device. ========== @@ -4554,7 +4554,7 @@ Returned value: * eax = -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RESET_DEVICE (2) ====================================================================== ========== Function 74, Subfunction 3, Stop network device. ========== @@ -4567,7 +4567,7 @@ Returned value: * eax = -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_STOP_DEVICE (3) ====================================================================== =========== Function 74, Subfunction 4, Get device pointer. ========== @@ -4580,7 +4580,7 @@ Returned value: * eax = device pointer, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_DEVICE_POINTER (4) ====================================================================== ========= Function 74, Subfunction 6, Get packet TX counter. ========= @@ -4593,7 +4593,7 @@ Returned value: * eax = Number of packets sent since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_COUNT (6) ====================================================================== ========= Function 74, Subfunction 7, Get packet RX counter. ========= @@ -4606,7 +4606,7 @@ Returned value: * eax = Number of packets received since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_COUNT (7) ====================================================================== ========== Function 74, Subfunction 8, Get TX byte counter. ========== @@ -4621,7 +4621,7 @@ Returned value: * ebx = Number of bytes sent since device start (higher dword) ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_BYTE_COUNT (8) ====================================================================== ========== Function 74, Subfunction 9, Get RX byte counter. ========== @@ -4636,7 +4636,7 @@ Returned value: * ebx = Number of bytes received since device start (higher dword) ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_BYTE_COUNT (9) ====================================================================== ========== Function 74, Subfunction 10, Get link status. ============= @@ -4657,7 +4657,7 @@ Returned value: ETH_LINK_1G = 1100b ; gigabit ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_LINK_STATUS (10) ====================================================================== ==== Function 74, Subfunction 11, Get TX error packets counter. ====== @@ -4670,7 +4670,7 @@ Returned value: * eax = Number of erroneous packets transmitted since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_ERROR_COUNT (11) ====================================================================== === Function 74, Subfunction 12, Get TX dropped packets counter. ===== @@ -4683,7 +4683,7 @@ Returned value: * eax = Number of dropped packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_DROP_COUNT (12) ====================================================================== ==== Function 74, Subfunction 13, Get TX missed packets counter. ===== @@ -4696,7 +4696,7 @@ Returned value: * eax = Number of missed packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_TX_PACKET_MISS_COUNT (13) ====================================================================== ==== Function 74, Subfunction 14, Get RX error packets counter. ====== @@ -4709,7 +4709,7 @@ Returned value: * eax = Number of erroneous packets received since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_ERROR_COUNT (14) ====================================================================== === Function 74, Subfunction 15, Get RX dropped packets counter. ===== @@ -4722,7 +4722,7 @@ Returned value: * eax = Number of dropped packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_DROP_COUNT (15) ====================================================================== ==== Function 74, Subfunction 16, Get RX missed packets counter. ===== @@ -4735,7 +4735,7 @@ Returned value: * eax = Number of missed packets since device start, -1 on error ---------------------- Constants for registers: ---------------------- - eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) + eax - SF_NETWORK_GET (74) bl - SSF_RX_PACKET_MISS_COUNT (16) ====================================================================== ============== Function 75, Subfunction 0, Open socket. ============== @@ -5340,9 +5340,9 @@ Returned value: Remarks: * Only pipe descriptors are supported. ----------------------- Constants for registers: ---------------------- - eax - SF_FUTEX (77) - ebx - SSF_PIPE_READ (10) +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - SSF_PIPE_READ (10) ====================================================================== =========== Function 77, Subfunction 11, Write to pipe. ============= ====================================================================== @@ -5357,9 +5357,9 @@ Returned value: Remarks: * Only pipe descriptors are supported. ----------------------- Constants for registers: ---------------------- - eax - SF_FUTEX (77) - ebx - SSF_PIPE_WRITE (11) +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - SSF_PIPE_WRITE (11) ====================================================================== ========== Function 77, Subfunction 13, Create pipe. ================ ====================================================================== @@ -5375,9 +5375,9 @@ Remarks: * On success, pipefd[0] is a read descriptor and pipefd[1] is a write descriptor. ----------------------- Constants for registers: ---------------------- - eax - SF_FUTEX (77) - ebx - SSF_PIPE_CREATE (13) +---------------------- Constants for registers: ---------------------- + eax - SF_FUTEX (77) + ebx - SSF_PIPE_CREATE (13) ====================================================================== === Function 80 - file system interface with parameter of encoding === ====================================================================== diff --git a/programs/KOSfuncs.inc b/programs/KOSfuncs.inc index 00e874e69..e33af8e55 100644 --- a/programs/KOSfuncs.inc +++ b/programs/KOSfuncs.inc @@ -231,8 +231,7 @@ SF_FILE=70 SF_SET_CAPTION=71 SF_SEND_MESSAGE=72 SF_BLITTER=73 -SF_NETWORK_DEVICE=74 -SF_NETWORK_GET=74 ; alias +SF_NETWORK_GET=74 SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_TYPE=0 SSF_DEVICE_NAME=1 diff --git a/programs/develop/koldbg/kosfuncs.inc b/programs/develop/koldbg/kosfuncs.inc index 978eb613f..e33af8e55 100644 --- a/programs/develop/koldbg/kosfuncs.inc +++ b/programs/develop/koldbg/kosfuncs.inc @@ -201,11 +201,11 @@ SF_SYS_MISC=68 SSF_MEM_CLOSE=23 SSF_SET_EXCEPTION_HANDLER=24 SSF_SET_EXCEPTION_STATE=25 - SSF_MEM_FREE_EXT=26 - SSF_LOAD_FILE=27 - SSF_MEM_ALLOC_RING=29 - SSF_UNLOAD_DRIVER=30 - SSF_GET_DRIVER_DATA=31 + SSF_MEM_FREE_EXT=26 + SSF_LOAD_FILE=27 + SSF_MEM_ALLOC_RING=29 + SSF_UNLOAD_DRIVER=30 + SSF_GET_DRIVER_DATA=31 SF_DEBUG=69 SSF_SET_MESSAGE_AREA=0 SSF_GET_REGISTERS=1 @@ -231,8 +231,7 @@ SF_FILE=70 SF_SET_CAPTION=71 SF_SEND_MESSAGE=72 SF_BLITTER=73 -SF_NETWORK_DEVICE=74 -SF_NETWORK_GET=74 ; alias +SF_NETWORK_GET=74 SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_TYPE=0 SSF_DEVICE_NAME=1 @@ -290,14 +289,14 @@ SF_NETWORK_PROTOCOL=76 SSF_ARP_DEL_ENTRY=50005h SSF_ARP_SEND_ANNOUNCE=50006h SSF_ARP_CONFLICTS_COUNT=50007h -SF_FUTEX=77 - SSF_CREATE=0 - SSF_DESTROY=1 - SSF_WAIT=2 - SSF_WAKE=3 - SSF_PIPE_READ=10 - SSF_PIPE_WRITE=11 - SSF_PIPE_CREATE=13 +SF_FUTEX=77 + SSF_CREATE=0 + SSF_DESTROY=1 + SSF_WAIT=2 + SSF_WAKE=3 + SSF_PIPE_READ=10 + SSF_PIPE_WRITE=11 + SSF_PIPE_CREATE=13 ; File system errors: FSERR_SUCCESS=0 -- 2.49.1 From 0152013f1192b4815aa5772cb64e8be7c4181307 Mon Sep 17 00:00:00 2001 From: Burer Date: Sun, 11 Jan 2026 16:32:59 +0200 Subject: [PATCH 5/9] Clarify SC structure size on docs --- kernel/trunk/docs/sysfuncr.txt | 2 +- kernel/trunk/docs/sysfuncs.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 4c67a6d48..9fcd399a8 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -2196,7 +2196,7 @@ path db 'HD0/1',0 * ecx = указатель на буфер размером edx байт, куда будет записана таблица * edx = размер таблицы цветов - (должен быть 40 байт для будущей совместимости) + (до 192 байт; 40 байт для базовой структуры) Возвращаемое значение: * функция не возвращает значения Формат таблицы цветов: каждый элемент - diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index ccbd328b4..6608a6d42 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -2152,7 +2152,7 @@ Parameters: * ebx = 2 - subfunction number * ecx = pointer to 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. Returned value: * function does not return value @@ -2179,7 +2179,7 @@ Parameters: * ecx = pointer to the buffer with size edx bytes, where table will be written * edx = size of color table - (must be 40 bytes for future compatibility) + (up to 192 bytes; 40 bytes for the base structure) Returned value: * function does not return value Format of the color table: -- 2.49.1 From 2f8a3c83b9144821411f2362d62322f92427d66a Mon Sep 17 00:00:00 2001 From: Burer Date: Tue, 27 Jan 2026 20:37:35 +0200 Subject: [PATCH 6/9] More fixed to documentation and kosfuncs.inc --- kernel/trunk/docs/sysfuncr.txt | 56 ++++++++++++++++--------------- kernel/trunk/docs/sysfuncs.txt | 61 ++++++++++++++++++---------------- programs/KOSfuncs.inc | 16 ++++----- 3 files changed, 69 insertions(+), 64 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index 9fcd399a8..d5d3fb240 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -2507,7 +2507,7 @@ dword-значение цвета 0x00RRGGBB * иначе eax = TID - идентификатор потока ---------------------- Константы для регистров: ---------------------- - eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (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) @@ -3404,7 +3404,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_LOAD_DRIVER (16) / SSF_GET_SERVICE (16) + ebx - SSF_LOAD_DRIVER (16) ====================================================================== ========== Функция 68, подфункция 17 - управление драйвером. ========= @@ -3429,7 +3429,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_CONTROL_DRIVER (17) / SSF_CALL_SERVICE (17) + ebx - SSF_CONTROL_DRIVER (17) ====================================================================== == Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. == @@ -4552,13 +4552,13 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ====================================================================== Параметры: * eax = 74 - номер функции - * bl = -1 (или 255) - номер подфункции + * bl = -1 - номер подфункции Возвращаемое значение: * eax = количество активных сетевых устройств ---------------------- Константы для регистров: ---------------------- eax - SF_NETWORK_GET (74) - bl - SSF_DEVICE_COUNT (-1 / 255) + bl - SSF_DEVICE_COUNT (-1) ====================================================================== ==== Функция 74, подфункция 0, Получить тип сетевого устройства. ===== ====================================================================== @@ -4977,7 +4977,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ---------------------- Константы для регистров: ---------------------- eax - SF_NETWORK_SOCKET (75) - bl - SSF_GET_PAIR (10) / SSF_SOCKET_PAIR (10) + bl - SSF_GET_PAIR (10) ====================================================================== =============== Функция 76, Сетевые опции и статистика. ============== ====================================================================== @@ -5054,9 +5054,9 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 0 - номер подфункции - * ecx = указатель на контрольное значение фьютекса (dword) + * ecx = указатель на контрольное значение фьютекса Возвращаемое значение: - * eax = дескриптор фьютекса, 0 при ошибке + * eax = указатель на дескриптор фьютекса, 0 при ошибке ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) @@ -5067,7 +5067,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 1 - номер подфункции - * ecx = дескриптор фьютекса + * ecx = указатель на дескриптор фьютекса Возвращаемое значение: * eax = 0 - успешно, -1 при ошибке Замечания: @@ -5082,13 +5082,13 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 2 - номер подфункции - * ecx = дескриптор фьютекса - * edx = контрольное значение + * ecx = указатель на дескриптор фьютекса + * edx = указатель на контрольное значение фьютекса * esi = таймаут в сотых секунды, 0 - ждать бесконечно Возвращаемое значение: * eax = 0 - успешно, -1 - таймаут, - -2 - контрольное значение не соответствует + -2 - контрольное значение фьютекса не соответствует ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) @@ -5099,7 +5099,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 3 - номер подфункции - * ecx = дескриптор фьютекса + * ecx = указатель на дескриптор фьютекса * edx = сколько ожидающих будить (максимум) Возвращаемое значение: * eax = количество разбуженых @@ -5110,25 +5110,26 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); ====================================================================== Замечания: * Подфункции 4-7 зарезервированы и сейчас возвращают -1. - * Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF. + * Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF (-9). ====================================================================== -======= Функция 77, подфункция 10, Прочитать из pipe. ======= +======= Функция 77, подфункция 10, Прочитать из файла. ======= ====================================================================== Параметры: * eax = 77 - номер функции * ebx = 10 - номер подфункции - * ecx = дескриптор pipe + * ecx = указатель на файловый дескриптор * edx = указатель на буфер, куда читать * esi = сколько байт прочитать Возвращаемое значение: - * eax = количество прочитанных байт, 0 при EOF, - или -EBADF при ошибке + * eax = количество прочитанных байт + 0 при EOF + -EBADF (-9) при ошибке Замечания: * Поддерживаются только pipe-дескрипторы. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - SSF_PIPE_READ (10) + ebx - SSF_FILE_READ (10) ====================================================================== ======== Функция 77, подфункция 11, Записать из буфера в файл. ======= @@ -5136,17 +5137,19 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 11 - номер подфункции - * ecx = дескриптор файла + * ecx = указатель на файловый дескриптор * edx = указатель на буфер, откуда брать данные для записи * esi = сколько байт записать Возвращаемое значение: * eax = количество записанных байт - -EBADF при ошибке - -EPIPE если нет читателей + -EBADF (-9) при ошибке + -EPIPE (-32) если нет читателей +Замечания: + * Поддерживаются только pipe-дескрипторы. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) - ebx - SSF_PIPE_WRITE (11) + ebx - SSF_FILE_WRITE (11) ====================================================================== =========== Функция 77, подфункция 13, Создать новый pipe. =========== @@ -5160,10 +5163,11 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * ebx = 13 - номер подфункции * ecx = адрес pipefd * edx = флаги. Разрешен только O_CLOEXEC (0x40000). - Любые другие биты приводят к -EINVAL. + Любые другие биты приводят к -EINVAL (-11). Возвращаемое значение: - * eax = 0 если успех, иначе отрицательный код ошибки: - -EFAULT, -EINVAL, -EMFILE, -ENFILE. + * eax = 0 если успех, + иначе отрицательный код ошибки: + -EINVAL (-11), -EFAULT (-14), -ENFILE (-23), -EMFILE (-24) Примечания: * В случае успеха pipefd[0] является дескриптором чтения, а pipefd[1] — дескриптором записи. diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 6608a6d42..188d7c4b5 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -2492,7 +2492,7 @@ Returned value: * otherwise eax = TID - thread identifier ---------------------- Constants for registers: ---------------------- - eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (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) ====================================================================== @@ -3334,7 +3334,7 @@ Remarks: ebx - SSF_MEM_FREE (13) ====================================================================== ===================== Function 68, subfunction 14 ==================== -==== Wait for a signal from other applications/drivers. ============== +======= Wait for a signal from other applications/drivers. =========== ====================================================================== Parameters: * eax = 68 - function number @@ -3371,7 +3371,7 @@ Remarks: ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) + ebx - SSF_LOAD_DRIVER (16) ====================================================================== ========== Function 68, subfunction 17 - control driver. ============= ====================================================================== @@ -3394,7 +3394,7 @@ Remarks: ---------------------- Constants for registers: ---------------------- eax - SF_SYS_MISC (68) - ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17) + ebx - SSF_CONTROL_DRIVER (17) ====================================================================== == Function 68, subfunction 18 - load DLL, specifying the encoding. == ====================================================================== @@ -4508,13 +4508,13 @@ Returned value: ====================================================================== Parameters: * eax = 74 - function number - * bl = -1 (255) - subfunction number + * bl = -1 - subfunction number Returned value: * eax = number of active network devices ---------------------- Constants for registers: ---------------------- eax - SF_NETWORK_GET (74) - bl - SSF_DEVICE_COUNT (-1 / 255) + bl - SSF_DEVICE_COUNT (-1) ====================================================================== ======== Function 74, Subfunction 0, Get network device type. ======== ====================================================================== @@ -4929,7 +4929,7 @@ Returned value: ---------------------- Constants for registers: ---------------------- eax - SF_NETWORK_SOCKET (75) - bl - SSF_GET_PAIR (10) / SSF_SOCKET_PAIR (10) + bl - SSF_GET_PAIR (10) ====================================================================== ============ Function 76, Network options and statistics. ============ ====================================================================== @@ -5268,9 +5268,9 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 0 - subfunction number - * ecx = pointer to futex dword + * ecx = pointer to futex control value Returned value: - * eax = futex handle, 0 on error + * eax = pointer to futex handle, 0 on error ---------------------- Constants for registers: ---------------------- eax - SF_FUTEX (77) @@ -5281,7 +5281,7 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 1 - subfunction number - * ecx = futex handle + * ecx = pointer to futex handle Returned value: * eax = 0 - successfull, -1 on error Remarks: @@ -5297,13 +5297,13 @@ Remarks: Parameters: * eax = 77 - function number * ebx = 2 - subfunction number - * ecx = futex handle - * edx = control value + * ecx = pointer to futex handle + * edx = pointer to futex control value * esi = timeout in hundredths of a second, 0 - wait forever Returned value: * eax = 0 - successfull -1 - timeout - -2 - futex dword does not have the same value as edx + -2 - futex control value doesn't match ---------------------- Constants for registers: ---------------------- eax - SF_FUTEX (77) @@ -5314,7 +5314,7 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 3 - subfunction number - * ecx = futex handle + * ecx = pointer to futex handle * edx = number of waiters to wake Returned value: * eax = number of waiters that were woken up @@ -5325,55 +5325,60 @@ Returned value: ====================================================================== Remarks: * Subfunctions 4-7 are reserved and currently return -1. - * Subfunctions 8-9 and 12 are not implemented and return -EBADF. + * Subfunctions 8-9 and 12 are not implemented and return -EBADF (-9). ====================================================================== -=========== Function 77, Subfunction 10, Read from pipe. ============ +=========== Function 77, Subfunction 10, Read from file. ============ ====================================================================== Parameters: * eax = 77 - function number * ebx = 10 - subfunction number - * ecx = pipe descriptor + * ecx = pointer to pipe handle * edx = pointer to destination buffer * esi = number of bytes to read Returned value: - * eax = number of bytes read, 0 on EOF, or -EBADF on error + * 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_PIPE_READ (10) + ebx - SSF_FILE_READ (10) ====================================================================== -=========== Function 77, Subfunction 11, Write to pipe. ============= +=========== Function 77, Subfunction 11, Write to file. ============= ====================================================================== Parameters: * eax = 77 - function number * ebx = 11 - subfunction number - * ecx = pipe descriptor + * ecx = pointer to file handle * edx = pointer to source buffer * esi = number of bytes to write Returned value: - * eax = number of bytes written, -EBADF on error, -EPIPE if no readers + * 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_PIPE_WRITE (11) + 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 descriptors) + * ecx = pointer to pipefd[2] array (two dword handles) * edx = flags (only O_CLOEXEC is allowed) Returned value: - * eax = 0 on success, or negative errno value on error: - -EFAULT, -EINVAL, -EMFILE, -ENFILE + * 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 descriptor and pipefd[1] is a - write descriptor. + * On success, pipefd[0] is a read handle and pipefd[1] is a + write handle. ---------------------- Constants for registers: ---------------------- eax - SF_FUTEX (77) diff --git a/programs/KOSfuncs.inc b/programs/KOSfuncs.inc index e33af8e55..5f2d6d3a7 100644 --- a/programs/KOSfuncs.inc +++ b/programs/KOSfuncs.inc @@ -132,7 +132,6 @@ SF_STYLE_SETTINGS=48 SF_APM=49 SF_SET_WINDOW_SHAPE=50 SF_CREATE_THREAD=51 -SF_THREAD_CONTROL=51 SSF_CREATE_THREAD=1 SSF_GET_CURR_THREAD_SLOT=2 SSF_GET_THREAD_PRIORITY=3 @@ -189,11 +188,9 @@ SF_SYS_MISC=68 SSF_HEAP_INIT=11 SSF_MEM_ALLOC=12 SSF_MEM_FREE=13 - SSF_WAIT_SIGNAL=14 ; GetEvent wrapper (wait for kernel event) - SSF_GET_SERVICE=16 - SSF_CALL_SERVICE=17 - SSF_LOAD_DRIVER=16 ; alias (deprecated name) - SSF_CONTROL_DRIVER=17 ; alias (deprecated name) + SSF_WAIT_SIGNAL=14 ; wait for a signal from other process + SSF_LOAD_DRIVER=16 + SSF_CONTROL_DRIVER=17 SSF_LOAD_DLL=19 SSF_MEM_REALLOC=20 SSF_LOAD_DRIVER_PE=21 @@ -260,8 +257,7 @@ SF_NETWORK_SOCKET=75 SSF_RECEIVE=7 SSF_SET_OPTIONS=8 SSF_GET_OPTIONS=9 - SSF_SOCKET_PAIR=10 - SSF_GET_PAIR=10 ; alias + SSF_GET_PAIR=10 SF_NETWORK_PROTOCOL=76 SSF_ETHERNET_READ_MAC=0 SSF_IP4_PACKETS_SENT=10000h @@ -294,8 +290,8 @@ SF_FUTEX=77 SSF_DESTROY=1 SSF_WAIT=2 SSF_WAKE=3 - SSF_PIPE_READ=10 - SSF_PIPE_WRITE=11 + SSF_FILE_READ=10 + SSF_FILE_WRITE=11 SSF_PIPE_CREATE=13 ; File system errors: -- 2.49.1 From 5b9975e2f9a233520ddb90e6fbd8d0ff10d0c2a6 Mon Sep 17 00:00:00 2001 From: Burer Date: Wed, 28 Jan 2026 10:07:02 +0200 Subject: [PATCH 7/9] More fixes to docs, revert all changes in koldbg kosfuncs.ini --- kernel/trunk/docs/sysfuncr.txt | 16 +++++++------- kernel/trunk/docs/sysfuncs.txt | 16 +++++++------- programs/develop/koldbg/kosfuncs.inc | 32 ++++++++-------------------- 3 files changed, 25 insertions(+), 39 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index d5d3fb240..abf83ec75 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -5054,9 +5054,9 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 0 - номер подфункции - * ecx = указатель на контрольное значение фьютекса + * ecx = указатель на контрольное значение фьютекса (dword) Возвращаемое значение: - * eax = указатель на дескриптор фьютекса, 0 при ошибке + * eax = дескриптор фьютекса, 0 при ошибке ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) @@ -5067,7 +5067,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 1 - номер подфункции - * ecx = указатель на дескриптор фьютекса + * ecx = дескриптор фьютекса Возвращаемое значение: * eax = 0 - успешно, -1 при ошибке Замечания: @@ -5082,8 +5082,8 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 2 - номер подфункции - * ecx = указатель на дескриптор фьютекса - * edx = указатель на контрольное значение фьютекса + * ecx = дескриптор фьютекса + * edx = указатель на контрольное значение фьютекса (dword) * esi = таймаут в сотых секунды, 0 - ждать бесконечно Возвращаемое значение: * eax = 0 - успешно, @@ -5099,7 +5099,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 3 - номер подфункции - * ecx = указатель на дескриптор фьютекса + * ecx = дескриптор фьютекса * edx = сколько ожидающих будить (максимум) Возвращаемое значение: * eax = количество разбуженых @@ -5117,7 +5117,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 10 - номер подфункции - * ecx = указатель на файловый дескриптор + * ecx = дескриптор файла * edx = указатель на буфер, куда читать * esi = сколько байт прочитать Возвращаемое значение: @@ -5137,7 +5137,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 11 - номер подфункции - * ecx = указатель на файловый дескриптор + * ecx = дескриптор файла * edx = указатель на буфер, откуда брать данные для записи * esi = сколько байт записать Возвращаемое значение: diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 188d7c4b5..396c5aeec 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -5268,9 +5268,9 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 0 - subfunction number - * ecx = pointer to futex control value + * ecx = pointer to futex control value (dwort) Returned value: - * eax = pointer to futex handle, 0 on error + * eax = futex handle, 0 on error ---------------------- Constants for registers: ---------------------- eax - SF_FUTEX (77) @@ -5281,7 +5281,7 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 1 - subfunction number - * ecx = pointer to futex handle + * ecx = futex handle Returned value: * eax = 0 - successfull, -1 on error Remarks: @@ -5297,8 +5297,8 @@ Remarks: Parameters: * eax = 77 - function number * ebx = 2 - subfunction number - * ecx = pointer to futex handle - * edx = pointer to futex control value + * ecx = futex handle + * edx = pointer to futex control value (dword) * esi = timeout in hundredths of a second, 0 - wait forever Returned value: * eax = 0 - successfull @@ -5314,7 +5314,7 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 3 - subfunction number - * ecx = pointer to futex handle + * ecx = futex handle * edx = number of waiters to wake Returned value: * eax = number of waiters that were woken up @@ -5332,7 +5332,7 @@ Remarks: Parameters: * eax = 77 - function number * ebx = 10 - subfunction number - * ecx = pointer to pipe handle + * ecx = file handle * edx = pointer to destination buffer * esi = number of bytes to read Returned value: @@ -5351,7 +5351,7 @@ Remarks: Parameters: * eax = 77 - function number * ebx = 11 - subfunction number - * ecx = pointer to file handle + * ecx = file handle * edx = pointer to source buffer * esi = number of bytes to write Returned value: diff --git a/programs/develop/koldbg/kosfuncs.inc b/programs/develop/koldbg/kosfuncs.inc index e33af8e55..4c484ae25 100644 --- a/programs/develop/koldbg/kosfuncs.inc +++ b/programs/develop/koldbg/kosfuncs.inc @@ -70,11 +70,11 @@ SF_SYSTEM=18 SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows SSSF_GET_WB=1 SSSF_SET_WB=2 -SF_MIDI=20 ; deprecated/undefined in current kernel - SSF_RESET=1 ; deprecated - SSF_OUTPUT=2 ; deprecated +SF_MIDI=20 + SSF_RESET=1 + SSF_OUTPUT=2 SF_SYSTEM_SET=21 - SSF_MPU_MIDI_BASE=1 ; not used (reserved) + SSF_MPU_MIDI_BASE=1 SSF_KEYBOARD_LAYOUT=2 SSF_SYS_LANG=5 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_MODE_BG=4 SF_SET_EVENTS_MASK=40 ; turn on/off desired events -SF_PORT_IN_OUT=43 ; deprecated/undefined in current kernel +SF_PORT_IN_OUT=43 ; input/output to a port SF_SET_PORTS=46 ; reserve/free a group of input/output ports SF_DRAW_NUMBER=47 ; draw number to the window SF_STYLE_SETTINGS=48 @@ -132,11 +132,6 @@ SF_STYLE_SETTINGS=48 SF_APM=49 SF_SET_WINDOW_SHAPE=50 SF_CREATE_THREAD=51 -SF_THREAD_CONTROL=51 - SSF_CREATE_THREAD=1 - SSF_GET_CURR_THREAD_SLOT=2 - SSF_GET_THREAD_PRIORITY=3 - SSF_SET_THREAD_PRIORITY=4 SF_CLIPBOARD=54 SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard SSF_READ_CB=1 @@ -189,11 +184,9 @@ SF_SYS_MISC=68 SSF_HEAP_INIT=11 SSF_MEM_ALLOC=12 SSF_MEM_FREE=13 - SSF_WAIT_SIGNAL=14 ; GetEvent wrapper (wait for kernel event) - SSF_GET_SERVICE=16 - SSF_CALL_SERVICE=17 - SSF_LOAD_DRIVER=16 ; alias (deprecated name) - SSF_CONTROL_DRIVER=17 ; alias (deprecated name) + SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver + SSF_LOAD_DRIVER=16 + SSF_CONTROL_DRIVER=17 SSF_LOAD_DLL=19 SSF_MEM_REALLOC=20 SSF_LOAD_DRIVER_PE=21 @@ -203,9 +196,6 @@ SF_SYS_MISC=68 SSF_SET_EXCEPTION_STATE=25 SSF_MEM_FREE_EXT=26 SSF_LOAD_FILE=27 - SSF_MEM_ALLOC_RING=29 - SSF_UNLOAD_DRIVER=30 - SSF_GET_DRIVER_DATA=31 SF_DEBUG=69 SSF_SET_MESSAGE_AREA=0 SSF_GET_REGISTERS=1 @@ -231,7 +221,7 @@ SF_FILE=70 SF_SET_CAPTION=71 SF_SEND_MESSAGE=72 SF_BLITTER=73 -SF_NETWORK_GET=74 +SF_NETWORK_DEVICE=74 SSF_DEVICE_COUNT=255 ; get number of active network devices SSF_DEVICE_TYPE=0 SSF_DEVICE_NAME=1 @@ -261,7 +251,6 @@ SF_NETWORK_SOCKET=75 SSF_SET_OPTIONS=8 SSF_GET_OPTIONS=9 SSF_SOCKET_PAIR=10 - SSF_GET_PAIR=10 ; alias SF_NETWORK_PROTOCOL=76 SSF_ETHERNET_READ_MAC=0 SSF_IP4_PACKETS_SENT=10000h @@ -294,9 +283,6 @@ SF_FUTEX=77 SSF_DESTROY=1 SSF_WAIT=2 SSF_WAKE=3 - SSF_PIPE_READ=10 - SSF_PIPE_WRITE=11 - SSF_PIPE_CREATE=13 ; File system errors: FSERR_SUCCESS=0 -- 2.49.1 From 3b8f9b67db38bc400fd2e50725f7a46c73f4bd99 Mon Sep 17 00:00:00 2001 From: Burer Date: Wed, 28 Jan 2026 14:55:09 +0200 Subject: [PATCH 8/9] More fixes to docs, part 2 --- kernel/trunk/docs/sysfuncr.txt | 6 +++--- kernel/trunk/docs/sysfuncs.txt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index abf83ec75..beecc0c44 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -5054,7 +5054,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); Параметры: * eax = 77 - номер функции * ebx = 0 - номер подфункции - * ecx = указатель на контрольное значение фьютекса (dword) + * ecx = контрольное значение фьютекса (dword) Возвращаемое значение: * eax = дескриптор фьютекса, 0 при ошибке @@ -5083,7 +5083,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * eax = 77 - номер функции * ebx = 2 - номер подфункции * ecx = дескриптор фьютекса - * edx = указатель на контрольное значение фьютекса (dword) + * edx = контрольное значение фьютекса (dword) * esi = таймаут в сотых секунды, 0 - ждать бесконечно Возвращаемое значение: * eax = 0 - успешно, @@ -5112,7 +5112,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * Подфункции 4-7 зарезервированы и сейчас возвращают -1. * Подфункции 8, 9 и 12 не реализованы и возвращают -EBADF (-9). ====================================================================== -======= Функция 77, подфункция 10, Прочитать из файла. ======= +=========== Функция 77, подфункция 10, Прочитать из файла. =========== ====================================================================== Параметры: * eax = 77 - номер функции diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 396c5aeec..572405127 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -5268,7 +5268,7 @@ Returned value: Parameters: * eax = 77 - function number * ebx = 0 - subfunction number - * ecx = pointer to futex control value (dwort) + * ecx = futex control value (dword) Returned value: * eax = futex handle, 0 on error @@ -5298,7 +5298,7 @@ Parameters: * eax = 77 - function number * ebx = 2 - subfunction number * ecx = futex handle - * edx = pointer to futex control value (dword) + * edx = futex control value (dword) * esi = timeout in hundredths of a second, 0 - wait forever Returned value: * eax = 0 - successfull @@ -5327,7 +5327,7 @@ 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. ============ +============ Function 77, Subfunction 10, Read from file. ============ ====================================================================== Parameters: * eax = 77 - function number -- 2.49.1 From 4f24329f153cc0a3f3c1778538de41505016fa68 Mon Sep 17 00:00:00 2001 From: Burer Date: Thu, 29 Jan 2026 13:06:48 +0200 Subject: [PATCH 9/9] Fix broken Unicode symbol --- kernel/trunk/docs/sysfuncr.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index beecc0c44..66c188672 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -5170,7 +5170,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); -EINVAL (-11), -EFAULT (-14), -ENFILE (-23), -EMFILE (-24) Примечания: * В случае успеха pipefd[0] является дескриптором чтения, а pipefd[1] - — дескриптором записи. + - дескриптором записи. ---------------------- Константы для регистров: ---------------------- eax - SF_FUTEX (77) -- 2.49.1