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: