system/docs: update docs and SF constants to match actual kernel #306
@@ -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: данные принятого сигнала, формат которых
|
||||
|
mxlgv marked this conversation as resolved
|
||||
определяется первым 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/<name>.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)
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
In my opinion, services can be confused with daemons. The old name reflects the essence more. In my opinion, services can be confused with daemons. The old name reflects the essence more.
|
||||
|
||||
======================================================================
|
||||
========== Функция 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)
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
The same: https://git.kolibrios.org/KolibriOS/kolibrios/pulls/306/files#issuecomment-3987
|
||||
|
||||
======================================================================
|
||||
== Функция 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 = дескриптор фьютекса
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
Please roll back. See message above Please roll back. See message above
|
||||
* edx = контрольное значение
|
||||
* esi = таймаут в тиках системного таймера, 0 - ждать бесконечно
|
||||
* esi = таймаут в сотых секунды, 0 - ждать бесконечно
|
||||
Возвращаемое значение:
|
||||
* eax = 0 - успешно, -1 - таймаут,
|
||||
-2 - контрольное значение не соответствует
|
||||
* eax = 0 - успешно,
|
||||
-1 - таймаут,
|
||||
-2 - контрольное значение не соответствует
|
||||
|
||||
---------------------- Константы для регистров: ----------------------
|
||||
eax - SF_FUTEX (77)
|
||||
|
mxlgv marked this conversation as resolved
mxlgv
commented
Since in function 77 it is now better to replace not only futexes with Since in function 77 it is now better to replace not only futexes with `SF_POSIX`. And add prefixes for subfunctions like `SF_FUTEX_CREATE`, etc.
Burer
commented
As these constants are used in some programs, that should be changed in a separate PR. As these constants are used in some programs, that should be changed in a separate PR.
mxlgv
commented
Will be fixed as part of this task: #321 Will be fixed as part of this task: https://git.kolibrios.org/KolibriOS/kolibrios/issues/321
|
||||
@@ -5118,24 +5129,25 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
---------------------- Константы для регистров: ----------------------
|
||||
eax - SF_FUTEX (77)
|
||||
ebx - 10
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
It is assumed that reading will be in the future on file descriptors. It is better to remove the It is assumed that reading will be in the future on file descriptors. It is better to remove the `PIPE` prefix if the constant names are not taken.
|
||||
|
||||
======================================================================
|
||||
======== Функция 77, подфункция 11, Записать в pipe. =======
|
||||
======== Функция 77, подфункция 11, Записать из буфера в файл. =======
|
||||
======================================================================
|
||||
Параметры:
|
||||
* eax = 77 - номер функции
|
||||
* ebx = 11 - номер подфункции
|
||||
* ecx = дескриптор pipe
|
||||
* ecx = дескриптор файла
|
||||
* edx = указатель на буфер, откуда брать данные для записи
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
There is no mistake here. Reverse this change There is no mistake here. Reverse this change
|
||||
* esi = сколько байт записать
|
||||
Возвращаемое значение:
|
||||
* eax = количество записанных байт, -EBADF при ошибке,
|
||||
* eax = количество записанных байт
|
||||
-EBADF при ошибке
|
||||
|
mxlgv marked this conversation as resolved
mxlgv
commented
Are these constants documented somewhere? Are these constants documented somewhere?
|
||||
-EPIPE если нет читателей
|
||||
Замечания:
|
||||
* Поддерживаются только pipe-дескрипторы.
|
||||
|
||||
---------------------- Константы для регистров: ----------------------
|
||||
eax - SF_FUTEX (77)
|
||||
ebx - 11
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
Same: https://git.kolibrios.org/KolibriOS/kolibrios/pulls/306/files#issuecomment-3992
|
||||
|
||||
======================================================================
|
||||
=========== Функция 77, подфункция 13, Создать новый pipe. ===========
|
||||
======================================================================
|
||||
@@ -5156,6 +5168,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
---------------------- Константы для регистров: ----------------------
|
||||
eax - SF_FUTEX (77)
|
||||
ebx - 13
|
||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
Why is there no constant? Why is there no constant?
|
||||
|
||||
======================================================================
|
||||
========== Функция -1 - завершить выполнение потока/процесса =========
|
||||
======================================================================
|
||||
@@ -5173,6 +5186,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
||||
|
||||
---------------------- Константы для регистров: ----------------------
|
||||
eax - SF_TERMINATE_PROCESS (-1)
|
||||
|
||||
======================================================================
|
||||
=== Функция 80 - работа с файловой системой с указанием кодировки. ===
|
||||
======================================================================
|
||||
|
||||
@@ -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/<name>.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. ==
|
||||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
Seems extra = Seems extra =
|
||||||
======================================================================
|
||||||
Parameters:
|
||||||
* eax = 69 - function number
|
||||||
@@ -5274,10 +5271,6 @@ Parameters:
|
||||||
* ecx = pointer to futex dword
|
||||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
Correct: Pointer to futex dword control value. Correct: Pointer to futex dword control value.
|
||||||
Returned value:
|
||||||
* eax = futex handle, 0 on error
|
||||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
There is no mistake here. Reverse this change There is no mistake here. Reverse this change
|
||||||
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
|
||||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
There is no mistake here. Reverse this change There is no mistake here. Reverse this change
|
||||||
* edx = control value
|
||||||
|
mxlgv marked this conversation as resolved
Outdated
mxlgv
commented
There is no mistake here. Reverse this change There is no mistake here. Reverse this change
mxlgv
commented
Control value. NOT a pointer. Please note:
kolibrios/kernel/trunk/posix/futex.inc
Line 117 in 1173ca7b26
Control value. NOT a pointer. Please note: https://git.kolibrios.org/KolibriOS/kolibrios/src/commit/1173ca7b2669f3ed6f37231ef7512a52029bc126/kernel/trunk/posix/futex.inc#L117
|
||||||
* 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)
|
||||||
|
||||||
In my opinion, 20 bytes is more obvious than 5 dword
In all other similar places, dwords are used, not bytes.
So it is better for consistency.