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